OSDN Git Service

PR middle-end/37337
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
2
3         PR middle-end/37337
4         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
5         even when a stmt has been gimple_modified_p, but after fold_stmt is
6         not any longer.  Remove unneeded may_have_exposed_new_symbols
7         initializations.
8
9 2008-09-08  Richard Guenther  <rguenther@suse.de>
10
11         PR tree-optimization/37421
12         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
13         valueize the RHS.
14
15 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
16
17         PR middle-end/37415
18         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
19
20 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21
22         PR driver/37409
23         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
24         * pa-hpux10.h (LINK_SPEC): Likewise.
25         * pa-hpux11.h (LINK_SPEC): Likewise.
26
27 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28
29         * pa32-regs.h (IRA_COVER_CLASSES): Define.
30         * pa64-regs.h (IRA_COVER_CLASSES): Define.
31
32 2008-09-07  Helge Deller  <deller@gmx.de>
33
34         * pa/linux-atomic.c: New file.
35         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
36         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
37
38 2008-09-07  Richard Guenther  <rguenther@suse.de>
39             Ira Rosen  <irar@il.ibm.com>
40
41         PR tree-optimization/36630
42         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
43         Call STRIP_NOPS before calling evolution_part_in_loop_num.
44
45 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
46             Ira Rosen  <irar@il.ibm.com>
47
48         PR tree-optimization/35642
49         * config/rs6000/altivec.md (mulv8hi3): Implement.
50
51 2008-09-06  Jeff Law <law@redhat.com>
52
53         * h8300.h (IRA_COVER_CLASSES): Define.
54
55 2008-09-06  Jan Hubicka  <jh@suse.cz>
56
57         PR tree-optimization/14703
58         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored declarations.
59         * passes.c (init_optimization_passes): Recompute inline parameters.
60
61 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
62
63         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
64         DECL being null.
65
66 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
67             Peter Fuerst  <post@pfrst.de>
68
69         * doc/invoke.texi: Document -mr10k-cache-barrier=.
70         * doc/extend.texi: Document __builtin_mips_cache.
71         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
72         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
73         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
74         __GCC_HAVE_BUILTIN_MIPS_CACHE.
75         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
76         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
77         (set_push_mips_isas): New variable.
78         (mips_r10k_cache_barrier): New variable.
79         (cache): New availability predicate.
80         (mips_builtins): Add an entry for __builtin_mips_cache.
81         (mips_build_cvpointer_type): New function.
82         (MIPS_ATYPE_CVPOINTER): New macro.
83         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
84         mode is VOIDmode.
85         (r10k_simplified_address_p, r10k_simplify_address)
86         (r10k_uncached_address_p, r10k_safe_address_p)
87         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
88         (r10k_needs_protection_p_call, r10k_needs_protection_p)
89         (r10k_insert_cache_barriers): New functions.
90         (mips_reorg_process_insns): Delete cache barriers after a
91         branch-likely instruction.
92         (mips_reorg): Call r10k_insert_cache_barriers.
93         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
94         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
95         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
96         (mips_cache, r10k_cache_barrier): New define_insns.
97
98 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
99
100         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
101         * ira-color.c (setup_allocno_left_conflicts_num): Use
102         hard_reg_set_equal_p instead of a comparison with
103         ira_zero_hard_reg_set.
104         * ira.c (setup_reg_subclasses): Likewise.
105         (setup_cover_and_important_classes): Likewise.
106         (setup_class_translate): Likewise.
107         (setup_reg_class_intersect_union): Likewise.
108         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
109         (ira_init_once): Don't initialize them.
110
111 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
112
113         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
114
115 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
116
117         * ira-color.c (ira_fast_allocation): Permit global allocno
118         allocation.
119         
120 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
121
122         Improved branch hints, safe hints, and scheduling.
123
124         * haifa-sched.c (sched_emit_insn) : Define.
125         * sched-int.h (sched_emit_insn) : Add prototype.
126         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
127         -mhint-max-distance -msafe-hints) : Document.
128         * config/spu/spu.c (spu_flag_var_tracking): New.
129         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
130         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
131         TARGET_ASM_FILE_START): Define.
132         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
133         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
134         (spu_emit_branch_hint): Add blocks argument.
135         (insert_branch_hints, insert_nops): Remove.
136         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
137         uses_ls_unit, spu_sched_init_global, spu_sched_init,
138         spu_sched_reorder, asm_file_start): New functions.
139         (clock_var, spu_sched_length, pipe0_clock,
140         pipe1_clock, prev_clock_var, prev_priority,
141         spu_ls_first, prev_ls_clock): New static variables.
142         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
143         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
144         (nopn_nv): Add a non-volatile version of nop.
145         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
146         -mhint-max-distance, -msafe-hints): New options.
147
148 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
149             Samuel Tardieu  <sam@rfc1149.net>
150
151         * opts.c (decode_options): Combine nested if statements.
152
153         PR target/37283
154         * opts.c (decode_options): Handle more relationships among
155         unit-at-a-time, toplevel-reorder, and section-anchors.
156
157 2008-09-05  David Daney  <ddaney@avtrex.com>
158
159         * doc/install.texi (--enable-reduced-reflection): Document new option.
160
161 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
162
163         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
164         constantpool_mem_p.
165         (constantpool_operand): New.
166         (move_operand): Disallow sub-word modes for the constant pool.
167         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
168         (xtensa_secondary_reload_class): Replace with....
169         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check. 
170         Set icode for sub-word reloads from the constant pool.
171         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
172         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
173         * config/xtensa/xtensa.md (reload<mode>_literal): New.
174         * config/xtensa/xtensa-protos.h: Update prototypes.
175         
176 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
177
178         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
179         (REG_CLASS_NAMES): Update.
180         (REG_CLASS_CONTENTS): Update.
181         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
182         of ALL_REGS for regs 77 and 78.
183         * function.c (instantiate_virtual_regs_in_insn): Assert that
184         return value of simplify_gen_subreg is not NULL.
185
186 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
187
188         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
189         (gen_rtvec_v): Fix coding standards.
190
191 2008-09-04  Jan Hubicka  <jh@suse.cz>
192
193         * i386.c (decide_alg): Be more conservative about optimizing for size.
194
195 2008-09-04  Ian Lance Taylor  <iant@google.com>
196
197         * varasm.c (narrowing_initializer_constant_valid_p): New
198         static function.
199         (initializer_constant_valid_p): Call it.
200
201 2008-09-04  Jeff Law  <law@redhat.com>
202
203         * fold-const.c (native_encode_real): Fix computation of WORDS.
204         (native_interpret_real): Likewise.
205
206 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
207
208         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
209
210 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
211
212         * ira-conflicts.c (process_regs_for_copy): Check insn to check
213         that the cost is already taken into account in ira-costs.c
214
215         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
216
217         * ira-build.c (print_copy, print_copies, ira_debug_copy,
218         ira_debug_copies): New.
219         (ira_bulid): Call print_copies.
220         
221         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
222         
223 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
224
225         PR target/32783
226         * config/rs6000/rs6000.c (optimization_options): Remove check of
227         flag_toplevel_order.
228
229 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
230
231         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
232         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
233         second operand is a reg_imm10_operand.
234         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
235         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
236         (*seq_<GPR:mode><GPR2:mode>): Rename to
237         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
238         ISA_HAS_SEQ_SNE.
239         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
240         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
241         ISA_HAS_SEQ_SNE.
242         (*sne_<GPR:mode><GPR2:mode>): Rename to
243         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
244         ISA_HAS_SEQ_SNE.
245
246 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
247
248         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
249         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
250         combining an arithmetic right shift by more than 31 and a
251         trunction.  Don't match for out-of-range shift amounts.  Set
252         attribute mode to <MODE>.
253         (*lshr32_trunc<mode>): Name the pattern combining a logical right
254         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
255         (*<optab>_trunc<mode>_exts): New pattern for truncated right
256         shifts by less than 32.
257         (extv): Change predicate on first operand to accept registers.
258         Change predicate of the other operands from immediate_operand to
259         const_int_operand.  Expand exts when source is a register.
260         (extzv): Change predicate of the constant operands from
261         immediate_operand to const_int_operand.
262         (extzv<mode>): Change predicate of the constant operands from
263         immediate_operand to const_int_operand and no constraint. Also
264         remove mode.
265         (*extzv_trunc<mode>_exts): New pattern.
266
267 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
268
269         * config/mips/mips.h (ISA_HAS_CINS): New macro.
270         * config/mips/mips-protos.h (mask_low_and_shift_p,
271         mask_low_and_shift_len): Declare.
272         * config/mips/mips.c (mask_low_and_shift_p,
273         mask_low_and_shift_len): New functions.
274         (mips_print_operand): Handle new operand prefix "m".
275         * config/mips/mips.md (*cins<mode>): New pattern.
276
277 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
278
279         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
280         optimizing for size.
281
282 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
283
284         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
285         regardless of epilogue_completed.
286
287 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
288
289         PR middle-end/37359
290         * ira-lives.c (process_bb_node_lives): Check setjmp.
291
292 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
293
294         PR middle-end/37243
295         * ira-build.c (form_loop_tree): Reverse BB walk.
296         (create_bb_allocnos): Likewise.
297         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
298         (mark_reg_store): Rename to...
299         (mark_ref_live): ...this and take a df_ref argument instead of
300         note_stores arguments.  Assert that we have a register.
301         (mark_reg_clobber): Delete.
302         (def_conflicts_with_inputs_p): New function.
303         (mark_reg_conflicts): Delete.
304         (mark_reg_death): Rename to...
305         (mark_ref_dead): ...this and take a df_ref argument instead of
306         a register.  Assert that we have a register.
307         (process_bb_node_lives): Hoist frequency calculation out of
308         instruction walk.  Convert from a forwards scan to a backwards scan.
309         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
310         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
311         (create_allocno_live_ranges): Don't create regs_set.
312
313 2008-09-04  Ian Lance Taylor  <iant@google.com>
314
315         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
316         or REG_LABEL_TARGET.
317         * calls.c (emit_library_call_value_1): Use MEM_P rather than
318         comparing MODE with MEM.
319         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
320         comparing with GF_PREDICT_TAKEN.
321         (gimple_get_lhs): Change code to enum gimple_code.
322         (gimple_set_lhs): Likewise.
323         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
324         * omp-low.c (find_omp_clause): Change kind parameter to enum
325         omp_clause_code.
326         * tree-flow.h (find_omp_clause): Update declaration.
327         * regrename.c (clear_dead_regs): Change kind parameter to enum
328         reg_note.
329         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
330         GET_MODE.
331         * see.c (see_get_extension_data): Change return type to enum
332         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
333         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
334         (see_gen_normalized_extension): Change extension_code parameter to
335         enum entry_type.
336         (see_seek_pre_extension_expr): Change extension_code to enum
337         entry_type.
338         (see_merge_one_def_extension): Likewise.
339         (see_handle_relevant_defs): Likewise.
340         (see_handle_relevant_uses): Likewise.
341         (see_analyze_one_def): Likewise.
342         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
343         GIMPLE_ASM rather than ASM_EXPR.
344         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
345         GIMPLE_RETURN rather than RETURN_EXPR.
346         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
347         (evaluate_stmt): Likewise.
348         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
349         to enum vect_relevant.
350         (vect_mark_stmts_to_be_vectorized): Change assertion to not
351         compare gimple codes with tree codes.
352
353 2008-09-04  Paul Brook  <paul@codesourcery.com>
354
355         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
356
357 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
358
359         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
360         pointer check lost in the recent no-unit-at-a-time patch.
361         
362 2008-09-04  Jan Hubicka  <jh@suse.cz>
363
364         PR middle-end/37343
365         * tree-switch-conversion.c (check_final_bb): Accept only IP
366         invariants.
367
368 2008-09-04  Jan Hubicka  <jh@suse.cz>
369
370         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
371         Break out from ...
372         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
373         using_ranges argument.
374         (vrp_evaluate_conditional): Avoid bogus warning for type range.
375         (vrp_visit_cond_stmt): Update call of
376         vrp_evaluate_conditional_warnv_with_ops
377
378 2008-09-04  Jan Hubicka  <jh@suse.cz>
379
380         PR tree-optimization/37345
381         PR tree-optimization/37358
382         PR tree-optimization/37357
383         * tree.c (build_function_type_skip_args): Build distinct type copy;
384         set TYPE_CONTEXT.
385         (build_function_decl_skip_args): Set type of new decl not orig decl;
386         clear DECL_VINDEX for methods turned into functions.
387
388 2008-09-04  Nick Clifton  <nickc@redhat.com>
389
390         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler
391         check.
392         * configure: Regenerate.
393         * config.in: Regenerate.
394         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
395         alignment field, if it is supported.
396
397 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
398
399         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
400         libraries.
401
402 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
403
404         * config/rs6000/rs6000.c (processor_target_table): Do not
405         enable VMX for POWER6.
406
407 2008-09-03  Anton Blanchard  <anton@samba.org>
408
409         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
410         emit memory barrier before operation.
411
412 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
413
414         PR testsuite/37325
415         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
416         default_elf_asm_output_external.
417
418 2008-09-03  Jeff Law  <law@redhat.com>
419
420         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
421
422 2008-09-03  Richard Henderson  <rth@redhat.com>
423
424         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
425         memory barrier to below the test-and-set.
426         (alpha_split_lock_test_and_set_12): Likewise.
427
428 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
429
430         PR rtl-opt/37243
431
432         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
433         all_allocnos.
434
435         * ira-color.c (print_loop_title): Use all_allocnos.
436         (color_pass): Ditto.  Don't add border_allocnos.  Check that
437         subloop allocno in the correspdoning bitmap all_allocnos.
438
439         * ira-emit.c (change_loop): Use all_allocnos.
440
441         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
442         Ditto.
443         (ira_create_allocno): Set up all_allocnos bit for the created
444         allocno.
445         (create_cap_allocno): Remove setting mentioned_allocnos.
446         (create_insn_allocnos): Ditto.
447         (remove_unnecessary_allocnos): Use all_allocnos.
448         (check_allocno_creation): Check that allocnos are in the
449         corresponding bitmap all_allocnos.
450         
451 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
452
453         PR rtl-opt/37243
454         
455         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
456         (process_regs_for_copy): Process subregs.  Refine check when cost
457         is taken into account in ira-costs.c.
458         (process_reg_shuffles): Use REG_SUBREG_P.
459         (add_insn_allocno_copies): Ditto.  Ignore modes.
460
461         * ira-color.c (conflict_allocno_vec): New.
462         (COST_HOP_DIVISOR): New macro.
463         (update_copy_costs_1): Use it.
464         (update_conflict_hard_regno_costs): New function.
465         (assign_hard_reg): Use it.
466         (ira_color): Allocate and free conflict_allocno_vec.
467  
468 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
469
470         PR rtl-opt/37296
471
472         * ira-int.h (ira_sort_insn_chain): Remove.
473
474         * ira.c (basic_block_order_nums, chain_insn_order,
475         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
476         (ira): Don't call ira_sort_insn_chain.
477
478         * reload1.c (reload): Don't call ira_sort_insn_chain.
479
480 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
481
482         PR middle-end/37293
483         * cgraphunit.c (update_call_expr): Remove eh regions from statements
484         which become non throw.
485         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
486         update_call_expr after updating the flags on the decl.
487
488 2008-09-03  Jan Hubicka  <jh@suse.cz>
489
490         PR tree-optimization/37315
491         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
492         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
493         (cgraph_analyze_functions): Use node->analyzed
494         (cgraph_mark_functions_to_output): Likewise.
495         (cgraph_expand_function): All functions can be released after
496         expanding.
497         (cgraph_optimize): Use gimple_has_body_p.
498         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
499         (cgraph_decide_inlining_incrementally): Likewise.
500         (inline_transform): Inline transform.
501         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
502         copy fields needed.
503         (inlinable_function_p): Drop gimple_body check.
504         (expand_call_inline): Use gimple_has_body_p.
505         * gimple.c (gimple_has_body_p): New.
506         * gimple.h (gimple_has_body_p): Add prototype.
507         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
508         (dump_function_to_file): Use gimple_has_body_p check.
509
510 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
511
512         PR c++/37346
513         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
514         substatements.
515         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
516
517 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
518
519         From Michael Frysinger  <michael.frysinger@analog.com>
520         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
521         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
522         for bf538.
523
524 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
525
526         Add picoChip port.
527         * doc/extend.texi: Document picoChip builtin functions.
528         * doc/invoke.texi: Document picoChip options.
529         * doc/contrib.texi: Add picoChip contribution.
530         * doc/md.texi: Document picoChip constraints.
531         * config.gcc: Add picochip-*-*.
532         * config/picochip/: Add new port.
533
534 2008-09-03  Richard Guenther  <rguenther@suse.de>
535
536         PR tree-optimization/37328
537         * tree-sra.c (sra_build_assignment): Gimplify properly.
538         (generate_copy_inout): Take the correct stmt as definition,
539         remove bogus assert.
540
541 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
542
543         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
544         attributes.
545
546         From Michael Frysinger  <michael.frysinger@analog.com>
547         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
548
549 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
550
551         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
552         defined.
553         (__gthread_setspecific): Revert 2008-08-31 change to
554         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API
555         case.
556
557 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
558
559         * diagnostic.c (error_at): New.
560         * toplev.h (error_at): New prototype.
561         * c-typeck.c (build_array_ref): Call error_at instead of error.
562         Pass location to pedwarn.
563
564 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
565
566         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
567
568 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
569
570         * dwarf2out.c (tree_add_const_value_attribute): Only handle
571         VAR_DECL and CONST_DECL.
572
573 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
574             Jakub Jelinek  <jakub@redhat.com>
575
576         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
577         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
578         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
579         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
580         Don't set ix86_save_varrargs_registers.
581         (ix86_setup_incoming_varargs): Assume cum != NULL.
582         (ix86_va_start): Check ix86_varargs_gpr_size and
583         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
584         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
585         from frame pointer if ix86_varargs_gpr_size == 0.
586         (ix86_compute_frame_layout): Updated.
587         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
588         (ix86_varargs_gpr_size): Define.
589         (ix86_varargs_fpr_size): Likewise.
590         (machine_function): Remove save_varrargs_registers.
591         Add varargs_gpr_size and varargs_fpr_size.
592
593 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
594
595         * config/alpha/alpha.c (va_list_skip_additions,
596         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
597         (alpha_gimplify_va_arg): Call unshare_expr on second use of
598         offset_field.
599
600         PR tree-optimization/36766
601         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
602         for already removed basic blocks.
603
604         PR target/36332
605         * real.c (real_maxval): Clear a lower bit to make real_maxval
606         match get_max_float for IBM long double format.
607
608 2008-09-02  Andreas Schwab  <schwab@suse.de>
609
610         * configure.ac: Use m4_quote to quote the expansion of m4_do.
611         * configure: Regenerate.
612
613 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
614
615         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
616         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
617         checking for a non-VOID CONSTANT_P.
618
619 2008-09-02  Jan Hubicka  <jh@suse.cz>
620
621         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
622         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and sdiv_pow2_cheap
623
624 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
625
626         * expr.c (emit_group_store): Don't assert stack temp mode size.
627
628 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
629             Tobias Grosser  <grosser@fim.uni-passau.de>
630             Jan Sjodin  <jan.sjodin@amd.com>
631             Harsha Jagasia  <harsha.jagasia@amd.com>
632             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
633             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
634             Adrien Eliche  <aeliche@isty.uvsq.fr>
635
636         Merge from graphite branch.
637         * graphite.c: New.
638         * graphite.h: New.
639         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
640         * doc/invoke.texi (-floop-block, -floop-interchange,
641         -floop-strip-mine): Document new flags.
642         * tree-into-ssa.c (gimple_vec): Moved...
643         * tree-loop-distribution.c (rdg_component): Moved...
644         * cfgloopmanip.c: Include tree-flow.h.
645         (update_dominators_in_loop): New.
646         (create_empty_if_region_on_edge): New.
647         (create_empty_loop_on_edge): New.
648         (loopify): Use update_dominators_in_loop.
649         * tree-pass.h (pass_graphite_transforms): Declared.
650         * configure: Regenerate.
651         * tree-phinodes.c (make_phi_node): Export.
652         (add_phi_node_to_bb): New, split from create_phi_node.
653         * tree-chrec.c (for_each_scev_op): New.
654         * tree-chrec.h (for_each_scev_op): Declared.
655         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
656         (remove_statement): Call get_phi_with_result.
657         * config.in (HAVE_cloog): Undef.
658         * gdbinit.in (pgg): New.
659         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
660         * tree-ssa-loop.c (graphite_transforms): New.
661         (gate_graphite_transforms): New.
662         (pass_graphite_transforms): New.
663         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
664         HAVE_cloog): Defined.
665         * tree-vectorizer.c (rename_variables_in_bb): Export.
666         * tree-data-ref.c (dr_may_alias_p): Export.
667         (stmt_simple_memref_p): New.
668         (find_data_references_in_stmt): Export.
669         (find_data_references_in_loop): Export.
670         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
671         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
672         (create_rdg_vertices): Export.
673         (build_empty_rdg): New.
674         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
675         * tree-data-ref.h (rdg_component): ... here.
676         (scop_p): New.
677         (struct data_reference): Add a field scop.
678         (DR_SCOP): New.
679         (find_data_references_in_loop): Declared.
680         (find_data_references_in_stmt): Declared.
681         (create_rdg_vertices): Declared.
682         (dr_may_alias_p): Declared.
683         (stmt_simple_memref_p): Declared.
684         (struct rdg_edge): Add a field ddr_p relation.
685         (build_empty_rdg): Declared.
686         * lambda.h (lambda_matrix): Declare a VEC of.
687         (find_induction_var_from_exit_cond): Declared.
688         (lambda_vector_compare): New.
689         * common.opt (fgraphite, floop-strip-mine,
690         floop-interchange, floop-block): New flags.
691         * lambda-code.c (find_induction_var_from_exit_cond): Export.
692         * cfgloop.c (is_loop_exit): New.
693         * cfgloop.h (is_loop_exit): Declared.
694         (create_empty_if_region_on_edge): Declared.
695         (create_empty_loop_on_edge): Declared.
696         * tree-flow.h (add_phi_node_to_bb): Declared.
697         (make_phi_node): Declared.
698         (rename_variables_in_bb): Declared.
699         (perfect_loop_nest_depth): Declared.
700         (graphite_transform_loops): Declared.
701         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
702         (graphite.o-warn): Add -Wno-error.
703         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
704         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
705         (INCLUDES): Add PPLINC, CLOOGINC.
706         (OBJS-common): Add graphite.o.
707         (graphite.o): Add rule.
708         * gimple.h (gimple_vec): ... here.
709         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
710         * passes.c (init_optimization_passes): Schedule 
711         pass_graphite_transforms.
712
713 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
714
715         PR target/37283
716         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
717         and -fno-toplevel-reorder after handle_options.
718
719 2008-09-02  Paul Brook  <paul@codesourcery.com>
720
721         * config/arm/arm.c (arm_tune_cortex_a9): Define.
722         (arm_override_options): Set arm_tune_cortex_a9.
723         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
724         (arm_issue_rate): Handle cortexa9.
725         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
726         * config/arm/arm-cores.def: Add cortex-a9.
727         * config/arm/arm-tune.md: Regenerate.
728         * config/arm/arm.md: Include cortex-a9.md.
729         (generic_sched, generic_vfp): Add cortexa9.
730         * config/arm/cortex-a9.md: New file.
731
732 2008-09-02  Richard Guenther  <rguenther@suse.de>
733
734         PR tree-optimization/37327
735         * tree-vrp.c (register_new_assert_for): Make sure to not have
736         TREE_OVERFLOW set on the bound.
737
738 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
739
740         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
741
742         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
743         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
744         spec_info->mask.
745
746 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
747
748         * gcc/config/spu/spu.md (divdf3): Removed.
749
750 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
751
752         PR tree-optimization/37095
753         * cgraph.c (cgraph_node): When creating new cgraph node after
754         assembler_name_hash has been populated, record it in the hash
755         table.
756
757 2008-09-01  Paul Brook  <paul@codesourcery.com>
758
759         * doc/invoke.texi: Document -mword-relocations.
760         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
761         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
762         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
763         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
764         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
765         (arm_emit_movpair): New function.
766         (arm_print_operand <c>): Handle sybolic addresses.
767         * config/arm/arm.h (TARGET_USE_MOVT): Define.
768         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
769         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
770         * config/arm/arm.opt: Add -mword-relocations.
771         * config/arm/arm.md (movsi): Use arm_emit_movpair.
772         (arm_movt, arm_movw): New.
773
774 2008-09-01  Paul Brook  <paul@codesourcery.com>
775
776         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
777         Allow Interworking on ARMv4 EABI based targets.
778         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
779         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
780
781 2008-09-01  Paul Brook  <paul@codesourcery.com>
782
783         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
784         optimized LT0 test.  Remove optimization for GT.
785
786 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
787
788         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
789         openmp applications.
790         * pa-hpux11.h (LIB_SPEC): Likewise.
791
792         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
793         defined.
794
795 2008-09-01  Jan Hubicka  <jh@suse.cz>
796
797         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
798         present, use only counts; when guessed use only frequencies.
799         (estimate_bb_frequencies): Use function_frequency.
800         * profile.c (compute_branch_probabilities): Exit early when
801         profile reading failed. Set profile_status.
802         (branch_prob): Do not set profile_status.
803
804 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
805
806         * tree.c (protected_set_expr_location): New.
807         * tree.h (protected_set_expr_location): New prototype.
808         * c-tree.h (build_array_ref): Add argument.
809         (parser_build_unary_op): Same.
810         * c-typeck.c (build_indirect_ref): Handle new location argument.
811         (build_array_ref): Same.
812         (parser_build_unary_op): Same.
813         * gimplify.c (gimplify_asm_expr): Set input_location before calling
814         error.
815         * c-omp.c (c_finish_omp_atomic): Pass location when calling
816         build_indirect_ref.
817         * c-common.c (finish_label_address_expr): Handle new location
818         argument.
819         * c-common.h (build_indirect_ref): Add argument.
820         (finish_label_address_expr): Same.
821         * c-parser.c (c_parser_unary_expression): Pass location to build
822         functions.
823         (c_parser_postfix_expression): Same.
824
825 2008-09-01  Paul Brook  <paul@codesourcery.com>
826
827         * config/arm/arm.md: Include cortex-r4f.md.
828         (attr fpu): Update type list.
829         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
830         fconstd, fcmps and fcmpd.
831         (attr tune_cortexr4): Define.
832         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
833         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
834         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
835         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
836         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
837         types.
838         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
839         cortex_a8_vfp_farith: Ditto.
840         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
841         * config/arm/cortex-r4.md: Use tune_cortexr4.
842         * config/arm/cortex-r4f.md: New file.
843
844 2008-09-01  Richard Guenther  <rguenther@suse.de>
845
846         PR tree-optimization/37305
847         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
848         the result of constant conversions.
849         (fold_gimple_assign): Likewise.
850
851 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
852
853         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
854         #ifdef ENABLE_CHECKING.
855
856 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
857
858         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
859         * sched-int.h (print_insn, print_pattern, print_value): Declare also
860         when !INSN_SCHEDULING.
861
862 2008-09-01  Andreas Schwab  <schwab@suse.de>
863
864         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
865
866 2008-09-01  Paul Brook  <paul@codesourcery.com>
867
868         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
869
870 2008-09-01  Jan Hubicka  <jh@suse.cz>
871
872         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
873
874         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
875         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
876         * gimplify.c (gimplify_init_constructor): Add speed operand.
877         * tree-sra.c (decide_block_copy): Likewise.
878         * tree-inline.c (estimate_move_cost): Likewise.
879         * config/alpha/alpha.h (MOVE_RATIO): Update.
880         * config/frv/frv.c (MOVE_RATIO): Update.
881         * config/spu/spu.h (MOVE_RATIO): Update.
882         * config/sparc/sparc.h (MOVE_RATIO): Update.
883         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
884         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
885         * config/cris/cris.h (MOVE_RATIO): Update.
886         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
887         * config/arm/arm.h (MOVE_RATIO): Update.
888         * config/pa/pa.md: Update uses of MOVE_RATIO
889         * config/pa/pa.h (MOVE_RATIO): Update.
890         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
891         * config/h8300/h8300.h (MOVE_RATIO): Update.
892         * config/v850/v850.h (MOVE_RATIO): Update.
893         * config/bfin/bfin.h (MOVE_RATIO): Update.
894
895 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
896         Dmitry Melnik  <dm@ispras.ru>
897         Dmitry Zhurikhin  <zhur@ispras.ru>
898         Alexander Monakov  <amonakov@ispras.ru>
899         Maxim Kuvyrkov  <maxim@codesourcery.com>
900
901         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
902         sel-sched-dump.c, sel-sched-ir.c: New files.
903         * Makefile.in (OBJS-common): Add selective scheduling object
904         files.
905         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
906         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
907         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
908         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
909         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
910         (make_forwarder_block): Update loop latch if we have redirected
911         the loop latch edge.
912         * cfgloop.c (get_loop_body_in_custom_order): New function.
913         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
914         (CP_FALLTHRU_PREHEADERS): Likewise.
915         (get_loop_body_in_custom_order): Declare.
916         * cfgloopmanip.c (has_preds_from_loop): New.
917         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
918         Assert that the preheader edge will be fall thru when it is set.
919         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
920         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
921         fsel-sched-substitution, fselective-scheduling): New flags.
922         * cse.c (hash_rtx_cb): New.
923         (hash_rtx): Use it.
924         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
925         sel_sched_insn_cnt): New counters.
926         * final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
927         * genattr.c (main): Output maximal_insn_latency prototype.
928         * genautomata.c (output_default_latencies): New. Factor its code from ...
929         (output_internal_insn_latency_func): ... here.
930         (output_internal_maximal_insn_latency_func): New.
931         (output_maximal_insn_latency_func): New.
932         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
933         (struct hard_reg_set_iterator): New.
934         (hard_reg_set_iter_init, hard_reg_set_iter_set,
935         hard_reg_set_iter_next): New functions.
936         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
937         * lists.c (remove_free_INSN_LIST_node,
938         remove_free_EXPR_LIST_node): New functions.
939         * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
940         set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
941         (loop_optimizer_finalize): Do not verify flow info after reload.
942         * recog.c (validate_replace_rtx_1): New parameter simplify.
943         Default it to true.  Update all uses.  Factor out simplifying
944         code to ...
945         (simplify_while_replacing): ... this new function.
946         (validate_replace_rtx_part,
947         validate_replace_rtx_part_nosimplify): New.
948         * recog.h (validate_replace_rtx_part,
949         validate_replace_rtx_part_nosimplify): Declare.
950         * rtl.c (rtx_equal_p_cb): New.
951         (rtx_equal_p): Use it.
952         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
953         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
954         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
955         * vecprim.h: Add a vector type for unsigned int.
956         * haifa-sched.c: Include vecprim.h and cfgloop.h.
957         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
958         ready_try, cycle_issued_insns, spec_info): Make global.
959         (readyp): Initialize.
960         (dfa_lookahead): New global variable.
961         (old_max_uid, old_last_basic_block): Remove.
962         (h_i_d): Make it a vector.
963         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
964         through HID macro.
965         (after_recovery, adding_bb_to_current_region_p):
966         New variables to handle correct insertion of the recovery code.
967         (struct ready_list): Move declaration to sched-int.h.
968         (rgn_n_insns): Removed.
969         (rtx_vec_t): Move to sched-int.h.
970         (find_insn_reg_weight): Remove.
971         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
972         (haifa_init_h_i_d, haifa_finish_h_i_d):
973         New functions to initialize / finalize haifa instruction data.
974         (extend_h_i_d, init_h_i_d): Rewrite.
975         (unlink_other_notes): Move logic to add_to_note_list.  Handle
976         selective scheduler.
977         (ready_lastpos, ready_element, ready_sort, reemit_notes,
978         find_fallthru_edge): Make global, remove static prototypes.
979         (max_issue): Make global.  Add privileged_n and state parameters.  Use
980         them.
981         (extend_global, extend_all): Removed.
982         (init_before_recovery): Add new param.  Fix the handling of the case
983         when we insert a recovery code before the EXIT which has a predecessor
984         with a fallthrough edge to it.
985         (create_recovery_block): Make global.  Rename to
986         sched_create_recovery_block.  Update.
987         (change_pattern): Rename to sched_change_pattern.  Make global.
988         (speculate_insn): Rename to sched_speculate_insn.  Make global.
989         Split haifa-specific functionality into ...
990         (haifa_change_pattern): New static function.
991         (sched_extend_bb): New static function.
992         (sched_init_bbs): New function.
993         (current_sched_info): Change type to struct haifa_sched_info.
994         (insn_cost): Adjust for selective scheduling.
995         (dep_cost_1): New function.  Move logic from ...
996         (dep_cost): ... here.
997         (dep_cost): Use dep_cost_1.
998         (contributes_to_priority_p): Use sched_deps_info instead of
999         current_sched_info.
1000         (priority): Adjust to work with selective scheduling.  Process the
1001         corner case when all dependencies don't contribute to priority.
1002         (rank_for_schedule): Use ds_weak instead of dep_weak.
1003         (advance_state): New function.  Move logic from ...
1004         (advance_one_cycle): ... here.
1005         (add_to_note_list, concat_note_lists): New functions.
1006         (rm_other_notes): Make static.  Adjust for selective scheduling.
1007         (remove_notes, restore_other_notes): New functions.
1008         (move_insn): Add two arguments.  Update assert.  Don't call
1009         reemit_notes.
1010         (choose_ready): Remove lookahead variable, use dfa_lookahead.
1011         Remove more_issue, max_points.  Move the code to initialize
1012         max_lookahead_tries to max_issue.
1013         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
1014         ready.  Adjust use of move_insn.  Call restore_other_notes.
1015         (luid): Remove.
1016         (sched_init, sched_finish): Move Haifa-specific initialization/
1017         finalization to ...
1018         (haifa_sched_init, haifa_sched_finish): ... respectively.
1019         New functions.
1020         (setup_sched_dump): New function.
1021         (haifa_init_only_bb): New static function.
1022         (haifa_speculate_insn): New static function.
1023         (try_ready): Use haifa_* instead of speculate_insn and
1024         change_pattern.
1025         (extend_ready, extend_all): Remove.
1026         (sched_extend_ready_list, sched_finish_ready_list): New functions.
1027         (create_check_block_twin, add_to_speculative_block): Use
1028         haifa_insns_init instead of extend_global.  Update to use new
1029         initialization functions.  Change parameter.  Factor out code from
1030         create_check_block_twin to ...
1031         (sched_create_recovery_edges) ... this new function.
1032         (add_block): Remove.
1033         (sched_scan_info): New.
1034         (extend_bb): Use sched_scan_info.
1035         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
1036         static functions for walking through scheduling region.
1037         (sched_luids): New vector variable to replace uid_to_luid.
1038         (luids_extend_insn): New function.
1039         (sched_max_luid): New variable.
1040         (luids_init_insn): New function.
1041         (sched_init_luids, sched_finish_luids): New functions.
1042         (insn_luid): New debug function.
1043         (sched_extend_target): New function.
1044         (haifa_init_insn): New static function.
1045         (sched_init_only_bb): New hook.
1046         (sched_split_block): New hook.
1047         (sched_split_block_1): New function.
1048         (sched_create_empty_bb): New hook.
1049         (sched_create_empty_bb_1): New function.
1050         (common_sched_info, ready): New global variables.
1051         (current_sched_info_var): Remove.
1052         (move_block_after_check): Use common_sched_info.
1053         (haifa_luid_for_non_insn): New static function.
1054         (init_before_recovery): Use haifa_init_only_bb instead of
1055         add_block.
1056         (increase_insn_priority): New.
1057         * modulo-sched.c: (issue_rate): Remove static declaration.
1058         (sms_sched_info): Change type to haifa_sched_info.
1059         (sms_sched_deps_info, sms_common_sched_info): New variables.
1060         (setup_sched_infos): New.
1061         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
1062         Do not call regstat_free_calls_crossed.
1063         (sms_print_insn): Use const_rtx.
1064         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
1065         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
1066         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
1067         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
1068         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
1069         current_sched_info to use it.
1070         (enum reg_pending_barrier_mode): Move to sched-int.h.
1071         (h_d_i_d): New variable. Initialize to NULL.
1072         ({true, output, anti, spec, forward}_dependency_cache): Initialize
1073         to NULL.
1074         (estimate_dep_weak): Remove static declaration.
1075         (sched_has_condition_p): New function.  Adjust users of
1076         sched_get_condition to use it instead.
1077         (conditions_mutex_p): Add arguments indicating which conditions are
1078         reversed.  Use them.
1079         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
1080         argument to indicate whether returned condition is reversed.  Do not
1081         generate new rtx when condition should be reversed; indicate it by
1082         setting new argument instead.
1083         (add_dependence_list_and_free): Add deps parameter.
1084         Update all users.  Do not free dependence list when
1085         deps context is readonly.
1086         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
1087         contexts.
1088         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
1089         (remove_from_deps): New. Use the above functions.
1090         (cur_insn, can_start_lhs_rhs_p): New static variables.
1091         (add_or_update_back_dep_1): Initialize present_dep_type.
1092         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
1093         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
1094         haifa_note_dep): New functions implementing dependence hooks for
1095         the Haifa scheduler.
1096         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
1097         note_dep): New functions.
1098         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
1099         functions.
1100         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
1101         (free_deps): Initialize deps->reg_last.
1102         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
1103         sched_analyze_insn): Update to use dependency hooks infrastructure
1104         and readonly contexts.
1105         (deps_analyze_insn): New function.  Move part of logic from ...
1106         (sched_analyze): ... here.  Also move some logic to ...
1107         (deps_start_bb): ... here.  New function.
1108         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
1109         sel_sched_p.
1110         (sched_deps_init): New function.  Move code from ...
1111         (init_dependency_caches): ... here.  Remove.
1112         (init_deps_data_vector): New.
1113         (sched_deps_finish): New function.  Move code from ...
1114         (free_dependency_caches): ... here.  Remove.
1115         (init_deps_global, finish_deps_global): Adjust for use with
1116         selective scheduling.
1117         (get_dep_weak): Move logic to ...
1118         (get_dep_weak_1): New function.
1119         (ds_merge): Move logic to ...
1120         (ds_merge_1): New static function.
1121         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
1122         (ds_get_max_dep_weak): New function.
1123         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
1124         (n_insns): Rename to rgn_n_insns.
1125         (debug_ebb_dependencies): New function.
1126         (init_ready_list): Use it.
1127         (begin_schedule_ready): Use sched_init_only_bb.
1128         (ebb_print_insn): Indicate when an insn starts a new cycle.
1129         (contributes_to_priority, compute_jump_reg_dependencies,
1130         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
1131         (add_block1): Remove to ebb_add_block.
1132         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
1133         (schedule_ebb): Initialize them.  Use remove_notes instead of
1134         rm_other_notes.  Use haifa_local_init/finish.
1135         (schedule_ebbs): Use haifa_sched_init/finish.
1136         * sched-int.h: Include vecprim.h, remove rtl.h.
1137         (struct ready_list): Delete declaration.
1138         (sched_verbose_param, enum sched_pass_id_t,
1139         bb_vec_t, insn_vec_t, rtx_vec_t): New.
1140         (struct sched_scan_info_def): New structure.
1141         (sched_scan_info, sched_scan, sched_init_bbs,
1142         sched_init_luids, sched_finish_luids, sched_extend_target,
1143         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
1144         (struct common_sched_info_def): New.
1145         (common_sched_info, haifa_common_sched_info,
1146         sched_emulate_haifa_p): Declare.
1147         (sel_sched_p): New.
1148         (sched_luids): Declare.
1149         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
1150         (sched_max_luid, insn_luid): Declare.
1151         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
1152         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
1153         print_insn, print_pattern, print_value, haifa_classify_insn,
1154         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
1155         setup_sched_dump, sched_init, sched_finish,
1156         sel_insn_is_speculation_check): Export.
1157         (struct ready_list): Move from haifa-sched.c.
1158         (ready_try, ready, max_issue): Export.
1159         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
1160         sched_init_only_bb, sched_split_block, sched_split_block_1,
1161         sched_create_empty_bb, sched_create_empty_bb_1,
1162         sched_create_recovery_block, sched_create_recovery_edges): Export.
1163         (enum reg_pending_barrier_mode): Export.
1164         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
1165         (deps_t): New.
1166         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
1167         print_insn field.  Move add_block and fix_recovery_cfg to
1168         common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
1169         (struct sched_deps_info_def): ... this new structure.
1170         (sched_deps_info): Declare.
1171         (struct spec_info_def): Remove weakness_cutoff, add
1172         data_weakness_cutoff and control_weakness_cutoff.
1173         (spec_info): Declare.
1174         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
1175         dep_count field.
1176         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
1177         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
1178         (current_sched_info): Change type to struct haifa_sched_info.
1179         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
1180         (h_d_i_d): New variable.
1181         (HDID): New accessor macro.
1182         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
1183         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
1184         and HDID.
1185         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
1186         (enum SCHED_FLAGS): Update for selective scheduler.
1187         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
1188         (init_dependency_caches, free_dependency_caches): Delete declarations.
1189         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
1190         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
1191         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
1192         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
1193         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
1194         ds_to_dt): Export.
1195         (rm_other_notes): Delete declaration.
1196         (schedule_block): Remove one argument.
1197         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
1198         ready_element, ready_lastpos, sched_extend_ready_list,
1199         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
1200         concat_note_lists): Export.
1201         (struct region): Move from sched-rgn.h.
1202         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1203         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1204         BLOCK_TO_BB, CONTAINING_RGN): Export.
1205         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
1206         (current_nr_blocks, current_blocks, target_bb): Likewise.
1207         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
1208         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
1209         sched_rgn_local_init, extend_regions,
1210         rgn_make_new_region_out_of_new_block, compute_priorities,
1211         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
1212         extend_rgns, deps_join rgn_setup_common_sched_info,
1213         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
1214         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
1215         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
1216         increase_insn_priority): Likewise.
1217         * sched-rgn.c: Include sel-sched.h.
1218         (ref_counts): New static variable.  Use it ...
1219         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
1220         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
1221         (sched_is_disabled_for_current_region_p): Delete static declaration.
1222         (struct region): Move to sched-int.h.
1223         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1224         ebb_head): Define and initialize.
1225         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1226         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
1227         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
1228         sched-int.h.
1229         (find_single_block_region): Add new argument to indicate that EBB
1230         regions should be constructed.
1231         (debug_live): Delete declaration.
1232         (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
1233         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
1234         declaration.
1235         (init_regions): Delete declaration.
1236         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
1237         rgn_estimate_number_of_insns): New.
1238         (too_large): Use estimate_number_of_insns.
1239         (haifa_find_rgns): New. Move the code from ...
1240         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
1241         (free_trg_info): New.
1242         (compute_trg_info): Allocate candidate tables here instead of ...
1243         (init_ready_list): ... here.
1244         (rgn_print_insn): Use const_rtx.
1245         (contributes_to_priority, extend_regions): Delete static declaration.
1246         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
1247         (add_block1): Rename to rgn_add_block.
1248         (debug_rgn_dependencies): Delete static qualifier.
1249         (new_ready): Use sched_deps_info.  Simplify.
1250         (rgn_common_sched_info, rgn_const_sched_deps_info,
1251         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
1252         (region_sched_info): Rename to rgn_const_sched_info.
1253         (deps_join): New, extracted from ...
1254         (propagate_deps): ... here.
1255         (compute_block_dependences, debug_dependencies): Update for selective
1256         scheduling.
1257         (free_rgn_deps, compute_priorities): New functions.
1258         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
1259         sched_rgn_compute_dependencies): New functions.
1260         (schedule_region): Use them.
1261         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
1262         rgn_setup_common_sched_info, rgn_setup_sched_infos):
1263         New functions.
1264         (schedule_insns): Call new functions that were split out.
1265         (rgn_make_new_region_out_of_new_block): New.
1266         (get_rgn_sched_max_insns_priority): New.
1267         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
1268         scheduling when appropriate.
1269         * sched-vis.c: Include insn-attr.h.
1270         (print_value, print_pattern): Make global.
1271         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
1272         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1273         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1274         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1275         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
1276         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
1277         hooks.  Initialize them to 0.
1278         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1279         * target.h (struct gcc_target): Add them.  Rename gen_check field to
1280         gen_spec_check.
1281         * flags.h (sel_sched_switch_set): Declare.
1282         * opts.c (sel_sched_switch_set): New variable.
1283         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
1284         pipelining is disabled from command line.
1285         (common_handle_option): Record whether selective scheduling is
1286         requested from command line.
1287         * doc/invoke.texi: Document new flags and parameters.
1288         * doc/tm.texi: Document new target hooks.
1289         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
1290         (dfa_state_size): Do not declare locally.
1291         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
1292         * config/rs6000/rs6000.c (rs6000_init_sched_context,
1293         rs6000_alloc_sched_context, rs6000_set_sched_context,
1294         rs6000_free_sched_context): New functions.
1295         (struct _rs6000_sched_context): New.
1296         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
1297         scheduling.
1298         (rs6000_sched_finish): Do not run for selective scheduling.
1299
1300 2008-08-31  Jan Hubicka  <jh@suse.cz>
1301
1302         * frv.c (frv_rtx_costs): Update forward declaration.
1303         * spu.c (spu_rtx_costs): Likewise.
1304         * pdp11.c: Include df.h
1305         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
1306         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
1307         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
1308         * iq2000.c (iq2000_address_cost): Add speed argument.
1309         (iq2000_rtx_costs): Likewise.
1310         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
1311         update call of mn10300_address_cost.
1312         * mcore.c: Include df.h
1313         (mcore_rtx_costs): Update prototype.
1314         * score3.c: Include df.h
1315         (score3_rtx_costs): Remove speed argument.
1316         * score7.c: Include df.h
1317         (score7_address_cost): Remove speed argument.
1318         * score-protos.h (score_address_cost): Update prototype.
1319         * score.c: Include df.h
1320         (score_rtx_costs): Update call of costs functions.
1321         * v850.c (v850_rtx_costs): Add bool argument.
1322
1323 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
1324
1325         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
1326
1327 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1328
1329         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
1330         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
1331
1332 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1333
1334         * mkmap-flat.awk: Add option pe_dll.
1335         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
1336         * config/i386/t-cygwin (SHLIB_LC): Add.
1337         * config/i386/t-mingw32 (SHLIB_LC): Add.
1338         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
1339         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
1340         (LINK_SPEC): Support libgcc_s.
1341         (LIBGCC_SPEC): Support libgcc_s.
1342         (LIBGCC_SONAME): New.
1343
1344 2008-08-31  Jan Hubicka  <jh@suse.cz>
1345
1346         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
1347         mistakely had old version of patch.
1348
1349         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
1350         (ipcp_estimate_growth): New.
1351         (ipcp_insert_stage): Use ipcp_estimate_growth.
1352         * profile.c (branch_prob): When reading failed, do not consider
1353         profile as read.
1354
1355 2008-08-31  Jan Hubicka  <jh@suse.cz>
1356
1357         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
1358         loop is optimized for speed.
1359
1360 2008-08-31  Richard Guenther  <rguenther@suse.de>
1361
1362         PR middle-end/37289
1363         * fold-const.c (fold_binary): Retain conversions in folding
1364         ~A + 1 to -A.
1365
1366 2008-08-31  Jan Hubicka  <jh@suse.cz>
1367
1368         * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
1369         * predict.c (maybe_hot_frequency_p): Make inline.
1370         (maybe_hot_count_p): Break out from ...
1371         (maybe_hot_bb_p): ... this one.
1372         (maybe_hot_edge_p): Simplify.
1373         * basic-block.h (probably_cold_bb_p): Remove.
1374
1375 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1376
1377         PR target/37168
1378         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
1379         prototype.
1380         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
1381         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
1382         Also split V4SFmode.
1383         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
1384         vector float modes.
1385
1386 2008-08-31  Jan Hubicka  <jh@suse.cz>
1387
1388         * predict.c (PROB_VERY_LIKELY): Make small enough so things
1389         become cold.
1390         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
1391
1392 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1393
1394         PR debug/37287
1395         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1396         add source coords.
1397
1398         * dwarf2out.c (native_encode_initializer): Subtract min_index for
1399         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1400
1401 2008-08-31  Jan Hubicka  <jh@suse.cz>
1402
1403         * sparc.h (BRANCH_COST): Fix macro definition.
1404         * avr.c (avr_operand_rtx_cost): Add speed argument.
1405         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
1406
1407 2008-08-31  Richard Guenther  <rguenther@suse.de>
1408
1409         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1410         types instead of operands.  Re-instantiate verifying of
1411         binary expression operands.
1412
1413 2008-08-30  Jan Hubicka  <jh@suse.cz>
1414
1415         * fwprop.c (should_replace_address): Add speed attribute.
1416         (PR_OPTIMIZE_FOR_SPEED): New flag.
1417         (propagate_rtx_1): Use it.
1418         (propagate_rtx): Set it.
1419         (try_fwprop_subst): Update call of rtx_costs.
1420         (forward_propagate_and_simplify): LIkewise.
1421         * hooks.c (hook_int_rtx_bool_0): New
1422         (hook_bool_rtx_int_int_intp_false): Replace by ...
1423         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1424         * hooks.h (hook_int_rtx_bool_0): New
1425         (hook_bool_rtx_int_int_intp_false): Replace by ...
1426         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1427         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
1428         (prepare_cmp_insn): UPdate call of rtx_cost.
1429         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
1430         (reload_cse_simplify_operands): Update call of rtx_cost.
1431         (reload_cse_move2add): call of rtx_cost.
1432         * target.h (struct gcc_target): Update rtx_costs and address_costs.
1433         * rtlanal.c (rtx_cost): Add speed argument.
1434         (address_cost): Add speed argument
1435         (default_address_cost): Likewise.
1436         (insn_rtx_cost): Likewise.
1437         * cfgloopanal.c (seq_cost): Add speed argument.
1438         (target_reg_cost, target_spill_cost): Turn to array.
1439         (init_set_costs): Update for speed.
1440         (estimate_reg_pressure_cost): Add speed argument.
1441         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
1442         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
1443         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
1444         (seq_cost): Add speed argument.
1445         (computation_cost): Add speed arugment.
1446         (add_cost, multiply_by_const, get_address_cost): add speed argument.
1447         (force_expr_to_var_cost): Update for profile info.
1448         (force_var_cost): Likewise.
1449         (split_address_cost): Likewise.
1450         (ptr_difference_cost): Likewise.
1451         (difference_cost): Likewise.
1452         (get_computation_cost_at): Likewise.
1453         (determine_iv_cost): Likewise.
1454         (ivopts_global_cost_for_size): Likewise.
1455         (rewrite_use_address): Likewise.
1456         (tree_ssa_iv_optimize_loop): Initialize speed field.
1457         * cse.c (optimize_this_for_speed_p): New static var.
1458         (notreg_cost): Update call of rtx_cost.
1459         (cse_extended_basic_block): set optimize_this_for_speed_p.
1460         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
1461         (noce_try_cmove_arith): Likewise.
1462         (noce_try_sign_mask): LIkewise.
1463         * expr.c (compress_float_constant): Update rtx_cost calls.
1464         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
1465         (addr_to_parts): Likewise.
1466         (create_mem_ref): Likewise.
1467         * dse.c (find_shift_sequence): Add speed argument.
1468         (replace_read): Update call.
1469         * calls.c (precompute_register_parameters): Update call of rtx_cost.
1470         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
1471         * neg_cost, shift_cost, shiftadd_cost,
1472         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
1473         mul_highpart_cost): Increase dimension.
1474         (init_expmed): Initialize for both size and speed.
1475         (expand_shift): Use profile.
1476         (synth_mult): Use profile.
1477         (choose_mult_variant): Use profile.
1478         (expand_mult): Use profile.
1479         (expand_mult_highpart_optab): Use profile.
1480         (expand_mult_highpart): Use profile.
1481         (expand_smod_pow2): Use profile.
1482         (expand_divmod): Use profile.
1483         * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
1484         * loop-invariant.c (create_new_invariant): Use profile.
1485         (gain_for_invariant): Add speed parameter.
1486         (best_gain_for_invariant): Likewise.
1487         (find_invariants_to_move): Likewise.
1488         (move_single_loop_invariants): Set it.
1489         * target-def.h (TARGET_RTX_COSTS): Use hook.
1490         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
1491         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
1492         * output.h (default_address_cost): Update prototype.
1493         * combine.c (optimize_this_for_speed_p): New static var.
1494         (combine_validate_cost): Update call of rtx_cost.
1495         (combine_instructions): Set optimize_this_for_speed_p.
1496         (expand_compound_operation): Update call of rtx_cost.
1497         (make_extraction):Update call of rtx_cost.
1498         (force_to_mode):Update call of rtx_cost.
1499         (distribute_and_simplify_rtx):Update call of rtx_cost.
1500         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
1501         (estimate_reg_pressure_cost): Update prototype.
1502         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
1503         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
1504         Remove.
1505         * config/alpha/alpha.c (alpha_rtx_costs): Update.
1506         (alpha_rtx_costs): Update.
1507         * config/frv/frv.c (frv_rtx_costs): Update.
1508         * config/s390/s390.c (s390_rtx_costs): Update.
1509         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
1510         (m32c_rtx_costs): Update.
1511         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
1512         (spu_rtx_costs): Update.
1513         * config/sparc/sparc.c (sparc_rtx_costs): Update.
1514         * config/m32r/m32r.c (m32r_rtx_costs): Update.
1515         * config/i386/i386.c (:ix86_address_cost): Update.
1516         (ix86_rtx_costs): Update.
1517         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
1518         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
1519         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
1520         * config/crx/crx.c (crx_address_cost): Update.
1521         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
1522         * config/stormy16/stormy16.c
1523         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
1524         * config/m68hc11/m68hc11.c
1525         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
1526         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
1527         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
1528         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
1529         * config/ia64/ia64.c (ia64_rtx_costs): Update.
1530         * config/m68k/m68k.c (m68k_rtx_costs): Update.
1531         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
1532         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
1533         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
1534         (mcore_rtx_costs): update.
1535         * config/score/score3.c (score3_rtx_costs): Update.
1536         * config/score/score7.c (score7_rtx_costs): Update.
1537         * config/score/score3.h (score3_rtx_costs):Update.
1538         * config/score/score7.h (score7_rtx_costs): Update.
1539         * config/score/score.c (score_rtx_costs): Update.
1540         * config/arm/arm.c (arm_address_cost): Update.
1541         (arm_rtx_costs_1): Update.
1542         (arm_rtx_costs_1): Update.
1543         (arm_size_rtx_costs): Update.
1544         (arm_size_rtx_costs): Update.
1545         (arm_size_rtx_costs): Update.
1546         (arm_xscale_rtx_costs): Update.
1547         (arm_thumb_address_cost): Update.
1548         * config/pa/pa.c (hppa_address_cost): Update.
1549         * config/mips/mips.c (mips_rtx_costs): Update.
1550         * config/vax/vax.c (vax_address_cost): Update.
1551         * config/h8300/h8300.c (h8300_shift_costs): Update.
1552         (h8300_rtx_costs): Update.
1553         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
1554         (v850_rtx_costs): Update.
1555         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
1556         * config/bfin/bfin.c
1557         (bfin_address_cost): Update.
1558         (bfin_rtx_costs): Update.
1559         * stmt.c (lshift_cheap_p): Update.
1560
1561 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1562
1563         PR middle-end/36444
1564         * expmed.c (extract_bit_field_1): Check the mode size to make
1565         sure the vector modes have the same size.
1566
1567 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
1568
1569         * dojump.c (top level): Include basic-block.h to declare
1570         optimize_insn_for_speed_p
1571
1572         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1573
1574         * opts.h (CL_SAVE): New option class for marking options that are
1575         target specific options usable in the target attribute.
1576         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
1577
1578         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
1579         can easily find the target specific options that are safe to use
1580         in the attribute or pragma.
1581
1582         * attribs.c (decl_attributes): Change #pragma GCC option to
1583         #pragma GCC target, and attribute((option(...))) to
1584         attribute((target(...))).
1585
1586         * doc/extend.texi (target attribute): Change from option
1587         attribute.  Delete push/pop/reset.
1588         (#pragma GCC target): Change from #pragma GCC option.  Delete
1589         push/pop/reset.
1590         (#pragma GCC push_options): Document new pragma.
1591         (#pragma GCC pop_options): Document new pragma.
1592         (#pragma GCC reset_options): Document new pragma.
1593
1594         * targhooks.c (default_target_option_valid_attribute_p): Add
1595         warning about port not supporting target attributes.
1596         (default_target_option_pragma_parse): New function, warn about
1597         #pragma GCC target not being supported.
1598
1599         * targhooks.h (default_target_option_pragma_parse): Add
1600         declaration.
1601
1602         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1603         TI_CURRENT_OPTION_PRAGMA.
1604         (current_target_pragma): Rename from current_option_pragma.
1605
1606         * target.h: (struct target_option): Delete booleans for changing
1607         the optimization level on hot/cold functions.  Change signature of
1608         pragma_parse hook to take a second tree.
1609
1610         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1611
1612         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1613         that the declaration is done at global scope.
1614
1615         * langhooks.c (add_builtin_function_common): Move most of the code
1616         from add_builtin_function here, calling the hook passed in.
1617         (add_builtin_function): Call add_builtin_function_common with
1618         standard builtin hook.
1619         (add_builtin_function_ext_scope): New function to add builtins to
1620         global scope.
1621
1622         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1623         hook.
1624         (add_builtin_function_ext_scope): Add declaration.
1625
1626         * c-pragma.c (handle_pragma_target): Rename from
1627         handle_pragma_option, #pragma GCC option is now #pragma GCC
1628         target.  Move warning about port not supporting target options to
1629         default pragma parse hook.  Remove push/pop/reset from this
1630         pragma.
1631         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
1632         (option_stack): Delete static variable.
1633         (optimize_stack): Ditto.
1634         (optons_stack): New stack of saved target and optimization
1635         options.
1636         (handle_pragma_push_options): New function to handle pushing both
1637         target and optimization options.
1638         (handle_pragma_pop_options): New function to handle popping both
1639         target and optimization options.
1640         (handle_pragma_reset_options): New function to handle resetting
1641         both target and optimization options to their initial state.
1642         (init_pragma): Rename handle_pragma_option to
1643         handle_pragma_target.  Add support for push_options, pop_options,
1644         and reset_options pragmas.
1645
1646         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
1647         default_target_option_pragma_parse.
1648         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
1649         default_target_option_valid_attribute_p.
1650         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1651         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1652         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
1653         optimization level on hot/cold functions.
1654
1655         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1656         if the caller and callee have different optimization levels.
1657
1658         * c-common.c (handle_target_attribute): Rename from
1659         handle_option_attribute, attribute((option(...))) is now
1660         attribute((target(...))).  Move warning if the port does not
1661         support target attributes to the default hook.
1662         (handle_hot_attribute): Delete code to change the optimization
1663         level of hot functions.
1664         (handle_cold_attribute): Ditto.
1665
1666         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
1667         argument that is the binary tree options to use if there are no
1668         arguments.  Call ix86_valid_target_attribute_tree instead of
1669         ix86_valid_option_attribute_tree.
1670         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
1671         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
1672         ix86_pragma_option_parse.
1673
1674         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1675         Rename from ix86_valid_option_attribute_tree.
1676
1677         * config/i386/i386.c (ix86_add_new_builtins): New function to add
1678         new builtins when the ISA changes.
1679         (ix86_valid_target_attribute_tree): Rename from
1680         ix86_valid_option_attribute_tree.  Change callers.  If the
1681         function specified optimization options, use those as the starting
1682         point before setting up the target attributes.  If the
1683         optimization options were changed in the course of setting the
1684         target attributes, record the new optimization options.
1685         (ix86_valid_target_attribute_tree_inner_p): Rename from
1686         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
1687         ix86_add_new_builtins if the ISA changed.
1688         (ix86_valid_target_attribute_p): Rename from
1689         ix86_valid_option_attribute_p.  Change callers.
1690         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
1691         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
1692         as delayed builtin functions.
1693         (struct builtin_isa): New structure to record builtin functions
1694         that should be delayed until the ISA for that function is used.
1695         (ix86_builtins_isa): Change from int to struct to track builtin
1696         functions we want to declare at some point.
1697         (def_builtin): If the front end can delay defining the builtin
1698         functions, don't create builtins for ISAs not part of the default
1699         options.
1700         (def_builtin_const): Ditto.
1701         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
1702         __builtin_ia32_pcmov_v2di to be different builtin functions.
1703         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
1704         a structure instead of an int.
1705         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
1706         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
1707         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1708         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1709
1710         * config/ia64/ia64.h
1711         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1712         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1713
1714         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
1715         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
1716         (LANG_HOOKS_INITIALIZER): Add
1717         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
1718
1719 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
1720
1721         PR target/37270
1722         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
1723         the reload address with the index register for SFmode
1724         access with a displacement.
1725
1726 2008-08-30  Jan Hubicka  <jh@suse.cz>
1727
1728         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
1729         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
1730         * dojump.c (do_jump): Likewise.
1731         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
1732         (note-if_info): Add BRANCH_COST.
1733         (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
1734         noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
1735         noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
1736         branch cost.
1737         * expr.h (BRANCH_COST): Update default.
1738         * predict.c (predictable_edge_p): New function.
1739         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
1740         Update BRANCH_COST call.
1741         * basic-block.h (predictable_edge_p): Declare.
1742         * config/alpha/alpha.h (BRANCH_COST): Update.
1743         * config/frv/frv.h (BRANCH_COST): Update.
1744         * config/s390/s390.h (BRANCH_COST): Update.
1745         * config/spu/spu.h (BRANCH_COST): Update.
1746         * config/sparc/sparc.h (BRANCH_COST): Update.
1747         * config/m32r/m32r.h (BRANCH_COST): Update.
1748         * config/i386/i386.h (BRANCH_COST): Update.
1749         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
1750         * config/sh/sh.h (BRANCH_COST): Update.
1751         * config/pdp11/pdp11.h (BRANCH_COST): Update.
1752         * config/avr/avr.h (BRANCH_COST): Update.
1753         * config/crx/crx.h (BRANCH_COST): Update.
1754         * config/xtensa/xtensa.h (BRANCH_COST): Update.
1755         * config/stormy16/stormy16.h (BRANCH_COST): Update.
1756         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
1757         * config/iq2000/iq2000.h (BRANCH_COST): Update.
1758         * config/ia64/ia64.h (BRANCH_COST): Update.
1759         * config/rs6000/rs6000.h (BRANCH_COST): Update.
1760         * config/arc/arc.h (BRANCH_COST): Update.
1761         * config/score/score.h (BRANCH_COST): Update.
1762         * config/arm/arm.h (BRANCH_COST): Update.
1763         * config/pa/pa.h (BRANCH_COST): Update.
1764         * config/mips/mips.h (BRANCH_COST): Update.
1765         * config/vax/vax.h (BRANCH_COST): Update.
1766         * config/h8300/h8300.h (BRANCH_COST): Update.
1767         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
1768         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
1769         * doc/tm.texi (BRANCH_COST): Update.
1770
1771 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
1772
1773         PR target/37283
1774         * config/arm/arm.c (arm_optimization_options): Set
1775         flag_section_anchors to 2 instead of 1 to distinguish it from
1776         -fsection-anchors given explicitely on the command line.
1777
1778 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
1779
1780         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
1781         final insn of a split.
1782
1783 2008-08-30  Jan Hubicka  <jh@suse.cz>
1784
1785         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
1786         optimized for speed.
1787         * final.c (compute_alignments): Use optimize_bb_for_size_p.
1788         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
1789         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
1790         flag_gcse_after_reload_set): New static vars.
1791         (common_handle_option): Enable those flags for profile-use.
1792         (decode_options): Remove optimize_size flags that are handled
1793         on higher granuality.
1794         * tree-vectorizer.c (vectorize_loops): Use
1795         optimize_loop_nest_for_speed_p.
1796         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
1797         * tree-predcom.c (tree_predictive_commoning): Use
1798         optimize_loop_for_speed_p.
1799         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
1800         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
1801         * predict.c (optimize_loop_for_speed_p): Fix walk.
1802
1803 2008-08-30  Jan Hubicka  <jh@suse.cz>
1804
1805         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
1806         functions.
1807         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
1808         profile presence locally.
1809
1810 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
1811
1812         PR bootstrap/37086
1813         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
1814         versions before 4.0.
1815
1816 2008-08-29  Jan Hubicka  <jh@suse.cz>
1817
1818         * tree-inline.c (insert_init_stmt): Insert sequence even when
1819         not in SSA form.
1820
1821 2008-08-29  Jeff Law  <law@redhat.com>
1822
1823         * mn10300.c (mn10300_secondary_reload_class): We need secondary
1824         reloads for AM33-2 if IN is a pseudo with an equivalent memory
1825         location and class is an FP register.
1826
1827 2008-08-29  Jan Hubicka  <jh@suse.cz>
1828
1829         * see.c (see_merge_one_def_extension): Silence used uninitialized
1830         warning.
1831         * matrix-reorg.c (check_allocation_function): Likewise.
1832         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
1833
1834 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
1835
1836         PR c/37261
1837         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
1838         compute new & and | in type rather than TREE_TYPE (arg0).
1839
1840         * dwarf2out.c (fortran_common): Update comment.
1841         (gen_variable_die): Swap com_die and var_die variables in Fortran
1842         COMMON block handling code.
1843
1844         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
1845
1846         * dwarf2out.c (gen_const_die): New function.
1847         (size_of_die, value_format, output_die): Output larger
1848         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
1849         (native_encode_initializer): New function.
1850         (tree_add_const_value_attribute): Call it.
1851         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
1852
1853         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
1854         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
1855         TREE_THIS_VOLATILE to add_type_attribute.
1856
1857         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
1858         types.
1859         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
1860         types.
1861
1862         * dwarf2out.c (loc_by_reference): New function.
1863         (add_location_or_const_value_attribute): Use it.
1864
1865         PR fortran/23057
1866         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
1867         as DW_TAG_variable children of DW_TAG_common_block rather than
1868         DW_TAG_member children.  Put DW_AT_external to individual
1869         DW_TAG_variable DIEs, not to DW_TAG_common_block.
1870
1871         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
1872         loc_descriptor_from_tree_1.
1873
1874         PR fortran/29635
1875         PR fortran/23057
1876         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
1877         arguments to imported_module_or_decl.
1878         (debug_nothing_tree_tree): Removed.
1879         (debug_nothing_tree_tree_tree_bool): New prototype.
1880         * debug.c (do_nothing_debug_hooks): Adjust.
1881         (debug_nothing_tree_tree): Removed.
1882         (debug_nothing_tree_tree_tree_bool): New function.
1883         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
1884         (gen_variable_die): Put all common vars for the
1885         same COMMON block under one DW_TAG_common_block.
1886         (declare_in_namespace): Return new context_die, for Fortran
1887         return the module DIE instead of adding extra declarations into
1888         the namespace.
1889         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
1890         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
1891         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
1892         DW_AT_declaration.
1893         (dwarf2out_global_decl): Don't skip Fortran global vars.
1894         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
1895         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
1896         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
1897         DW_TAG_imported_declaration as child of previous
1898         DW_TAG_imported_module.
1899         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
1900         * sdbout.c (sdb_debug_hooks): Likewise.
1901         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1902
1903 2008-08-29  Jan Hubicka  <jh@suse.cz>
1904
1905         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
1906
1907         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
1908         * ipa-cp.c (n_cloning_candidates): New static variable.
1909         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
1910         (ipcp_print_all_lattices): Improve debug output.
1911         (ipcp_cloning_candidate_p): New function.
1912         (ipcp_initialize_node_lattices): Use it.
1913         (ipcp_init_stage): Do only analyzis here; prettier debug output.
1914         (ipcp_propagate_stage): Prettier debug output.
1915         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
1916         (ipcp_print_all_structures): Remove.
1917         (ipcp_need_redirect_p): Test !n_cloning_candidates.
1918         (ipcp_insert_stage): Prettier debug output; call
1919         cgraph_remove_unreachable_nodes before propagating.
1920         (pass_ipa_cp): Schedule function removal pass.
1921         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
1922         debug output.
1923         (cgraph_maybe_hot_edge_p): Move to ...
1924         * predict.c (cgraph_maybe_hot_edge_p) ... here.
1925         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
1926         (common_handle_option): Set them; enable ipa-cp when profiling.
1927         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
1928         (ipa_print_all_jump_functions): Likewise.
1929         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
1930         (ipa_print_node_params, ipa_print_all_params): New.
1931         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
1932         ipa_print_all_param_flags): Remove.
1933         (ipa_print_node_params, ipa_print_all_params): New.
1934
1935 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
1936
1937         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
1938         change from 2008-04-03.
1939         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
1940
1941 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1942
1943         PR rtl-opt/37251
1944
1945         * ira-color.c (push_allocnos_to_stack): Truncate
1946         removed_splay_allocno_vec.
1947
1948 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1949
1950         PR rtl-opt/37243
1951         * ira-color (ira_fast_allocation): Don't assign hard registers to
1952         global allocnos.
1953
1954 2008-08-29  Jan Hubicka  <jh@suse.cz>
1955
1956         PR middle-end/37278
1957         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
1958         for cold internal loops.
1959
1960 2008-08-29  Richard Guenther  <rguenther@suse.de>
1961
1962         * tree-ssa-structalias.c (create_variable_info_for): Do not
1963         create fields for heap vars or vars with a noalias state.
1964         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
1965         from ESCAPED.
1966
1967 2008-08-29  Richard Guenther  <rguenther@suse.de>
1968
1969         * common.opt (ftree-store-ccp): Mark as preserved for
1970         backward compatibility.
1971         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
1972         * tree-pass.h (pass_store_ccp): Remove.
1973         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
1974         (first_vdef): Remove declaration.
1975         (get_value_loaded_by): Likewise.
1976         * tree-ssa-ccp.c (do_store_ccp): Remove.
1977         (get_default_value): Simplify as do_store_ccp is always false
1978         now.  Do not initialize mem_ref.
1979         (set_value_varying): Likewise.
1980         (canonicalize_float_value): Likewise.
1981         (set_lattice_value): Likewise.
1982         (likely_value): Likewise.
1983         (surely_varying_stmt_p): Likewise.
1984         (ccp_initialize): Likewise.
1985         (ccp_lattice_meet): Likewise.
1986         (ccp_visit_phi_node): Likewise.
1987         (ccp_fold): Likewise.
1988         (evaluate_stmt): Likewise.
1989         (visit_assignment): Likewise.
1990         (ccp_visit_stmt): Likewise.
1991         (execute_ssa_ccp): Fold into ...
1992         (do_ssa_ccp): ... this.
1993         (do_ssa_store_ccp): Remove.
1994         (gate_store_ccp): Likewise.
1995         (pass_store_ccp): Likewise.
1996         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
1997         initialize mem_ref.
1998         * tree-ssa-propagate.c (first_vdef): Remove.
1999         (get_value_loaded_by): Likewise.
2000         (replace_vuses_in): Likewise.
2001         (substitute_and_fold): Do not call replace_vuses_in.
2002         * opts.c (decode_options): Do not set flag_tree_store_ccp.
2003
2004 2008-08-29  Richard Guenther  <rguenther@suse.de>
2005
2006         PR middle-end/37236
2007         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
2008         PARAM_NOALIAS tags with is_heapvar.
2009         * tree-ssa-operands.c (access_can_touch_variable): Offset
2010         based tests do not apply for heapvars.  Fix offset test.
2011
2012 2008-08-29  Jan Hubicka  <jh@suse.cz>
2013
2014         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
2015         (-fipa-cp-clone): Enabled by default at -O3.
2016         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
2017         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
2018
2019 2008-08-29  Jan Hubicka  <jh@suse.cz>
2020
2021         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
2022         New functions.
2023         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
2024         Declare.
2025         * gimple.c (giple_copy_call_skip_args): New function.
2026         (giple_copy_call_skip_args): Declare.
2027
2028         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
2029         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
2030         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
2031         (ipcp_create_replace_map): Improve debug output.
2032         (ipcp_need_redirect_p): Return false when not clonning.
2033         (ipcp_update_callgraph): Skip args.
2034         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
2035         skip args.
2036         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
2037         (save_inline_function_body): Update call of tree_function_versioning.
2038         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
2039         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
2040         (tree_function_versioning): Likewise.
2041         * tree-inline.h (tree_function_versioning): Update prototype.
2042
2043 2008-08-29  Jan Hubicka  <jh@suse.cz>
2044
2045         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
2046         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
2047         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
2048         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
2049         * value-prof.c (gimple_divmod_fixed_value_transform,
2050         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
2051         gimple_stringops_transform): Use optimize_bb_for_size_p.
2052         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
2053         * final.c (compute_alignments): Use optimize_function_for_size_p.
2054         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
2055         (fold_builtin_strcpy, fold_builtin_fputs): Use
2056         optimize_function_for_size_p.
2057         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
2058         * recog.c (relax_delay_slots): Likewise.
2059         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
2060         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
2061         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
2062         optimize_function_for_size_p.
2063         (cgraph_decide_inlining_of_small_function): Use
2064         optimize_function_for_size_p.
2065         * global.c (find_reg): Use optimize_function_for_size_p.
2066         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
2067         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
2068         flag_prefetch_loop_arrays. Those can work it out from profile.
2069         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
2070         optimize_loop_for_speed_p.
2071         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
2072         argument.
2073         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
2074         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
2075         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
2076         * local-alloc.c (block_alloc): Pass BB pointer.
2077         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
2078         * gcse.c (gcse_main): Use optimize_function_for_size_p.
2079         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
2080         (decide_peel_completely): Likewise.
2081         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
2082         optimize_loop_for_size_p.
2083         (vect_enhance_data_refs_alignment): Likewise.
2084         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
2085         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
2086         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
2087         (try_crossjump_bb): Use optimize_bb_for_size_p.
2088         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
2089         optimize_loop_for_speed_p.
2090         * bb-reorder.c (find_traces_1_round): Likewise.
2091         (copy_bb): Use optimize_bb_for_speed_p.
2092         (duplicate_computed_gotos): Likewise.
2093         * basic-block.h (optimize_loop_nest_for_size_p,
2094         optimize_loop_nest_for_speed_p): New.
2095         * stmt.c (expand_case): Use optimize_insn_for_size_p.
2096
2097 2008-08-29  Tristan Gingold  <gingold@adacore.com>
2098
2099         * gcov.c (main): Call expandargv.
2100
2101 2008-08-29  Jan Hubicka  <jh@suse.cz>
2102
2103         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
2104         is not cold.
2105         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2106         Constify arguments.
2107         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
2108         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
2109         Constify.
2110         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
2111
2112 2008-08-29  Jan Hubicka  <jh@suse.cz>
2113
2114         * tree-pass.h (pass_strip_predict_hints): Declare.
2115         * predict.c (strip_builtin_expect): Rename to ...
2116         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
2117         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
2118         (tree_estimate_probability): Do not strip builtin_expect.
2119         (pass_strip_predict_hints): New pass.
2120         * tree-inline.c (expand_call_inline): When inlining cold function, predict
2121         it as unlikely.
2122         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
2123
2124 2008-08-29  Richard Guenther  <rguenther@suse.de>
2125
2126         PR tree-optimization/37207
2127         * tree-vrp.c (extract_range_from_binary_expr): Also try
2128         to constant fold if only one of the operands is a constant.
2129
2130 2008-08-29  Nick Clifton  <nickc@redhat.com>
2131
2132         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
2133         the same way as SYMBOL_REFs.
2134
2135 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
2136
2137         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
2138
2139 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2140
2141         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
2142         * config/mips/mips.md (branch_likely): Remove const.  Fix
2143         comment formatting.
2144         (define_delay for type "branch"): Change to only apply for branch
2145         with likely variant.
2146         (define_delay for type "branch" and "branch_likely" no).  New delay
2147         definition.
2148         (equality_op): New code iterator.
2149         (bbv, bbinv): New code attributes.
2150         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
2151         patterns.
2152
2153 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2154             Andrew Pinski  <pinskia@gcc.gnu.org>
2155
2156         PR 18050
2157         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
2158
2159 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
2160
2161         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
2162         rule that a symbolic constant must be defined and >= 0 for the
2163         corresponding facility to be present at compile-time.
2164         * gthr-posix.c: Likewise.
2165
2166 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
2167
2168         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
2169         * config/mips/mips.md (D): New mode attribute.
2170         (mulsi3, muldi3): Merge it into ...
2171         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
2172         patterns.
2173         (muldi3_mul3): New pattern.
2174         (mulsi3_mult3): Rename to mulsi3_mul3.
2175
2176 2008-08-28  Jan Hubicka  <jh@suse.cz>
2177
2178         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
2179         to fail.
2180         * predict.c (always_optimize_for_size_p): Rename to ...
2181         (optimize_function_for_size): ... this one; make extern.
2182         (optimize_function_for_speed_p): New.
2183         (optimize_bb_for_size_p, optimize_bb_for_size_p,
2184         optimize_edge_for_size_p,optimize_edge_for_size_p,
2185         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
2186         * basic-block.h (optimize_function_for_size_p,
2187         optimize_function_for_speed_p): Declare.
2188         * i386.md (optimize_size checks): Replace them by appropriate
2189         predicate.
2190         (standard_80387_constant_p, ix86_compute_frame_layout,
2191         ix86_expand_epilogue, ix86_decompose_address,
2192         print_operand, emit_i387_cw_initialization,
2193         inline_memory_move_cost, ix86_pad_returns,
2194         ix86_reorg): Replace optimize_size checks.
2195
2196 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
2197
2198         * rtl.h (simplify_subreg_regno): Declare.
2199         * rtlanal.c (simplify_subreg_regno): New function, split out from...
2200         * simplify-rtx.c (simplify_subreg): ...here.
2201         * reload.c (find_reloads): Use simplify_subreg_regno instead of
2202         subreg_offset_representable_p.
2203
2204 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2205
2206         PR c/30949
2207         * c-typeck.c (convert_for_assignment): Give a note describing what
2208         was passed and what was expected.
2209
2210 2008-08-28  Joey Ye  <joey.ye@intel.com>
2211
2212         * doc/extend.texi: Document AVX built-in functions.
2213         * doc/invoke.texi: Document -mavx.
2214
2215 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
2216             Joey Ye  <joey.ye@intel.com>
2217             Xuepeng Guo  <xuepeng.guo@intel.com>
2218
2219         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
2220
2221         * config/i386/cpuid.h (bit_FMA): New.
2222         (bit_XSAVE): Likewise.
2223         (bit_OSXSAVE): Likewise.
2224         (bit_AVX): Likewise.
2225
2226         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
2227         define.  Use ASM_OUTPUT_AVX_PREFIX.
2228
2229         * config/i386/gmmintrin.h: New.
2230
2231         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
2232         (OPTION_MASK_ISA_AVX_SET): New.
2233         (OPTION_MASK_ISA_FMA_SET): Likewise.
2234         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
2235         (OPTION_MASK_ISA_FMA_SET): Likewise.
2236         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
2237         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
2238         (pta_flags): Add PTA_AVX and PTA_FMA.
2239         (override_options): Handle PTA_AVX and PTA_FMA.
2240         (init_cumulative_args): Handle warn_avx.
2241         (classify_argument): Return 0 for COImode and OImode.  Return
2242         1 and X86_64_AVX_CLASS for 256bit vector types.
2243         (examine_argument): Handle X86_64_AVX_CLASS.
2244         (construct_container): Likewise.
2245         (function_arg_advance_32): Pass OImode and 256bit vector types
2246         in AVX register.
2247         (function_arg_advance_64): Take a new argument to indicate if a
2248         parameter is named.  Handle 256bit vector types.  Return
2249         immediately for unnamed 256bit vector mode parameters.
2250         (function_arg_advance): Updated.
2251         (function_arg_32): Add comments for TImode.  Handle OImode
2252         and 256bit vector types.
2253         (function_arg_64): Take a new argument to indicate if a
2254         parameter is named.  Handle 256bit vector types.  Return NULL
2255         for unnamed 256bit vector mode parameters.
2256         (function_arg): Updated.
2257         (setup_incoming_varargs_64): Support
2258         AVX encoding for *sse_prologue_save_insn.
2259         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
2260         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
2261         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
2262         enabled, otherwise return -3.
2263         (standard_sse_constant_opcode): Handle AVX and 256bit vector
2264         modes.
2265         (print_reg): Support AVX registers.  Handle 'x' and 't'.
2266         Handle 'd' to duplicate the operand.
2267         (print_operand): Likewise.  Also support AVX vector compare
2268         instructions.
2269         (output_387_binary_op): Support AVX.
2270         (output_fp_compare): Likewise.
2271         (ix86_expand_vector_move_misalign): Likewise.
2272         (ix86_attr_length_vex_default): New.
2273         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2274         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2275         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2276         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2277         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
2278         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2279         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
2280         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
2281         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
2282         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
2283         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
2284         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
2285         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
2286         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
2287         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2288         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
2289         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
2290         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2291         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
2292         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
2293         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2294         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2295         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2296         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
2297         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
2298         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
2299         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
2300         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2301         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
2302         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
2303         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
2304         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
2305         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
2306         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2307         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2308         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2309         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
2310         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
2311         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
2312         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
2313         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
2314         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
2315         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
2316         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
2317         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
2318         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
2319         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2320         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2321         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2322         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2323         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2324         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2325         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2326         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2327         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2328         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2329         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2330         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2331         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2332         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2333         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2334         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2335         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2336         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
2337         and IX86_BUILTIN_MOVMSKPS256,
2338         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
2339         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
2340         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
2341         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
2342         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
2343         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
2344         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
2345         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
2346         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
2347         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
2348         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
2349         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
2350         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
2351         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
2352         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
2353         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
2354         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
2355         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
2356         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
2357         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
2358         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
2359         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
2360         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
2361         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
2362         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
2363         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
2364         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
2365         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
2366         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2367         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2368         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
2369         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
2370         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
2371         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
2372         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
2373         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
2374         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
2375         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
2376         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2377         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2378         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2379         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2380         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
2381         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
2382         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
2383         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
2384         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
2385         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
2386         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
2387         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
2388         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
2389         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
2390         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2391         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
2392         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2393         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
2394         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2395         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2396         IX86_BUILTIN_CMPPS,
2397         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
2398         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
2399         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
2400         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2401         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2402         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2403         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
2404         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2405         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
2406         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2407         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
2408         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2409         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
2410         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
2411         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
2412         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
2413         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2414         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2415         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2416         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2417         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2418         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2419         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2420         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2421         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2422         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2423         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2424         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2425         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2426         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2427         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2428         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2429         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2430         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
2431         IX86_BUILTIN_MOVMSKPS256.
2432         (ix86_init_mmx_sse_builtins): Support AVX builtins.
2433         (ix86_expand_args_builtin): Likewise.
2434         (ix86_expand_special_args_builtin): Likewise.
2435         (ix86_hard_regno_mode_ok): Handle AVX modes.
2436         (ix86_expand_vector_init_duplicate): Likewise.
2437         (ix86_expand_vector_init_one_nonzero): Likewise.
2438         (ix86_expand_vector_init_one_var): Likewise.
2439         (ix86_expand_vector_init_concat): Likewise.
2440         (ix86_expand_vector_init_general): Likewise.
2441         (ix86_expand_vector_set): Likewise.
2442         (ix86_vector_mode_supported_p): Likewise.
2443         (x86_extended_reg_mentioned_p): Check INSN_P before using
2444         PATTERN.
2445
2446         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2447         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2448
2449         * config/i386/i386.h (TARGET_AVX): New.
2450         (TARGET_FMA): Likewise.
2451         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
2452         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
2453         (VALID_AVX256_REG_MODE): New.
2454         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2455         (AVX_FLOAT_MODE_P): Likewise.
2456         (AVX128_VEC_FLOAT_MODE_P): Likewise.
2457         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2458         (AVX_VEC_FLOAT_MODE_P): Likewise.
2459         (ASM_OUTPUT_AVX_PREFIX): Likewise.
2460         (ASM_OUTPUT_OPCODE): Likewise.
2461         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
2462         support.
2463         (SSE_REG_MODE_P): Allow 256bit vector modes.
2464         (ix86_args): Add a warn_avx field.
2465
2466         * config/i386/i386.md (UNSPEC_PCMP): New.
2467         (UNSPEC_VPERMIL): Likewise.
2468         (UNSPEC_VPERMIL2): Likewise.
2469         (UNSPEC_VPERMIL2F128): Likewise.
2470         (UNSPEC_MASKLOAD): Likewise.
2471         (UNSPEC_MASKSTORE): Likewise.
2472         (UNSPEC_CAST): Likewise.
2473         (UNSPEC_VTESTP): Likewise.
2474         (UNSPECV_VZEROALL): Likewise.
2475         (UNSPECV_VZEROUPPER): Likewise.
2476         (XMM0_REG): Likewise.
2477         (XMM1_REG): Likewise.
2478         (XMM2_REG): Likewise.
2479         (XMM3_REG): Likewise.
2480         (XMM4_REG): Likewise.
2481         (XMM5_REG): Likewise.
2482         (XMM6_REG): Likewise.
2483         (XMM8_REG): Likewise.
2484         (XMM9_REG): Likewise.
2485         (XMM10_REG): Likewise.
2486         (XMM11_REG): Likewise.
2487         (XMM12_REG): Likewise.
2488         (XMM13_REG): Likewise.
2489         (XMM14_REG): Likewise.
2490         (XMM15_REG): Likewise.
2491         (prefix): Likewise.
2492         (prefix_vex_imm8): Likewise.
2493         (prefix_vex_w): Likewise.
2494         (length_vex): Likewise.
2495         (maxmin): Likewise.
2496         (movoi): Likewise.
2497         (*avx_ashlti3): Likewise.
2498         (*avx_lshrti3): Likewise.
2499         (*avx_setcc<mode>): Likewise.
2500         (*fop_<mode>_comm_mixed_avx): Likewise.
2501         (*fop_<mode>_comm_avx): Likewise.
2502         (*fop_<mode>_1_mixed_avx): Likewise.
2503         (*fop_<mode>_1_avx): Likewise.
2504         (*avx_<code><mode>3): Likewise.
2505         (*avx_ieee_smin<mode>3): Likewise.
2506         (*avx_ieee_smax<mode>3): Likewise.
2507         (mode): Add OI, V8SF and V4DF.
2508         (length): Support VEX prefix.
2509         (*cmpfp_i_mixed): Set prefix attribute.
2510         (*cmpfp_i_sse): Likewise.
2511         (*cmpfp_iu_mixed): Likewise.
2512         (*cmpfp_iu_sse): Likewise.
2513         (*movsi_1): Support AVX.
2514         (*movdi_2): Likewise.
2515         (*movdi_1_rex64): Likewise.
2516         (*movti_internal): Likewise.
2517         (*movti_rex64): Likewise.
2518         (*movsf_1): Likewise.
2519         (*movdf_nointeger): Likewise.
2520         (*movdf_integer_rex64): Likewise.
2521         (*movtf_internal): Likewise.
2522         (zero_extendsidi2_32): Likewise.
2523         (zero_extendsidi2_rex64): Likewise.
2524         (*extendsfdf2_mixed): Likewise.
2525         (*extendsfdf2_sse): Likewise.
2526         (*truncdfsf_fast_mixed): Likewise.
2527         (*truncdfsf_fast_sse): Likewise.
2528         (*truncdfsf_mixed): Likewise.
2529         (fix_trunc<mode>di_sse): Likewise.
2530         (fix_trunc<mode>si_sse): Likewise.
2531         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
2532         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
2533         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
2534         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
2535         (*rcpsf2_sse): Likewise.
2536         (*rsqrtsf2_sse): Likewise.
2537         (*sqrt<mode>2_sse): Likewise.
2538         (sse4_1_round<mode>2): Likewise.
2539         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
2540         Support AVX.  Set length attribute properly for AVX.
2541
2542         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
2543         (VECTOR_MODES (FLOAT, 32)): Likewise.
2544         (VECTOR_MODE (INT, DI, 8)): Likewise.
2545         (VECTOR_MODE (INT, HI, 32)): Likewise.
2546         (VECTOR_MODE (INT, QI, 64)): Likewise.
2547         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
2548         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
2549         (VECTOR_MODE (INT, DI, 4)): Removed.
2550         (VECTOR_MODE (INT, SI, 8)): Likewise.
2551         (VECTOR_MODE (INT, HI, 16)): Likewise.
2552         (VECTOR_MODE (INT, QI, 32)): Likewise.
2553         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
2554         (INT_MODE (OI, 32)): Likewise.
2555
2556         * config/i386/i386.opt (mavx): New.
2557         (mfma): Likewise.
2558
2559         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2560
2561         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
2562         (*mov<mode>_internal_avx): New.
2563         (*movv2sf_internal_rex64_avx): Likewise.
2564         (*movv2sf_internal_avx): Likewise.
2565
2566         * config/i386/predicates.md (const_4_to_5_operand): New.
2567         (const_6_to_7_operand): Likewise.
2568         (const_8_to_11_operand): Likewise.
2569         (const_12_to_15_operand): Likewise.
2570         (avx_comparison_float_operator): Likewise.
2571
2572         * config/i386/sse.md (AVX256MODEI): New.
2573         (AVX256MODE): Likewise.
2574         (AVXMODEQI): Likewise.
2575         (AVXMODE): Likewise.
2576         (AVX256MODEF2P): Likewise.
2577         (AVX256MODE2P): Likewise.
2578         (AVX256MODE4P): Likewise.
2579         (AVX256MODE8P): Likewise.
2580         (AVXMODEF2P): Likewise.
2581         (AVXMODEF4P): Likewise.
2582         (AVXMODEDCVTDQ2PS): Likewise.
2583         (AVXMODEDCVTPS2DQ): Likewise.
2584         (avxvecmode): Likewise.
2585         (avxvecpsmode): Likewise.
2586         (avxhalfvecmode): Likewise.
2587         (avxscalarmode): Likewise.
2588         (avxcvtvecmode): Likewise.
2589         (avxpermvecmode): Likewise.
2590         (avxmodesuffixf2c): Likewise.
2591         (avxmodesuffixp): Likewise.
2592         (avxmodesuffixs): Likewise.
2593         (avxmodesuffix): Likewise.
2594         (vpermilbits): Likewise.
2595         (pinsrbits): Likewise.
2596         (mov<mode>): Likewise.
2597         (*mov<mode>_internal): Likewise.
2598         (push<mode>1): Likewise.
2599         (movmisalign<mode>): Likewise.
2600         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2601         (avx_movdqu<avxmodesuffix>): Likewise.
2602         (avx_lddqu<avxmodesuffix>): Likewise.
2603         (<plusminus_insn><mode>3): Likewise.
2604         (*avx_<plusminus_insn><mode>3): Likewise.
2605         (*avx_vm<plusminus_insn><mode>3): Likewise.
2606         (mul<mode>3): Likewise.
2607         (*avx_mul<mode>3): Likewise.
2608         (*avx_vmmul<mode>3): Likewise.
2609         (divv8sf3): Likewise.
2610         (divv4df3): Likewise.
2611         (avx_div<mode>3): Likewise.
2612         (*avx_div<mode>3): Likewise.
2613         (*avx_vmdiv<mode>3): Likewise.
2614         (avx_rcpv8sf2): Likewise.
2615         (*avx_vmrcpv4sf2): Likewise.
2616         (sqrtv8sf2): Likewise.
2617         (avx_sqrtv8sf2): Likewise.
2618         (*avx_vmsqrt<mode>2): Likewise.
2619         (rsqrtv8sf2): Likewise.
2620         (avx_rsqrtv8sf2): Likewise.
2621         (*avx_vmrsqrtv4sf2): Likewise.
2622         (<code><mode>3): Likewise.
2623         (*avx_<code><mode>3_finite): Likewise.
2624         (*avx_<code><mode>3): Likewise.
2625         (*avx_vm<code><mode>3): Likewise.
2626         (*avx_ieee_smin<mode>3): Likewise.
2627         (*avx_ieee_smax<mode>3): Likewise.
2628         (avx_addsubv8sf3): Likewise.
2629         (avx_addsubv4df3): Likewise.
2630         (*avx_addsubv4sf3): Likewise.
2631         (*avx_addsubv2df3): Likewise.
2632         (avx_h<plusminus_insn>v4df3): Likewise.
2633         (avx_h<plusminus_insn>v8sf3): Likewise.
2634         (*avx_h<plusminus_insn>v4sf3): Likewise.
2635         (*avx_h<plusminus_insn>v2df3): Likewise.
2636         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
2637         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
2638         (*avx_maskcmp<mode>3): Likewise.
2639         (avx_nand<mode>3): Likewise.
2640         (*avx_<code><mode>3): Likewise.
2641         (*avx_nand<mode>3): Likewise.
2642         (*avx_<code><mode>3): Likewise.
2643         (*avx_cvtsi2ss): Likewise.
2644         (*avx_cvtsi2ssq): Likewise.
2645         (*avx_cvtsi2sd): Likewise.
2646         (*avx_cvtsi2sdq): Likewise.
2647         (*avx_cvtsd2ss): Likewise.
2648         (avx_cvtss2sd): Likewise.
2649         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
2650         (avx_cvtps2dq<avxmodesuffix>): Likewise.
2651         (avx_cvttps2dq<avxmodesuffix>): Likewise.
2652         (*avx_cvtsi2sd): Likewise.
2653         (*avx_cvtsi2sdq): Likewise.
2654         (avx_cvtdq2pd256): Likewise.
2655         (avx_cvtpd2dq256): Likewise.
2656         (avx_cvttpd2dq256): Likewise.
2657         (*avx_cvtsd2ss): Likewise.
2658         (*avx_cvtss2sd): Likewise.
2659         (avx_cvtpd2ps256): Likewise.
2660         (avx_cvtps2pd256): Likewise.
2661         (*avx_movhlps): Likewise.
2662         (*avx_movlhps): Likewise.
2663         (avx_unpckhps256): Likewise.
2664         (*avx_unpckhps): Likewise.
2665         (avx_unpcklps256): Likewise.
2666         (*avx_unpcklps): Likewise.
2667         (avx_movshdup256): Likewise.
2668         (avx_movsldup256): Likewise.
2669         (avx_shufps256): Likewise.
2670         (avx_shufps256_1): Likewise.
2671         (*avx_shufps_<mode>): Likewise.
2672         (*avx_loadhps): Likewise.
2673         (*avx_storelps): Likewise.
2674         (*avx_loadlps): Likewise.
2675         (*avx_movss): Likewise.
2676         (*vec_dupv4sf_avx): Likewise.
2677         (*vec_concatv2sf_avx): Likewise.
2678         (*vec_concatv4sf_avx): Likewise.
2679         (*vec_setv4sf_0_avx): Likewise.
2680         (*vec_setv4sf_avx): Likewise.
2681         (*avx_insertps): Likewise.
2682         (avx_vextractf128<mode>): Likewise.
2683         (vec_extract_lo_<mode>): Likewise.
2684         (vec_extract_hi_<mode>): Likewise.
2685         (vec_extract_lo_<mode>): Likewise.
2686         (vec_extract_hi_<mode>): Likewise.
2687         (vec_extract_lo_v16hi): Likewise.
2688         (vec_extract_hi_v16hi): Likewise.
2689         (vec_extract_lo_v32qi): Likewise.
2690         (vec_extract_hi_v32qi): Likewise.
2691         (avx_unpckhpd256): Likewise.
2692         (*avx_unpckhpd): Likewise.
2693         (avx_movddup256): Likewise.
2694         (*avx_movddup): Likewise.
2695         (avx_unpcklpd256): Likewise.
2696         (*avx_unpcklpd): Likewise.
2697         (avx_shufpd256): Likewise.
2698         (avx_shufpd256_1): Likewise.
2699         (*avx_punpckhqdq): Likewise.
2700         (*avx_punpcklqdq): Likewise.
2701         (*avx_shufpd_<mode>): Likewise.
2702         (*avx_storehpd): Likewise.
2703         (*avx_loadhpd): Likewise.
2704         (*avx_loadlpd): Likewise.
2705         (*avx_movsd): Likewise.
2706         (*vec_concatv2df_avx): Likewise.
2707         (*avx_<plusminus_insn><mode>3): Likewise.
2708         (*avx_<plusminus_insn><mode>3): Likewise.
2709         (*avx_mulv8hi3): Likewise.
2710         (*avxv8hi3_highpart): Likewise.
2711         (*avx_umulv8hi3_highpart): Likewise.
2712         (*avx_umulv2siv2di3): Likewise.
2713         (*avx_mulv2siv2di3): Likewise.
2714         (*avx_pmaddwd): Likewise.
2715         (*avx_mulv4si3): Likewise.
2716         (*avx_ashr<mode>3): Likewise.
2717         (*avx_lshr<mode>3): Likewise.
2718         (*avx_ashl<mode>3): Likewise.
2719         (*avx_<code><mode>3): Likewise.
2720         (*avx_eq<mode>3): Likewise.
2721         (*avx_gt<mode>3): Likewise.
2722         (*avx_nand<mode>3): Likewise.
2723         (*avx_nand<mode>3): Likewise.
2724         (*avx_<code><mode>3): Likewise.
2725         (*avx_<code><mode>3): Likewise.
2726         (*avx_packsswb): Likewise.
2727         (*avx_packssdw): Likewise.
2728         (*avx_packuswb): Likewise.
2729         (*avx_punpckhbw): Likewise.
2730         (*avx_punpcklbw): Likewise.
2731         (*avx_punpckhwd): Likewise.
2732         (*avx_punpcklwd): Likewise.
2733         (*avx_punpckhdq): Likewise.
2734         (*avx_punpckldq): Likewise.
2735         (*avx_pinsr<avxmodesuffixs>): Likewise.
2736         (*avx_pinsrq): Likewise.
2737         (*avx_loadld): Likewise.
2738         (*vec_extractv2di_1_rex64_avx): Likewise.
2739         (*vec_extractv2di_1_avx): Likewise.
2740         (*vec_dupv2di_avx): Likewise.
2741         (*vec_concatv2si_avx): Likewise.
2742         (*vec_concatv4si_1_avx): Likewise.
2743         (*vec_concatv2di_avx): Likewise.
2744         (*vec_concatv2di_rex64_avx): Likewise.
2745         (*avx_uavgv16qi3): Likewise.
2746         (*avx_uavgv8hi3): Likewise.
2747         (*avx_psadbw): Likewise.
2748         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
2749         (*avx_phaddwv8hi3): Likewise.
2750         (*avx_phadddv4si3): Likewise.
2751         (*avx_phaddswv8hi3): Likewise.
2752         (*avx_phsubwv8hi3): Likewise.
2753         (*avx_phsubdv4si3): Likewise.
2754         (*avx_phsubswv8hi3): Likewise.
2755         (*avx_pmaddubsw128): Likewise.
2756         (*avx_pmulhrswv8hi3): Likewise.
2757         (*avx_pshufbv16qi3): Likewise.
2758         (*avx_psign<mode>3): Likewise.
2759         (*avx_palignrti): Likewise.
2760         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2761         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2762         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2763         (*avx_mpsadbw): Likewise.
2764         (*avx_packusdw): Likewise.
2765         (*avx_pblendvb): Likewise.
2766         (*avx_pblendw): Likewise.
2767         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2768         (avx_ptest256): Likewise.
2769         (avx_roundp<avxmodesuffixf2c>256): Likewise.
2770         (*avx_rounds<ssemodesuffixf2c>): Likewise.
2771         (*avx_aesenc): Likewise.
2772         (*avx_aesenclast): Likewise.
2773         (*avx_aesdec): Likewise.
2774         (*avx_aesdeclast): Likewise.
2775         (avx_vzeroupper): Likewise.
2776         (avx_vzeroupper_rex64): Likewise.
2777         (avx_vpermil<mode>): Likewise.
2778         (avx_vpermilvar<mode>3): Likewise.
2779         (avx_vpermil2<mode>3): Likewise.
2780         (avx_vperm2f128<mode>3): Likewise.
2781         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2782         (avx_vbroadcastss256): Likewise.
2783         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
2784         (avx_vinsertf128<mode>): Likewise.
2785         (vec_set_lo_<mode>): Likewise.
2786         (vec_set_hi_<mode>): Likewise.
2787         (vec_set_lo_<mode>): Likewise.
2788         (vec_set_hi_<mode>): Likewise.
2789         (vec_set_lo_v16hi): Likewise.
2790         (vec_set_hi_v16hi): Likewise.
2791         (vec_set_lo_v32qi): Likewise.
2792         (vec_set_hi_v32qi): Likewise.
2793         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2794         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2795         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
2796         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
2797         (vec_init<mode>): Likewise.
2798         (*vec_concat<mode>_avx): Likewise.
2799         (blendbits): Support V8SF and V4DF.
2800         (sse2_movq128): Support AVX.
2801         (<sse>_movnt<mode>): Likewise.
2802         (sse2_movntv2di): Likewise.
2803         (sse_rcpv4sf2): Likewise.
2804         (sse_sqrtv4sf2): Likewise.
2805         (sse_rsqrtv4sf2): Likewise.
2806         (<sse>_comi): Likewise.
2807         (<sse>_ucomi): Likewise.
2808         (sse_cvtss2si): Likewise.
2809         (sse_cvtss2si_2): Likewise.
2810         (sse_cvtss2siq): Likewise.
2811         (sse_cvtss2siq_2): Likewise.
2812         (sse_cvttss2si): Likewise.
2813         (sse_cvttss2siq): Likewise.
2814         (sse2_cvtsd2si): Likewise.
2815         (sse2_cvtsd2si_2): Likewise.
2816         (sse2_cvtsd2siq): Likewise.
2817         (sse2_cvtsd2siq_2): Likewise.
2818         (sse2_cvttsd2si): Likewise.
2819         (sse2_cvttsd2siq): Likewise.
2820         (sse2_cvtdq2pd): Likewise.
2821         (*sse2_cvtpd2dq): Likewise.
2822         (*sse2_cvttpd2dq): Likewise.
2823         (*sse2_cvtpd2ps): Likewise.
2824         (sse2_cvtps2pd): Likewise.
2825         (sse3_movshdup): Likewise.
2826         (sse3_movsldup): Likewise.
2827         (sse_storehps): Likewise.
2828         (*sse4_1_extractps): Likewise.
2829         (sse2_storelpd): Likewise.
2830         (vec_dupv2df_sse3): Likewise.
2831         (*vec_concatv2df_sse3): Likewise.
2832         (*sse4_1_pextrb): Likewise.
2833         (*sse4_1_pextrb_memory): Likewise.
2834         (*sse2_pextrw): Likewise.
2835         (*sse4_1_pextrw_memory): Likewise.
2836         (*sse4_1_pextrd): Likewise.
2837         (*sse4_1_pextrq): Likewise.
2838         (sse2_pshufd_1): Likewise.
2839         (sse2_pshuflw_1): Likewise.
2840         (sse2_pshufhw_1): Likewise.
2841         (*sse2_storeq_rex64): Likewise.
2842         (*vec_dupv4si): Likewise.
2843         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
2844         (sse2_pmovmskb): Likewise.
2845         (*sse2_maskmovdqu): Likewise.
2846         (*sse2_maskmovdqu_rex64): Likewise.
2847         (sse_ldmxcsr): Likewise.
2848         (sse_stmxcsr): Likewise.
2849         (abs<mode>2): Likewise.
2850         (sse4_1_movntdqa): Likewise.
2851         (sse4_1_phminposuw): Likewise.
2852         (sse4_1_extendv8qiv8hi2): Likewise.
2853         (*sse4_1_extendv8qiv8hi2): Likewise.
2854         (sse4_1_extendv4qiv4si2): Likewise.
2855         (*sse4_1_extendv4qiv4si2): Likewise.
2856         (sse4_1_extendv2qiv2di2): Likewise.
2857         (*sse4_1_extendv2qiv2di2): Likewise.
2858         (sse4_1_extendv4hiv4si2): Likewise.
2859         (*sse4_1_extendv4hiv4si2): Likewise.
2860         (sse4_1_extendv2hiv2di2): Likewise.
2861         (*sse4_1_extendv2hiv2di2): Likewise.
2862         (sse4_1_extendv2siv2di2): Likewise.
2863         (*sse4_1_extendv2siv2di2): Likewise.
2864         (sse4_1_zero_extendv8qiv8hi2): Likewise.
2865         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2866         (sse4_1_zero_extendv4qiv4si2): Likewise.
2867         (*sse4_1_zero_extendv4qiv4si2): Likewise.
2868         (sse4_1_zero_extendv2qiv2di2): Likewise.
2869         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2870         (sse4_1_zero_extendv4hiv4si2): Likewise.
2871         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2872         (sse4_1_zero_extendv2hiv2di2): Likewise.
2873         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2874         (sse4_1_zero_extendv2siv2di2): Likewise.
2875         (*sse4_1_zero_extendv2siv2di2): Likewise.
2876         (sse4_1_ptest): Likewise.
2877         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
2878         (sse4_2_pcmpestri): Likewise.
2879         (sse4_2_pcmpestrm): Likewise.
2880         (sse4_2_pcmpistri): Likewise.
2881         (sse4_2_pcmpistrm): Likewise.
2882         (aesimc): Likewise.
2883         (aeskeygenassist): Likewise.
2884
2885 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
2886
2887         * config/i386/predicates.md (vzeroall_operation): New.
2888
2889         * config/i386/sse.md (avx_vzeroall): New.
2890         (*avx_vzeroall): Likewise.
2891
2892 2008-08-28  Paul Brook  <paul@codesourcery.com>
2893             Mark Shinwell  <shinwell@codesourcery.com>
2894             Richard Earnshaw  <richard.earnshaw@arm.com>
2895
2896         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
2897         (TARGET_MIN_ANCHOR_OFFSET): New.
2898         (arm_override_options): Set correct anchor ranges for Thumb-1
2899         and Thumb-2 if required.
2900         (legitimize_pic_address): Handle case involving a TLS symbol
2901         reference with an addend.
2902         (arm_optimization_options): Enable section anchors at -O1 and
2903         above.
2904         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
2905         * config/arm/arm-protos.h (arm_optimization_options): New.
2906
2907 2008-08-28  Nick Clifton  <nickc@redhat.com>
2908
2909         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
2910         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
2911         attribute.
2912
2913         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
2914         * config/v850/v850.md (return): Remove frame size restriction.
2915
2916         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
2917
2918         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
2919
2920         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
2921
2922         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
2923
2924 2008-08-28  Paul Brook  <paul@codesourcery.com>
2925
2926         * config/arm/vfp11.md: Update license notice.
2927         * config/arm/cortex-r4.md: Ditto.
2928
2929 2008-08-28  Richard Guenther  <rguenther@suse.de>
2930
2931         PR tree-optimization/37207
2932         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
2933         tuplification bug.
2934
2935 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
2936
2937         PR c++/36741
2938         * tree.c (int_fits_type_p): Don't forget unsigned integers
2939           of type sizetype which higher end word equals -1.
2940
2941 2008-08-28  Ira Rosen  <irar@il.ibm.com>
2942
2943         * target.h (struct vectorize): Add new target builtin.
2944         * tree-vectorizer.c (destroy_loop_vec_info): Call
2945         vect_free_slp_instance instead of vect_free_slp_node.
2946         * tree-vectorizer.h (enum slp_load_perm_type): New.
2947         (struct _slp_instance): Add new fields.
2948         (SLP_INSTANCE_LOAD_PERMUTATION): New.
2949         (SLP_INSTANCE_LOADS): New.
2950         (vect_free_slp_tree): Remove.
2951         (vect_free_slp_instance): Declare.
2952         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
2953         (vectorizable_load): Add argument.
2954         (vect_transform_slp_perm_load): New.
2955         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
2956         vectorizable_load.
2957         (vect_get_place_in_interleaving_chain): New function.
2958         (vect_free_slp_tree): Make static.
2959         (vect_free_slp_instance): New function.
2960         (vect_build_slp_tree): Add new arguments. Allow load permutations and
2961         collect the load location in the interleaving chain.
2962         (vect_supported_slp_permutation_p): New function.
2963         (vect_supported_load_permutation_p): Likewise.
2964         (vect_analyze_slp_instance): In case of loads permutation, call
2965         vect_supported_load_permutation_p to check that the permutation is
2966         supported.
2967         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
2968         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
2969         (vect_create_mask_and_perm): New function.
2970         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
2971         (vectorizable_load): Add an argument. Don't keep the created vectors
2972         statements in the node if permutation is required. Call
2973         vect_transform_slp_perm_load to generate the permutation.
2974         (vect_transform_stmt): Add new argument. Call vectorizable_load with
2975         additional argument.
2976         (vect_schedule_slp_instance): In case of loads permutation, allocate
2977         vectorized statements structure for all the related SLP nodes. Call
2978         vect_transform_stmt with addditional argument.
2979         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
2980         * config/spu/spu.c (spu_builtin_vec_perm): New.
2981         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2982         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
2983         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
2984         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2985
2986 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
2987
2988         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
2989         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
2990         __gthread_cond_signal, __gthread_cond_timedwait,
2991         __gthread_cond_timedwait_recursive): New functions.
2992         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
2993         Likewise.
2994         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
2995         thread interfaces.
2996
2997 2008-08-28  Richard Guenther  <rguenther@suse.de>
2998
2999         PR middle-end/37005
3000         * fold-const.c (maybe_canonicalize_comparison_1): Require
3001         undefined overflow only for canonicalizing A +- CST cmp CST.
3002         Make sure to not generate new constants that are not inside
3003         their TYPE_MIN/MAX_VALUE range.
3004         (maybe_canonicalize_comparison): Remove undefined overflow
3005         checking from here.
3006         (fold_binary): Remove now duplicate folding.
3007
3008 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3009
3010         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
3011         use not updated in the last change.
3012
3013 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3014
3015         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
3016         (IRA_COVER_CLASSES): Add FPUL_REGS.
3017
3018 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3019
3020         PR 37217
3021         * c-common.c (conversion_warning): Check for null operands.
3022
3023 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3024
3025         PR c/31673
3026         * c-decl.c (check_for_loop_decls): Improve error message. Give
3027         hint.
3028
3029 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3030
3031         PR c/37186
3032         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
3033         (convert_for_assignment): Pass corrent OPT_W* parameter to
3034         WARN_FOR_ASSIGNMENT.
3035
3036 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
3037
3038         PR c++/35321
3039         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
3040
3041 2008-08-27  Paul Brook  <paul@codesourcery.com>
3042
3043         * config.gcc: Loosen checks for arm uclinux eabi targets.
3044
3045 2008-08-27  Paul Brook  <paul@codesourcery.com>
3046
3047         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
3048         _clzsi2.
3049         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
3050
3051 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
3052
3053         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
3054         the enumerators of an ENUMERAL_TYPE.
3055         * dbxout.c (dbxout_type): Ditto.
3056
3057 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3058
3059         PR rtl-opt/37219
3060         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
3061         (fwprop_addr): Check that the loop_father is not the outer loop.
3062
3063 2008-08-26  Paul Brook  <paul@codesourcery.com>
3064
3065         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
3066         Remove documentation entry for fmul type.
3067         Use fmuls to annotate single-precision multiplication patterns,
3068         fmuld to annotate double-precision multiplication patterns,
3069         fmacs to annotate single-precision multiply-accumulate patterns
3070         and fmacd to annotate double-precision multiply-accumulate patterns.
3071         * config/arm/vfp11.md: Update reservations accordingly.
3072         * config/arm/arm.md: Note that certain values of the "type"
3073         attribute are documented in vfp.md.
3074         * config/arm/arm1020e.md: Remove out of date duplicate comment.
3075         (v10_cvt): Use new fmul types.
3076
3077 2008-08-26  Paul Brook   <paul@codesourcery.com>
3078
3079         * config/arm/vfp.md: Move pipeline description for VFP11 to...
3080         * config/arm/vfp11.md: ...here.  New.
3081         * config/arm/arm.md: Include vfp11.md.
3082
3083 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
3084
3085         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
3086         parameter to inform call.
3087
3088 2008-08-26  Jeff Law  <law@redhat.com>
3089
3090         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
3091         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
3092         preferred class when copying a constant into a partial word register.
3093
3094 2008-08-26  Ben Elliston  <bje@au.ibm.com>
3095
3096         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
3097         * cp/typeck.c: Likewise.
3098         * cp/tree.c: Likewise.
3099         * gimple-low.c: Likewise.
3100         * jump.c: Likewise.
3101
3102 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
3103
3104         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
3105         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
3106
3107         * doc/passes.texi: Describe IRA.
3108
3109         * doc/tm.texi (IRA_COVER_CLASSES,
3110         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
3111
3112         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
3113         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
3114         -fira-propagate-cost, -fno-ira-share-save-slots,
3115         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
3116
3117         * flags.h (ira_algorithm): New enumeration.
3118         (flag_ira_algorithm, flag_ira_verbose): New external variable
3119         declarations.
3120
3121         * postreload.c (gate_handle_postreload): Don't do post reload
3122         optimizations unless the reload is completed.
3123
3124         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
3125         IRA.
3126
3127         * tree-pass.h (pass_ira): New external variable declaration.
3128
3129         * reload.h: Add 2008 to the Copyright.
3130
3131         * cfgloopanal.c: Include params.h.
3132         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
3133         mode.
3134
3135         * params.h (IRA_MAX_LOOPS_NUM): New macro.
3136
3137         * toplev.c (ira.h): New include.
3138         (flag_ira_algorithm, flag_ira_verbose): New external variables.
3139         (backend_init_target): Call ira_init.
3140         (backend_init): Call ira_init_once.
3141         (finalize): Call finish_ira_once.
3142
3143         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
3144         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
3145         external variables.
3146
3147         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
3148         may_move_out_cost): New external variable declarations.
3149         (move_table): New typedef.
3150
3151         * caller-save.c: Include headers output.h and ira.h.
3152         (no_caller_save_reg_set): New global variable.
3153         (save_slots_num, save_slots): New variables.
3154         (reg_save_code, reg_restore_code, add_stored_regs): Add
3155         prototypes.
3156         (init_caller_save): Set up no_caller_save_reg_set.
3157         (init_save_areas): Reset save_slots_num.
3158         (saved_hard_reg): New structure.
3159         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
3160         (initiate_saved_hard_regs, new_saved_hard_reg,
3161         finish_saved_hard_regs, saved_hard_reg_compare_func): New
3162         functions.
3163         (setup_save_areas): Add code for sharing stack slots.
3164         (all_blocks): New variable.
3165         (save_call_clobbered_regs): Process pseudo-register too.
3166         (mark_set_regs): Process pseudo-register too.
3167         (insert_one_insn): Put the insn after bb note in a empty basic
3168         block.  Add insn check.
3169
3170         * global.c (eliminable_regset): Make it external.
3171         (mark_elimination): Use DF_LR_IN for IRA.
3172         (pseudo_for_reload_consideration_p): New.
3173         (build_insn_chain): Make it external.  Don't ignore spilled
3174         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
3175         (gate_handle_global_alloc): New function.
3176         (pass_global_alloc): Add the gate function.
3177
3178         * opts.c (decode_options): Set up flag_ira.  Print the warning for
3179         -fira.
3180         (common_handle_option): Process -fira-algorithm and -fira-verbose.
3181
3182         * timevar.def (TV_IRA, TV_RELOAD): New passes.
3183
3184         * regmove.c (regmove_optimize): Don't do replacement of output for
3185         IRA.
3186
3187         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
3188         New external variable declarations.
3189
3190         * local-alloc.c (update_equiv_regs): Make it external.  Return
3191         true if jump label rebuilding should be done.  Rescan new_insn for
3192         notes.
3193         (gate_handle_local_alloc): New function.
3194         (pass_local_alloc): Add the gate function.
3195
3196         * alias.c (value_addr_p, stack_addr_p): New functions.
3197         (nonoverlapping_memrefs_p): Use them for IRA.
3198
3199         * common.opt (fira, fira-algorithm, fira-coalesce,
3200         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
3201         fira-verbose): New options.
3202
3203         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
3204         move_cost, may_move_in_cost, may_move_out_cost): Make the
3205         variables external.
3206         (move_table): Remove typedef.
3207         (init_move_cost): Make it external.
3208         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
3209         functions.
3210
3211         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
3212         setup_reg_classes): New function prototypes.
3213         (eliminable_regset): New external variable declaration.
3214         (build_insn_chain, update_equiv_regs): New function prototypes.
3215
3216         * Makefile.in (IRA_INT_H): New definition.
3217         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
3218         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
3219         (reload1.o, toplev.o): Add dependence on ira.h.
3220         (cfgloopanal.o): Add PARAMS_H.
3221         (caller-save.o): Add dependence on output.h and ira.h.
3222         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
3223         ira-emit.o, ira-lives.o): New entries.
3224
3225         * passes.c (pass_ira): New pass.
3226
3227         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
3228
3229         * reload1.c (ira.h): Include the header.
3230         (changed_allocation_pseudos): New bitmap.
3231         (init_reload): Initiate the bitmap.
3232         (compute_use_by_pseudos): Permits spilled registers in FROM.
3233         (temp_pseudo_reg_arr): New variable.
3234         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
3235         IRA.  Call alter_reg with the additional parameter.  Don't clear
3236         spilled_pseudos for IRA.  Restore original insn chain for IRA.
3237         Clear changed_allocation_pseudos at the end of reload.
3238         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
3239         (hard_regno_to_pseudo_regno): New variable.
3240         (count_pseudo): Check spilled pseudos.  Set up
3241         hard_regno_to_pseudo_regno.
3242         (count_spilled_pseudo): Check spilled pseudos. Update
3243         hard_regno_to_pseudo_regno.
3244         (find_reg): Use better_spill_reload_regno_p.  Check
3245         hard_regno_to_pseudo_regno.
3246         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
3247         code for IRA.
3248         (eliminate_regs_1): Use additional parameter for alter_reg.
3249         (finish_spills): Set up pseudo_previous_regs only for spilled
3250         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
3251         more arguments.  Don't clear live_throughout and dead_or_set for
3252         spilled pseudos.  Use additional parameter for alter_reg.  Call
3253         mark_allocation_change.  Set up changed_allocation_pseudos.
3254         Remove sanity check.
3255         (emit_input_reload_insns, delete_output_reload): Use additional
3256         parameter for alter_reg.  Call mark_allocation_change.
3257         (substitute, gen_reload_chain_without_interm_reg_p): New
3258         functions.
3259         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
3260
3261         * testsuite/gcc.dg/20080410-1.c: New file.
3262
3263         * config/s390/s390.h (IRA_COVER_CLASSES,
3264         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
3265
3266         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
3267
3268         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
3269
3270         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
3271
3272         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
3273
3274         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
3275
3276         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
3277
3278         2008-08-24  Jeff Law  <law@redhat.com>
3279         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
3280         when ignoring unavailable registers.
3281
3282         2008-08-24  Jeff Law  <law@redhat.com>
3283         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
3284         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
3285         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
3286         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
3287
3288         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
3289         * ira-build.c (allocno_range_compare_func): Stabilize sort.
3290
3291         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
3292         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
3293         * reload1.c (find_reg): Process registers in register allocation order.
3294
3295         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
3296         * toplev.c (backend_init_target): Move ira_init call from
3297         here...
3298         (lang_dependent_init_target): ...to here.
3299
3300         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
3301         * ira.c (setup_class_subset_and_memory_move_costs): Don't
3302         calculate memory move costs for NO_REGS.
3303
3304         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
3305         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
3306         STACK_REGS is defined.
3307
3308         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
3309         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
3310
3311         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
3312         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
3313
3314         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
3315         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
3316         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
3317         barrier.
3318
3319 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
3320             Dorit Nuzman  <dorit@il.ibm.com>
3321
3322         * gcc/config/spu/spu.md (vec_extract_evenv4si,
3323         vec_extract_evenv4sf, vec_extract_evenv8hi,
3324         vec_extract_evenv16qi, vec_extract_oddv4si,
3325         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
3326         vec_interleave_highv4sf, vec_interleave_lowv4sf,
3327         vec_interleave_highv4si, vec_interleave_lowv4si,
3328         vec_interleave_highv8hi, vec_interleave_lowv8hi,
3329         vec_interleave_highv16qi, vec_interleave_lowv16qi,
3330         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
3331
3332 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
3333
3334         PR target/36756
3335         * config/rs6000/rs6000.c (optimization_options): Don't default to
3336         section anchors without toplevel reorder.
3337
3338 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3339
3340         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
3341         (mfc_end_critical_section): Likewise.
3342
3343 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3344
3345         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
3346         all type qualifiers from element type to vector type.
3347
3348 2008-08-25  David Daney  <ddaney@avtrex.com>
3349
3350         * config/mips/mips.md (immediate_insn): Move up in file, fix
3351         comment typo, reformat.
3352         (fetchop_bit, atomic_hiqi_op memory_barrier,
3353         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
3354         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
3355         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
3356         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
3357         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
3358         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
3359         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
3360         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
3361         sync_old_nand<mode>, sync_new_nand<mode>,
3362         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
3363         test_and_set_12): Moved to sync.md.
3364         (sync.md): Include.
3365         * config/mips/sync.md: New file.
3366
3367 2008-08-25  Richard Henderson  <rth@redhat.com>
3368
3369         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
3370         (regsave): Likewise.
3371         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
3372         (output_cfi_directive): Likewise.
3373         (div_data_align): New.
3374         (output_cfi): Use it.
3375
3376 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
3377
3378         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
3379         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
3380         (TARGET_OCTEON): New macro.
3381         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
3382         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
3383         (ISA_HAS_POP): New macro.
3384         * config/mips/driver-native.c (host_detect_local_cpu): Handle
3385         Octeon.
3386         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
3387         Handle Octeon.
3388         * config/mips/mips.md (cpu): Add octeon.
3389         (type): Add pop attribute value.
3390         (popcount<mode>2): New pattern.
3391         * doc/invoke.texi (-march=@var{arch}): Add octeon.
3392
3393 2008-08-24  Jan Hubicka  <jh@suse.cz>
3394
3395         * doc/invoke.texi (-fipa-cp-clone): New option.
3396         (-fipa-cp): Update docs.
3397         (--param ipcp-unit-growth):New.
3398         * ipa-cp.c: Include fibheap.h, params.h
3399         (ipcp_initialize_node_lattices): When not cloning, all externally
3400         visible functions are bottom.
3401         (ipcp_need_redirect_p): Accept clones.
3402         (ipcp_insert_stage): Use cost driven heuristics.
3403         (max_count, dead_nodes): New static vars.
3404         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
3405         ipcp_const_param_count): New functions.
3406         * common.opt (ipa-cp-clone): New command line option.
3407         * params.def (ipcp-unit-growth): New.
3408
3409 2008-08-24  Jan Hubicka  <jh@suse.cz>
3410
3411         * tree-inline.c (tree_function_versioning): Look harder
3412         for referenced vars.
3413
3414 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
3415
3416         PR tree-optimization/37185
3417         * matrix-reorg.c (transform_access_sites): Update changed stmt.
3418
3419 2008-08-23  Jan Hubicka  <jh@suse.cz>
3420
3421         * ipa-cp.c (ipcp_analyze_node): New function.
3422         (ipcp_update_cloned_node): Use it.
3423         (ipcp_init_stage): Likewise.
3424         * ipa-inline.c (function_insertion_hook_holder): New static var.
3425         (analyze_function): Break out from ....
3426         (inline_generate_summary): Here; register insertion hook.
3427         (cgraph_decide_inlining): Remove hook.
3428         (add_new_function): New function.
3429
3430 2008-08-23  Jan Hubicka  <jh@suse.cz>
3431
3432         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
3433
3434 2008-08-23  Jan Hubicka  <jh@suse.cz>
3435
3436         * ipa-cp.c (constant_val_insert): Remove.
3437         (ipcp_propagate_one_const): Remove.
3438         (ipcp_create_replace_map): Always insert replacements to the map.
3439         (ipcp_insert_stage): Do not try to insert statements by hand.
3440         * tree-inline.c (insert_init_stmt): Break out from ...
3441         (setup_one_parameter): ... here; allow NULL BB pointer.
3442         (tree_function_versioning): Use setup_one_parameter to process
3443         replacement map.
3444
3445 2008-08-23  Jan Hubicka  <jh@suse.cz>
3446
3447         * tree.c (decl_address_ip_invariant_p): New function.
3448         * tree.h (decl_address_ip_invariant_p): Declare.
3449         * gimple.c (strip_invariant_refs): Break out from ...
3450         (is_gimple_invariant_address): ... here
3451         (is_gimple_ip_invariant_address): New function.
3452         (is_gimple_ip_invariant): New function.
3453         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
3454         Declare.
3455
3456         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
3457         (ipcp_lat_is_insertable): All constants are insertable.
3458         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
3459         IPA_CONST_VALUE_REF.
3460         (ipcp_initialize_node_lattices): Propagate all types of operands.
3461         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
3462         (ipcp_create_replace_map): Reformat.
3463         (ipcp_need_redirect_p): Simplify.
3464         (ipcp_insert_stage): Check that argument is used before clonning.
3465         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
3466         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
3467         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
3468         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
3469         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
3470         (jump_func_type): Remove IPA_CONST_VALUE_REF.
3471         * tree-inline.c (tree_function_versioning): Add variables referenced by
3472         replacing trees.
3473
3474 2008-08-23  Jan Hubicka  <jh@suse.cz>
3475
3476         PR target/37094
3477         * i386.c (standard_80387_constant_p): Use optimize_size.
3478
3479 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3480
3481         PR tree-optimization/37161
3482         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
3483         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
3484         (vect_determine_vectorization_factor): Move the scalar type
3485         retrieval to vect_get_smallest_scalar_type.
3486         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
3487         scalar type. Remove redundant computation.
3488         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
3489         (vect_get_slp_defs): Take the type of RHS into account if
3490         necessary by calling vect_get_smallest_scalar_type. Call
3491         vect_get_constant_vectors with additional argument.
3492
3493 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3494
3495         PR 35648
3496         * doc/invoke.texi (Wwrite-strings): Clarify description.
3497
3498 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3499
3500         PR tree-optimization/37174
3501         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
3502         def stmt is a part of the loop before accessing its stmt_vec_info.
3503
3504 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
3505
3506         PR target/11259
3507         * config/avr/avr.md (UNSPEC_SWAP): New constants.
3508         (*swap): New insn pattern.
3509         (*ashlqi3): Rename from ashlqi3 insn pattern.
3510         (ashlqi3): New expanders.
3511         (*lshrqi3): Rename from lshrqi3 insn pattern.
3512         (lshrqi3): New expanders.
3513         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
3514         lshrqi3_const5, lshrqi3_const6): New splitters.
3515         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
3516         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
3517         peephole2 patterns.
3518
3519 2008-08-22  Richard Guenther  <rguenther@suse.de>
3520
3521         PR tree-optimization/37078
3522         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
3523         [+INF, +INF] ranges.
3524
3525 2008-08-22  Richard Guenther  <rguenther@suse.de>
3526
3527         PR tree-optimization/37143
3528         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
3529         a conversion statement instead of a copy.
3530
3531 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
3532
3533         PR target/37184
3534         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
3535         CCCmode, CCOmode and CCSmode destination modes.
3536
3537         PR target/37191
3538         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
3539         from different units in a single alternative.
3540         (*vec_extractv2sf_1): Ditto.
3541         (*vec_extractv2si_0): Ditto.
3542         (*vec_extractv2si_1): Ditto.
3543         * config/i386/sse.md (sse2_storehpd): Ditto.
3544         (sse2_storelpd): Ditto.
3545         (sse2_loadhpd): Ditto.
3546         (sse2_loadlpd): Ditto.
3547
3548         PR target/37197
3549         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
3550         (popcountsi2): Ditto.
3551         (clzdi2_abm): Ditto.
3552         (popcountdi2): Ditto.
3553         (clzhi2_abm): Ditto.
3554         (popcounthi2): Ditto.
3555
3556 2008-08-22  Richard Guenther  <rguenther@suse.de>
3557
3558         PR middle-end/36548
3559         PR middle-end/37125
3560         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
3561         if the multiplication does not overflow.
3562
3563 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
3564
3565         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
3566
3567 2008-08-21  Richard Henderson  <rth@redhat.com>
3568
3569         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
3570         spurrious comma from test.
3571         * configure: Rebuild.
3572
3573 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3574
3575         PR 30457
3576         * builtins.c (fold_builtin_next_arg): Add warning about undefined
3577         behaviour.
3578
3579 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
3580
3581         * c-tree.h (grokfield): New argument.
3582         * c-decl.c (grokfield): Handle new location argument.
3583         * c-parser.c (c_parser_struct_declaration): Pass location to
3584         grokfield.
3585
3586 2008-08-21  Richard Guenther  <rguenther@suse.de>
3587
3588         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
3589
3590 2008-08-21  Jan Hubicka  <jh@suse.cz>
3591
3592         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
3593         (cgraph_add_function_insertion_hook,
3594         cgraph_remove_function_insertion_hook,
3595         cgraph_call_function_insertion_hooks): New functions.
3596         * cgraph.h (cgraph_add_function_insertion_hook,
3597         cgraph_remove_function_insertion_hook,
3598         cgraph_call_function_insertion_hooks): Declare.
3599         * ipa-reference.c (function_insertion_hook_holder): New variable.
3600         (check_operand, look_for_address_of): When checking late, do not care
3601         about module bitmaps.
3602         (add_new_function): New function.
3603         (generate_summary): Register hooks; zero module bitmaps.
3604         (propagate): Unregister hooks.
3605         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
3606         (add_new_function): New function.
3607         (generate_summary): Register hook.
3608         (propagate): Remove hook.
3609
3610         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
3611
3612         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
3613         * ipa-cp.c (ipcp_update_cloned_node): New function.
3614         (build_const_val): Handle functions correctly; bring type logic
3615         into sync with tree-inline.c
3616         (ipcp_init_stage):  Take care of computing stuff needed by
3617         indirect inlining; update clones.
3618         (ipcp_generate_summary): Break out of ipcp_driver.
3619         (ipcp_driver): Do only execution and transformation.
3620         (pass_ipa_cp): Make IPA_PASS.
3621         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
3622         offset to address.
3623         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
3624         ipcp, some info is already available.
3625         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
3626         * tree-inline.c (remap_ssa_name): Unshare expression.
3627
3628 2008-08-21  Richard Guenther  <rguenther@suse.de>
3629
3630         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
3631         a PHI ask VN if it is already available.
3632         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
3633         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
3634
3635 2008-08-21  Richard Guenther  <rguenther@suse.de>
3636
3637         PR middle-end/36817
3638         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
3639         makes sure to produce a result of the correct type.
3640
3641 2008-08-21  Jan Hubicka  <jh@suse.cz>
3642         Backport from LTO branch:
3643
3644         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3645                     Jan Hubicka  <jh@suse.cz>
3646
3647         * ipa-pure-const.c
3648         (init_state, finish_state, set_function_state, generate_summary):
3649         New functions.
3650         (scan_stmt): Renamed from scan_function.  Changed to keep state in
3651         local static vars rather than cgraph aux field.
3652         (propagate): Renamed from static_execute. Changed to keep state in
3653         local static vars rather than cgraph aux field.
3654         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
3655         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
3656
3657         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
3658
3659         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
3660         * ipa-reference.c (init_function_info, generate_summary,
3661         propagate): New functions.
3662         (analyze_function):  Call init_function_info.
3663         (static_execute): Stripped into generate_summary and propagate.
3664         (pass_ipa_reference): Made into ipa_opt_pass.
3665
3666 2008-08-21  Richard Guenther  <rguenther@suse.de>
3667
3668         PR tree-optimization/37181
3669         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
3670         folding result.
3671         (extract_range_from_unary_expr): Likewise.
3672
3673 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3674
3675         * diagnostic.c (pedwarn_at): Rename as pedwarn.
3676         (pedwarn): Delete.
3677         * toplev.h (pedwarn_at): Likewise.
3678         * builtins.c: Update all calls to pedwarn.
3679         * c-lex.c: Likewise.
3680         * toplev.c: Likewise.
3681         * c-tree.h: Likewise.
3682         * c-decl.c: Likewise.
3683         * c-errors.c: Likewise.
3684         * c-typeck.c: Likewise.
3685         * c-common.c: Likewise.
3686         * c-parser.c: Likewise.
3687
3688 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
3689
3690         PR target/31070
3691         * config/sparc/sparc.c (function_arg_slotno): Handle structure
3692         with MODE_VECTOR_INT mode.
3693
3694 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3695
3696         PR middle-end/179
3697         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
3698         initialized outside the current module.
3699         (warn_uninitialized_var): Ignore left-hand side when walking the
3700         trees. Ignore address expressions. Examine VUSE operands in gimple
3701         statements with a variable declaration on the right-hand side.
3702
3703 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
3704
3705         PR bootstrap/37155
3706         * rtlanal.c (subreg_offset_representable_p): Revert last change.
3707
3708 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3709
3710         PR 35701
3711         * c-common.c (conversion_warning): Do not warn if applying bit-and
3712         operator to unsigned constant that fits in the target type.
3713
3714 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3715
3716         PR c++/35602
3717         * c-common.c (conversion_warning): Do not warn for artificial
3718         expressions.
3719
3720 2008-08-20  Richard Guenther  <rguenther@suse.de>
3721
3722         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
3723         (extract_range_from_binary_expr): Fall back to constant propagation.
3724         (extract_range_from_unary_expr): Likewise.
3725
3726 2008-08-20  Richard Guenther  <rguenther@suse.de>
3727
3728         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
3729         with TREE_THIS_VOLATILE on shared nodes.
3730         (fold_stmt_r): Likewise.
3731
3732 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
3733
3734         PR c/37171
3735         * c-parser.c (c_parser_attributes): For keywords use canonical
3736         spelling for attr_name.
3737
3738 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3739
3740         * value-prof.c (check_counter): Revert wrong call to error.
3741
3742 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3743
3744         * profile.c: Update calls to inform.
3745         * value-prof.c: Update calls to inform.
3746
3747 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3748
3749         * diagnostic.c (inform): Add an explicit location_t parameter.
3750         * toplev.h (inform): Update declaration.
3751         * builtins.c: Update all calls to inform.
3752         * c-common.c: Likewise.
3753         * c-decl.c: Likewise.
3754         * c-opts.c: Likewise.
3755         * c-pch.c: Likewise.
3756         * c-pragma.c: Likewise.
3757         * c-typeck.c: Likewise.
3758         * coverage.c: Likewise.
3759         * opts.c: Likewise.
3760         * toplev.c: Likewise.
3761         * tree-cfg.c: Likewise.
3762         * tree-ssa.c: Likewise.
3763
3764 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
3765
3766         PR target/37169
3767         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
3768         V2DI mode, for SSE4.1, use movq instead of vector set if the
3769         second element is zero and inter-unit moves are OK.
3770
3771 2008-08-20  Richard Guenther  <rguenther@suse.de>
3772
3773         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
3774         properly handle conversion/copy chains after tuplification.
3775
3776 2008-08-20  Richard Guenther  <rguenther@suse.de>
3777
3778         * passes.c (init_optimization_passes): Move the second
3779         forwprop pass before alias computation.  Remove the second
3780         DCE pass.  Remove the first dominator and phi copy/const
3781         prop passes.
3782
3783 2008-08-20  Nick Clifton  <nickc@redhat.com>
3784
3785         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
3786         support of this feature.  Do not assume that a sufficiently new
3787         assembler will support the feature regardless of the target type.
3788         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
3789         * configure: Regenerate.
3790
3791 2008-08-20  Richard Guenther  <rguenther@suse.de>
3792
3793         * tree-vrp.c (found_in_subgraph): Remove.
3794         (live): New global static.
3795         (live_on_edge): New function.
3796         (blocks_visited): Remove.
3797         (register_edge_assert_for_2): Use live_on_edge.
3798         (find_conditional_asserts): Remove code dealing with
3799         found_in_subgraph.  Do not walk the CFG.
3800         (find_switch_asserts): Likewise.
3801         (find_assert_locations_1): Renamed from find_assert_locations.
3802         Move finding assert locations for conditional and switch
3803         statements first.  Update live bitmap.  Do not walk the CFG.
3804         (find_assert_locations): New function.
3805         (insert_range_assertions): Remove entry of CFG walk.
3806         Adjust call to find_assert_locations.
3807         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
3808         that only can appear because of fake exit edges but assert we
3809         never try to insert on those.
3810         (fini_pre): Do not remove fake exit edges here...
3811         (execute_pre): ...but here, before committing edge inserts.
3812
3813 2008-08-19  Richard Guenther  <rguenther@suse.de>
3814
3815         * passes.c (init_optimization_passes): Exchange store-ccp
3816         with a ccp pass.
3817
3818 2008-08-19  Rafael Espíndola  <espindola@google.com>
3819
3820         * varasm.c (weak_decls): Move earlier in the file.
3821         (assemble_external): Add weak decls to the weak_decls list.
3822         (declare_weak): Don't add decls to the weak_decls list.
3823
3824 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
3825
3826         PR target/37157
3827         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
3828         before (sse2_shufpd_<mode>).
3829
3830 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
3831
3832         PR debug/37156
3833         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
3834         * tree.c (block_nonartificial_location): Likewise.
3835
3836 2008-08-19  Richard Guenther  <rguenther@suse.de>
3837
3838         PR tree-optimization/35972
3839         PR tree-optimization/23094
3840         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
3841         parameter.
3842         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
3843         handle MISALIGNED_INDIRECT_REF.
3844         (get_ref_from_reference_ops): New helper.
3845         (vn_reference_lookup_pieces): Walk the use-def chain using the
3846         alias-oracle if requested.
3847         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
3848         walking the use-def chain.
3849         (compute_avail): But not here.
3850         (create_component_ref_by_pieces_1): Properly handle
3851         MISALIGNED_INDIRECT_REF.
3852         (do_regular_insertion): Handle fully redundant
3853         expressions after PHI-translation also for SSA_NAME values, not
3854         only constants.  Correctly use edoubleprime for that.
3855
3856 2008-08-19  Ira Rosen  <irar@il.ibm.com>
3857
3858         * tree-vectorizer.c (supportable_widening_operation): Support
3859         multi-step conversion, return the number of steps in such conversion
3860         and the required intermediate types.
3861         (supportable_narrowing_operation): Likewise.
3862         * tree-vectorizer.h (vect_pow2): New function.
3863         (supportable_widening_operation): Change argument types.
3864         (supportable_narrowing_operation): Likewise.
3865         (vectorizable_type_promotion): Add an argument.
3866         (vectorizable_type_demotion): Likewise.
3867         * tree-vect-analyze.c (vect_analyze_operations): Call
3868         vectorizable_type_promotion and vectorizable_type_demotion with
3869         additional argument.
3870         (vect_get_and_check_slp_defs): Detect patterns.
3871         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
3872         types.
3873         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
3874         vect_build_slp_tree with correct arguments. Calculate unrolling factor
3875         according to the smallest type in the loop.
3876         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
3877         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
3878         supportable_widening_operation with correct arguments.
3879         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
3880         operands lists according to the number of vector statements in left
3881         or right node, if exists.
3882         (vect_gen_widened_results_half): Remove unused argument.
3883         (vectorizable_conversion): Call supportable_widening_operation,
3884         supportable_narrowing_operation, and vect_gen_widened_results_half
3885         with correct arguments.
3886         (vectorizable_assignment): Change documentation, support multiple
3887         types in SLP.
3888         (vectorizable_operation): Likewise.
3889         (vect_get_loop_based_defs): New function.
3890         (vect_create_vectorized_demotion_stmts): Likewise.
3891         (vectorizable_type_demotion): Support loop-aware SLP and general
3892         multi-step conversion. Call vect_get_loop_based_defs and
3893         vect_create_vectorized_demotion_stmts for transformation.
3894         (vect_create_vectorized_promotion_stmts): New function.
3895         (vectorizable_type_promotion): Support loop-aware SLP and general
3896         multi-step conversion. Call vect_create_vectorized_promotion_stmts
3897         for transformation.
3898         (vectorizable_store): Change documentation, support multiple
3899         types in SLP.
3900         (vectorizable_load): Likewise.
3901         (vect_transform_stmt): Pass SLP_NODE to
3902         vectorizable_type_promotion and vectorizable_type_demotion.
3903         (vect_schedule_slp_instance): Move here the calculation of number
3904         of vectorized statements for each node from...
3905         (vect_schedule_slp): ... here.
3906         (vect_transform_loop): Call vect_schedule_slp without the last
3907         argument.
3908
3909 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
3910
3911         PR bootstrap/37152
3912         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
3913         to == in assert statement.
3914         (vectorizable_reduction): Fix typo.
3915
3916 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3917
3918         PR bootstrap/37153
3919         * value-prof.c (check_counter): Dereference pointer to overall
3920         count when printing it.
3921
3922 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3923
3924         * profile.h: Really add it.
3925
3926 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3927
3928         * mcf.c: Really add it.
3929
3930 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
3931             Vinodha Ramasamy  <vinodha@google.com>
3932
3933         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
3934         count_scale.
3935         * value-prof.c (check_counter): Fix the counter if
3936         flag_profile_correction is true.
3937         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
3938         tree_mod_subtract_transform):
3939         Follow check_counter parameter change.
3940         * common.opt (fprofile-correction): New option.
3941         * mcf.c: New file.
3942         * profile.h: Likewise.
3943         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
3944         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
3945         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
3946         functions.
3947         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
3948         flag_profile_correction is set.
3949
3950 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
3951
3952         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
3953
3954 2008-08-18  Tomas Bily  <tbily@suse.cz>
3955
3956         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
3957         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
3958         CONVERT_EXPR_P.
3959         * tree-data-ref.c (split_constant_offset_1): Likewise.
3960         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
3961         * tree-sra.c (sra_walk_expr): Likewise.
3962         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
3963         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
3964         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
3965         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
3966         Likewise.
3967         * gimple.c (gimple_assign_unary_nop_p): Likewise.
3968         * tree-vect-transform.c (vectorizable_type_demotion)
3969         (vectorizable_type_promotion): Likewise.
3970         * tree-inline.c (expand_call_inline):
3971         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
3972         (forward_propagate_addr_expr_1, forward_propagate_comparison)
3973         (tree_ssa_forward_propagate_single_use_vars): Likewise.
3974         * expr.c (expand_expr_real_1): Likewise.
3975         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
3976         (gimple_assign_unary_useless_conversion_p): Likewise.
3977         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
3978         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
3979         * fold-const.c (fold_unary): Likewise.
3980         * tree.h (CONVERT_EXPR_P): Likewise.
3981         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
3982         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
3983         * tree-vrp.c:
3984         (register_edge_assert_for_2, extract_range_from_unary_expr)
3985         (register_edge_assert_for_1): Likewise.
3986
3987 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3988
3989         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
3990         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
3991         (enum real_value_const): Delete.
3992         (get_real_const): Delete.
3993         * real.c (get_real_const): Delete.
3994         (dconst_e_ptr): Define.
3995         (dconst_third_ptr): Define.
3996         (dconst_sqrt2_ptr): Define.
3997         * builtins.c: Update all callers.
3998
3999 2008-08-18  Richard Guenther  <rguenther@suse.de>
4000
4001         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
4002         statement iterator after statement removal.
4003
4004 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
4005
4006         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
4007         (detect_processor_freebsd): Likewise.
4008         (host_detect_local_cpu): Call newly added functions for FreeBSD.
4009
4010 2008-08-18  Richard Guenther  <rguenther@suse.de>
4011
4012         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
4013         and loads have the correct types.
4014
4015 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4016
4017         PR cpp/7263
4018         * c-opts.c (cpp_opts): Remove static.
4019         * c-parser.c (cpp_opts): Declare it extern.
4020         (disable_extension_diagnostics): Handle cpp options.
4021         (enable_extension_diagnostics): Likewise.
4022
4023 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4024
4025         * diagnostics.c (permerror_at): Rename as permerror.
4026         (permerror): Delete.
4027         * toplev.h: Likewise.
4028
4029 2008-08-18  Richard Guenther  <rguenther@suse.de>
4030
4031         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
4032         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
4033         Move call_cdce before build_alias.  Move copyrename2,
4034         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
4035         right after final inlining.
4036         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
4037         (pass_build_cfg): But instead via TODO_dump_func.
4038
4039 2008-08-18  Richard Guenther  <rguenther@suse.de>
4040
4041         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
4042         element index.
4043         (scalarize_init): If we failed to generate some initializers
4044         do not generate zeros for not instantiated members.  Instead
4045         rely on the copy out.
4046         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
4047         about missing flow-sensitive alias info only if we have
4048         aliases computed.
4049
4050 2008-08-17  Nick Clifton  <nickc@redhat.com>
4051
4052         * doc/extend.texi (Function Attributes): Fix typo in description
4053         if hot function attribute.
4054
4055 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
4056             Richard Sandiford  <rdsandiford@googlemail.com>
4057
4058         * doc/install.texi (--with-mips-plt): Document.
4059         * doc/invoke.texi (-mplt, -mno-plt): Document.
4060         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
4061         and handle ${with_mips_plt}.
4062         * config/mips/mips.opt (mplt): New option.
4063         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
4064         (TARGET_ABICALLS_PIC2): Likewise.
4065         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
4066         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
4067         (ASM_SPEC): Use !mabi=* instead of !mabi*.
4068         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
4069         to decide whether to output ".option picX" directives.
4070         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
4071         Pass -call_nonpic rather than -KPIC for -mplt.
4072         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
4073         on the command line.  Also remove it when -mabi=64 is used without
4074         -msym32.
4075         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
4076         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
4077         TARGET_ABICALLS_PIC0.
4078         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
4079         TARGET_ABICALLS.
4080         (mips16_build_function_stub): Only output ".option pic" directives
4081         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
4082         (mips16_build_call_stub): Fix comment and remove redundant
4083         ".set at"/"set .noat" directives.
4084         (mips_function_rodata_section): Use the default behaviour for
4085         TARGET_ABSOLUTE_ABICALLS.
4086         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
4087         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
4088         (mips_restore_gp): Do nothing if the current function doesn't use
4089         a global pointer.
4090         (mips_expand_prologue): Only save $gp if the current function uses it.
4091         Use a normal move for TARGET_ABICALLS_PIC0.
4092         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
4093
4094 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
4095
4096         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
4097         of function when handling GLOBAL_POINTER_REGNUM.
4098
4099 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
4100
4101         PR ada/20548
4102         * common.opt (-fstack-check): Do not declare the variable here.
4103         (-fstack-check=): New option variant.
4104         * doc/invoke.texi (Code Gen Options): Document it.
4105         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
4106         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
4107         (STACK_CHECK_STATIC_BUILTIN): New macro.
4108         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
4109         * opts.c: Include expr.h.
4110         (common_handle_option) <OPT_fold_stack_check_>: New case.
4111         <OPT_fstack_check>: Likewise.
4112         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
4113         consistently in the test for variable-sized types.  Adjust for
4114         new behaviour of flag_stack_check.
4115         * explow.c: Include except.h.
4116         (allocate_dynamic_stack_space): Do not take into account
4117         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
4118         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
4119         for variable-sized parameters.  Treat all parameters whose size is
4120         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
4121         stack checking is enabled.
4122         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
4123         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
4124         if generic stack checking is enabled.
4125         (expand_function_end): Adjust for new behaviour of flag_stack_check.
4126         * reload1.c (reload): Likewise.
4127         * stmt.c (expand_decl): Assert that all automatic variables have
4128         fixed size at this point and remove dead code.
4129         * flags.h (stack_check_type): New enumeration type.
4130         (flag_stack_check): Declare.
4131         * toplev.c (flag_stack_check): New global variable.
4132         * Makefile.in (opts.o): Add dependency on EXPR_H.
4133         (explow.o): Add dependency on except.h.
4134
4135 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
4136
4137         * config/avr/avr.c (avr_override_options): Reduce value of
4138         PARAM_INLINE_CALL_COST.
4139
4140 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
4141
4142         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
4143         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
4144         lieu of TYPE_MODE (type) throughout.
4145
4146 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
4147
4148         * config/arm/arm.c (add_minipool_backward_ref): Check for
4149         8-byte-aligned entries in second case of forcing insertion after a
4150         particular entry.  Change third case to avoid inserting
4151         non-8-byte-aligned entries before 8-byte-aligned ones.
4152
4153 2008-08-15  Richard Guenther  <rguenther@suse.de>
4154
4155         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
4156         strip components for unknown size accesses.
4157
4158 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
4159
4160         * config/s390/2097.md New file.
4161         * config/s390/s390.md ("z10prop" attribute): Define none,
4162         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
4163         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
4164         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
4165         possible values and apply them to insns as appropriate.
4166         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
4167         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
4168         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
4169         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
4170         values.
4171         ("bfp" mode attribute): Removed.  Every occurence replaced
4172         with <mode>.
4173         * config/s390/s390.c (struct "z10_cost"): Updated entries.
4174         * config/s390/2084.md (insn_reservation "x_itof"): Updated
4175           type attribute.
4176
4177 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4178
4179         PR c/28152
4180         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
4181         for keywords.
4182
4183 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
4184
4185         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
4186         additional argument. Support reduction when duplication is needed due
4187         to data-types of different sizes in the loop.
4188         (get_initial_def_for_induction): Fix printout.
4189         (vect_get_vec_def_for_stmt_copy): Support case where the
4190         vec_stmt_for_operand is a phi node.
4191         (vectorizable_reduction): Support reduction when duplication is needed
4192         due to data-types of different sizes in the loop.
4193         (vectorizable_call): Remove restriction to not vectorize in case we
4194         have data-types of different sizes in the loop.
4195         (vectorizable_conversion): Likewise.
4196         (vectorizable_operation): Likewise.
4197         (vectorizable_type_demotion): Likewise.
4198         (vectorizable_type_promotion): Likewise.
4199         (vectorizable_induction): Add restriction to not vectorize in case
4200         we have data-types of different sizes in the loop.
4201
4202 2008-08-14  Christophe Saout  <christophe@saout.de>
4203             Uros Bizjak  <ubizjak@gmail.com>
4204
4205         PR target/37101
4206         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
4207         (*vec_concatv2di_rex64_sse4_1): Ditto.
4208         (*vec_concatv2di_rex64_sse): Ditto.
4209
4210 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
4211
4212         PR middle-end/37103
4213         * fold-const.c (fold_widened_comparison): Do not allow
4214         sign changes that change the result even if shorter type
4215         is wider than arg1_unw's type.
4216
4217 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
4218
4219         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
4220         Skip if the multilib testing specifies -march that does not
4221         agree with the one specified in the testcase.
4222
4223 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
4224
4225         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
4226         zero extend SImode values being converted to TFmode before passing
4227         to libcalls.
4228
4229 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4230
4231         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
4232         __PPU__ when targeting the Cell/B.E. PPU processor.
4233
4234 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
4235
4236         * gimple.h (gimple_call_set_chain): Accept SSA variables.
4237         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
4238         Rematerialize the static chain, if any.
4239         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
4240         static chain.
4241
4242 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4243
4244         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
4245         (new_loc_descr): Likewise.
4246         (add_loc_descr): Likewise.
4247         (size_of_loc_descr): Likewise.
4248         (size_of_locs): Likewise.
4249         (output_loc_operands): Likewise.
4250         (output_loc_sequence): Likewise.
4251         (new_reg_loc_descr): New.
4252         (build_cfa_loc): Use it.
4253         (build_cfa_aligned_loc): Likewise.
4254         (one_reg_loc_descriptor): Likewise.
4255         (based_loc_descr): Likewise.
4256
4257 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4258
4259         PR 30551
4260         * doc/invoke.texi (Wmain): Update.
4261         * c-decl.c (start_decl): warn_main is only 0 or 1.
4262         (start_function): Likewise. Fix formatting.
4263         (finish_function): Delete redundant warning.
4264         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
4265         * c-opts (c_common_handle_option): -Wall only has effect if
4266         warn_main is uninitialized. OPT_Wmain is automatically
4267         handled. -pedantic also enables Wmain.
4268         (c_common_post_options): Handle all logic for Wmain here.
4269         * c-common.c (warn_main): Delete.
4270         (check_main_parameter_types): Make pedwarns conditional on
4271         OPT_Wmain.
4272         * c-common.h (warn_main): Delete.
4273
4274 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4275
4276         PR middle-end/36701
4277         * expr.c (emit_group_store): Allocate stack temp with the
4278         largest alignment when copying from register to stack.
4279
4280 2008-08-13  Richard Guenther  <rguenther@suse.de>
4281
4282         * tree.h (maybe_fold_offset_to_address): Declare.
4283         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
4284         (ccp_fold): Handle pointer conversions the same as fold_stmt.
4285         Likewise for POINTER_PLUS_EXPR.
4286         (maybe_fold_offset_to_reference): Enable disabled code.
4287         (maybe_fold_offset_to_address): New function.
4288         (fold_stmt_r): Use it.
4289         (fold_gimple_assign): Likewise.
4290         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
4291         (gimplify_expr): Likewise.
4292
4293 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4294
4295         * toplev.h (pedwarn_at): Fix declaration.
4296
4297 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
4298
4299         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
4300         LINK_SPEC): Use %R in -Y P argument.
4301
4302 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4303
4304         PR c/15236
4305         * diagnostic.c (pedwarn_at): New.
4306         * toplev.h (pedwarn_at): Declare.
4307         * c-tree.h (build_enumerator): Update declaration.
4308         * c-decl.c (finish_enum): Update comment.
4309         (build_enumerator): Take a location parameter. Give a pedwarn but do
4310         not perform any conversion.
4311         * c-parser.c (c_parser_enum_specifier): Set correct location for
4312         enumerator.
4313
4314 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4315
4316         PR 35635
4317         * c-common.c (conversion_warning): Use a switch. Ignore boolean
4318         expressions except for conversions to signed:1 bitfields. Handle
4319         COND_EXPR with constant operands.
4320
4321 2008-08-13  Richard Guenther  <rguenther@suse.de>
4322
4323         PR tree-optimization/15255
4324         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
4325         (struct oecount_s): New struct and VEC types.
4326         (cvec): New global.
4327         (oecount_hash): New function.
4328         (oecount_eq): Likewise.
4329         (oecount_cmp): Likewise.
4330         (zero_one_operation): New function.
4331         (build_and_add_sum): Likewise.
4332         (undistribute_ops_list): Perform un-distribution of multiplication
4333         and division on the chain of summands.
4334         (should_break_up_subtract): Also break up subtracts for factors.
4335         (reassociate_bb): Delete dead visited statements.
4336         Call undistribute_ops_list.  Re-sort and optimize if it did something.
4337         * passes.c (init_optimization_passes): Move DSE before
4338         reassociation.
4339         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
4340         PHI nodes.
4341
4342 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
4343
4344         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
4345
4346         * doc/invoke.texi: Revert unintended checkin.
4347
4348 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
4349
4350         PR libgomp/26165
4351         * gcc.c (include_spec_function): Tweak call to find_a_file.
4352
4353 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
4354
4355         PR middle-end/37014
4356         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
4357         and TRUTH_ORIF_EXPR.
4358         * dojump.c (do_jump): Likewise.
4359
4360         PR tree-optimization/37084
4361         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
4362         if id->regimplify, don't assume stmt is a cast assignment.
4363
4364 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
4365
4366         * final.c (final_scan_insn): Use app_enable/app_disable functions.
4367
4368 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4369
4370         PR bootstrap/37097
4371         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
4372         by last change.
4373
4374 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4375
4376         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
4377         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
4378
4379         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
4380         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
4381         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
4382         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
4383         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
4384
4385         * doc/tm.texi (Storage Layout): Remove documentation for
4386         TARGET_FLOAT_FORMAT.
4387
4388         * simplify-rtx.c (simplify_binary_operation_1): Replace
4389         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
4390
4391 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4392
4393         * real.h (struct real_format): New member has_sign_dependent_rounding.
4394         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
4395         spu_single_format, ieee_double_format, mips_double_format,
4396         motorola_double_format, ieee_extended_motorola_format,
4397         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
4398         ieee_extended_intel_96_round_53_format, ibm_extended_format,
4399         mips_extended_format, ieee_quad_format, mips_quad_format,
4400         vax_f_format, vax_d_format, vax_g_format): Initialize it.
4401         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
4402
4403         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
4404         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
4405         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
4406         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
4407         (ROUND_TOWARDS_ZERO): Likewise.
4408
4409         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
4410         (FLOAT_MODE_FORMAT): New macro.
4411         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
4412         (MODE_COMPOSITE_P): ... this new macro.
4413         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
4414         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
4415         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
4416
4417         * flags.h: Include "real.h".
4418
4419         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
4420         REAL_MODE_FORMAT_COMPOSITE_P.
4421         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
4422
4423         * doc/tm.texi (Storage Layout): Remove documentation of
4424         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
4425         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
4426         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
4427         they only apply to libgcc2.a.
4428
4429 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4430
4431         * config/spu/float_disf.c: New file.
4432         * config/spu/float_unsdisf.c: New file.
4433         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
4434         (LIB2FUNCS_EXCLUDE): Define.
4435
4436 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4437             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4438
4439         * real.h (struct real_format): New member round_towards_zero.
4440         * real.c (round_for_format): Respect fmt->round_towards_zero.
4441         (ieee_single_format, mips_single_format, motorola_single_format,
4442         spu_single_format, ieee_double_format, mips_double_format,
4443         motorola_double_format, ieee_extended_motorola_format,
4444         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
4445         ieee_extended_intel_96_round_53_format, ibm_extended_format,
4446         mips_extended_format, ieee_quad_format, mips_quad_format,
4447         vax_f_format, vax_d_format, vax_g_format): Initialize it.
4448         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
4449
4450         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
4451         real_format to choose rounding mode when calling MPFR functions.
4452         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
4453         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
4454
4455         * real.h (real_to_decimal_for_mode): Add prototype.
4456         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
4457         Respect target rounding mode when generating decimal representation.
4458         (real_to_decimal): New stub for backwards compatibility.
4459         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
4460         real_to_decimal_for_mode instead of real_to_decimal.
4461
4462         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
4463
4464 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4465             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4466
4467         * real.c (spu_single_format): New variable.
4468         * real.h (spu_single_format): Declare.
4469
4470         * config/spu/spu.c (spu_override_options): Install SFmode format.
4471         (spu_split_immediate): Use integer mode to operate on pieces of
4472         floating-point values in all cases.
4473
4474         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
4475         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
4476         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
4477
4478 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4479
4480         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
4481
4482 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4483
4484         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
4485
4486 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
4487
4488         PR c++/36688
4489         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
4490         on the VAR_DECL instead of TYPE_READONLY on its type.
4491
4492 2008-08-12  Ira Rosen  <irar@il.ibm.com>
4493
4494         * tree-vectorizer.c: Depend on langhooks.h.
4495         (supportable_widening_operation): Add two arguments. Support double
4496         type conversions.
4497         (supportable_narrowing_operation): Likewise.
4498         * tree-vectorizer.h (supportable_widening_operation): Add two
4499         arguments.
4500         (supportable_narrowing_operation): Likewise.
4501         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
4502         supportable_widening_operation with correct arguments.
4503         * tree-vect-transform.c (vectorizable_conversion): Likewise.
4504         (vectorizable_type_demotion): Support double type conversions.
4505         (vectorizable_type_promotion): Likewise.
4506         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
4507
4508 2008-08-11  Michael Matz  <matz@suse.de>
4509
4510         * i386/i386.c (override_options): Move initialisation from
4511         flag_schedule_insns_after_reload to here from ...
4512         (optimization_options): ... here.
4513
4514 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
4515
4516         PR rtl-optimization/36998
4517         * dwarf2out.c (compute_barrier_args_size_1,
4518         compute_barrier_args_size): Temporarily remove assertions.
4519
4520 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4521
4522         PR middle-end/20644
4523         * tree-ssa.c (struct walk_data): Add new flag
4524         warn_possibly_uninitialized.
4525         (warn_uninitialized_var): Use it.
4526         (warn_uninitialized_vars): New.
4527         (execute_early_warn_uninitialized): Call it.
4528         (execute_late_warn_uninitialized): Likewise.
4529
4530 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4531
4532         PR middle-end/36238
4533         * reload1.c (gen_reload): Guard calls to get_secondary_mem
4534         for memory subregs.
4535
4536 2008-08-09  Jan Hubicka  <jh@suse.cz>
4537
4538         PR target/37055
4539         * optabs.c (maybe_emit_unop_insn): Remove produced code if
4540         expansion failed.
4541         (expand_fix): Be prepared for expansion to fail.
4542         (expand_sfix_optab): Remove instructions if expansion failed.
4543
4544 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
4545
4546         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
4547         avr31 architecture.
4548         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
4549         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
4550
4551 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4552
4553         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
4554         mips/t-libgcc-mips16 to tmake_file.
4555         * config/mips/mips-protos.h (mips_call_type): New enum.
4556         (mips_pic_base_register, mips_got_load): Declare.
4557         (mips_restore_gp): Take an rtx argument.
4558         (mips_use_pic_fn_addr_reg_p): Declare.
4559         (mips_expand_call): Replace the sibcall_p argument with
4560         a mips_call_type argument.  Add a lazy_p parameter.
4561         (mips_split_call): Declare.
4562         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
4563         (MIPS16_PIC_TEMP): Likewise.
4564         (reg_class): Delete M16_NA_REGS.
4565         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
4566         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
4567         (mips_split_hi_p): Declare.
4568         * config/mips/mips.c (mips_split_hi_p): New array.
4569         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
4570         (mips_got_symbol_type_p): New function.
4571         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
4572         (mips16_stub_function_p): New function.
4573         (mips16_local_function_p): Likewise.
4574         (mips_use_pic_fn_addr_reg_p): Likewise.
4575         (mips_cannot_force_const_mem): Return false for HIGHs.
4576         Extend CONST_INT and symbolic handling to MIPS16, using
4577         mips_symbol_insns to check that the base symbol type is a
4578         legitimate constant.  Reject GOT-based constants if
4579         TARGET_MIPS16_PCREL_LOADS.
4580         (mips_const_insns): Check targetm.cannot_force_const_mem when
4581         decomposing a symbolic base and a large offset.
4582         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
4583         When calling a function that needs $25 from MIPS16 code,
4584         move the target address into $25 separately and add a USE
4585         to the call insn.
4586         (mips16_gp_pseudo_reg): Insert the initializer immediately
4587         before the first real insn.
4588         (mips_pic_base_register, mips_got_load): New functions.
4589         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
4590         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
4591         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
4592         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
4593         (mips_call_tls_get_addr): Update the call to mips_expand_call,
4594         also passing NULL_RTX rather than const0_rtx as the aux argument.
4595         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
4596         instead of TARGET_EXPLICIT_RELOCS.
4597         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
4598         (mips_load_call_address): Replace the sibcall_p argument with
4599         a mips_call_type argument.  Use mips_got_load.
4600         (mips16_local_alias): New structure.
4601         (mips16_local_aliases): New variable.
4602         (mips16_local_aliases_hash): New function.
4603         (mips16_local_aliases_eq): Likewise.
4604         (mips16_local_alias): Likewise.
4605         (mips16_stub_function): Likewise.
4606         (mips16_build_function_stub): Create a local alias for the target
4607         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
4608         .cpload directive and an R_MIPS_NONE relocation for the target
4609         function, then load the alias rather than the function itself.
4610         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
4611         (mips16_copy_fpr_return_value): Use mips16_stub_function and
4612         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
4613         (mips16_build_call_stub): Replace the FN parameter with an
4614         FN_PTR parameter.  Force the address into a register if it
4615         isn't a call_insn_operand; don't rely on the caller to do this.
4616         If a call to a locally-defined and locally-binding MIPS16
4617         function must be made indirectly, redirect the call to the
4618         function's local alias.  Use mips16_stub_function_p,
4619         mips16_stub_function, mips_expand_call and use_reg.
4620         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
4621         Use explicit %hi and %lo accesses where possible.
4622         Use MIPS_CALL to generate the correct code form of a
4623         jal instruction.  Add clobbers of $18 instead of uses.
4624         Update the call to mips_emit_call_insn.
4625         (mips_expand_call): Replace the SIBCALL_P argument with a
4626         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
4627         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
4628         allowing it to modify the call address.  Update the calls to
4629         mips_load_call_address and mips_emit_call_insn.
4630         (mips_split_call): New function.
4631         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
4632         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
4633         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
4634         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
4635         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
4636         if TARGET_MIPS16.
4637         (mips_cprestore_slot): New function.
4638         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
4639         and use mips_cprestore_slot.
4640         (mips_output_function_prologue): Handle TARGET_MIPS16 for
4641         LOADGP_OLDABI.
4642         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
4643         then use a copygp_mips16 instruction to set up $28.
4644         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
4645         (mips16_lay_out_constants): Call split_all_insns_noflow.
4646         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
4647         false if TARGET_MIPS16.
4648         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
4649         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
4650         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
4651         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
4652         MIPS16 code.  Allow MIPS16 o32 PIC.
4653         (mips_override_options): Allow MIPS16 o32 PIC.
4654         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
4655         after reload if TARGET_USE_GOT.
4656         (UNSPEC_COPYGP): New constant.
4657         (length): Use a default length of 8 for MIPS16 GOT loads.
4658         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
4659         (*got_page<mode>): Check mips_split_hi_p.
4660         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
4661         (unspec_got<mode>, unspec_call<mode>): New expanders.
4662         (load_got<mode>, load_call<mode>): Remove the length attributes.
4663         Use a got attribute instead of a type attribute.
4664         (copygp_mips16): New insn.
4665         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
4666         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
4667         (sibcall, sibcall_value, call, call_value): Update the calls
4668         to mips_expand_call.
4669         (call_internal, call_value_internal): Use mips_split_call.
4670         (call_value_multiple_internal): Likewise.
4671         (call_split): Move after call_internal (the insn it is split from).
4672         (call_internal_direct, call_value_internal_direct): Turn into
4673         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
4674         (call_direct_split, call_value_direct_split): New patterns.
4675         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
4676         and use M16_REGS instead of M16_NA_REGS.
4677         * config/mips/predicates.md (const_call_insn_operand): Replace
4678         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
4679         mips_use_pic_fn_addr_reg_p check.
4680         (move_operand): Reject HIGHs if mips_split_hi_p.
4681         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
4682         (__mips16_floatunsisf): Inline __mips16_floatsisf.
4683         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
4684         * config/mips/libgcc-mips16.ver: New file.
4685         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
4686         $(srcdir)/config/mips/libgcc-mips16.ver.
4687
4688 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4689
4690         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
4691         (mips_unspec_address, mips_unspec_offset_high): Likewise.
4692         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
4693         (mips16_cfun_returns_in_fpr_p): Likewise.
4694
4695 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4696
4697         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
4698         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
4699         rather than 4 to PC.
4700
4701 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4702
4703         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
4704         (FUNCTION_PROFILER): Save the static chain pointer into $2
4705         beforehand and restore it aftewards.
4706         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
4707         address directly into $25 and call the function through $25;
4708         do not clobber $3.  Pad the DImode version to cover the space
4709         left by the deleted $25 <- $3 move.
4710         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
4711         the removal of the $25 <- $3 move.
4712         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
4713         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
4714
4715 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4716             Daniel Jacobowitz  <dan@codesourcery.com>
4717
4718         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
4719         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
4720         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
4721         * config/mips/mips.c (mips_start_function_definition): New function.
4722         (mips_end_function_definition): Likewise.
4723         (mips_output_function_prologue): Use mips_start_function_definition.
4724         (mips_output_function_epilogue): Use mips_end_function_definition.
4725         (build_mips16_function_stub): Use mips_start_function_definition
4726         and mips_end_function_definition.
4727         (build_mips16_call_stub): Likewise.
4728
4729 2008-08-09  Richard Guenther  <rguenther@suse.de>
4730
4731         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
4732         * gimple.h (gimple_call_fn): Adjust comment.
4733         (gimple_call_set_fndecl): New function.
4734         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
4735         longer having bare FUNCTION_DECL operand.
4736         (gimple_call_return_type): Likewise.
4737         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
4738
4739         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
4740         (gimple_mod_pow2): Likewise.
4741         (gimple_mod_subtract): Likewise.
4742         (gimple_ic): Likewise.
4743         (gimple_stringop_fixed_value): Likewise.
4744         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
4745         longer having bare FUNCTION_DECL operand.
4746         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
4747         * omp-low.c (optimize_omp_library_calls): Likewise.
4748         * cgraphunit.c (update_call_expr): Likewise.
4749         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
4750         (execute_convert_to_rsqrt): Likewise.
4751         * cfgexpand.c (gimple_to_tree): Simplify.
4752         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
4753         bare FUNCTION_DECL operand.
4754         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
4755         (convert_gimple_call): Use gimple_call_fndecl.
4756         * c-common.c (c_warn_unused_result): Likewise.
4757
4758 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4759
4760         PR c/17880
4761         * c-typeck.c (digest_init): Call verify_sequence_points from here.
4762         (c_finish_return): Likewise.
4763         (c_start_case): Likewise.
4764         * c-common.c (warn_for_collisions_1): Use explicit location in
4765         warning.
4766         * c-parser.c (c_parser_condition): New. Call
4767         verify_sequence_points.
4768         (c_parser_paren_condition): Call c_parser_condition.
4769         (c_parser_for_statement): Call c_parser_condition.
4770
4771 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4772
4773         PR 36901
4774         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
4775         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
4776         Moved from diagnostic.h
4777         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
4778         DK_PERMERROR.
4779         (emit_diagnostic): New.
4780         (warning0, pedwarn0): Delete.
4781         (warning, warning_at, pedwarn, permerror): Return bool.
4782         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
4783         Moved to diagnostic.c.
4784         (struct diagnostic_context): Use correct type for
4785         classify_diagnostic.
4786         (diagnostic_report_diagnostic): Update declaration.
4787         (emit_diagnostic): Declare.
4788         * errors.c (warning): Return bool.
4789         * errors.h (warning): Update declaration.
4790         * toplev.h (warning0, pedwarn0): Delete.
4791         (warning, warning_at, pedwarn, permerror): Return bool.
4792         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
4793         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
4794         inform. Update all calls.
4795         (diagnose_mismatched_decls): Check return value of warning/pedwarn
4796         before giving informative note.
4797         (implicit_decl_warning): Likewise.
4798         * c-typeck.c (build_function_call): Likewise.
4799         * tree-sssa.c (warn_uninit): Likewise.
4800         * builtins.c (gimplify_va_arg_expr): Likewise.
4801
4802 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4803
4804         PR 7651
4805         * doc/invoke.texi (-Wextra): Move warning from here...
4806         (-Wuninitialized): ... to here.
4807
4808 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4809
4810         PR 28875
4811         * flags.h (set_Wunused): Delete
4812         * toplev.c (process_options): Handle Wunused flags here.
4813         * opts.c (maybe_warn_unused_parameter): Delete.
4814         (common_handle_option): Replace set_Wunused by warn_unused.
4815         (set_Wextra): Do not handle Wunused-parameter here.
4816         (set_Wunused): Delete.
4817         * c-opts.c (c_common_handle_option): Replace set_Wunused by
4818         warn_unused.
4819         * common.opt (Wunused): Add Var and Init.
4820         (Wunused-function): Likewise.
4821         (Wunused-label): Likewise.
4822         (Wunused-parameter): Likewise.
4823         (Wunused-value): Likewise.
4824         (Wunused-variable): Likewise.
4825
4826 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
4827
4828         * doc/invoke.texi: Add cpu_type power7.
4829         * config.in (HAVE_AS_VSX): New.
4830         * config.gcc: Add cpu_type power7.
4831         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
4832         VSX instructions.
4833         * configure: Regenerate.
4834         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
4835         power5.
4836         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
4837         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
4838         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
4839
4840 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
4841
4842         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
4843         type to vectorize.builtin_conversion.
4844         (vectorizable_conversion): Likewise.
4845         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
4846         integral type as input.
4847         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
4848         FIX_TRUNC_EXPR.
4849         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
4850         and ALTIVEC_BUILTIN_VCTSXS.
4851         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
4852         formatting.
4853
4854 2008-08-08  Richard Guenther  <rguenther@suse.de>
4855
4856         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
4857         (surely_varying_stmt_p): Calls are varying only if they are
4858         non-builtin and not indirect or have no result.
4859         (ccp_fold): Re-instantiate code before the tuples merge.
4860
4861 2008-08-08  Richard Guenther  <rguenther@suse.de>
4862
4863         PR tree-optimization/37056
4864         * gimple.h (gimple_assign_rhs_class): New helper function.
4865         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
4866         unary operations properly.
4867
4868 2008-08-07  Jan Hubicka  <jh@suse.cz>
4869
4870         * i386.h (ix86_size_cost): Declare.
4871         (ix86_cur_cost): New function macro.
4872         * i386.md (peepholes expanding size and splitters): Predicate by
4873         optimize_insn_for_speed_p.
4874         (peepholes reduce size and splitters): Predicate by
4875         optimize_insn_for_size_p.
4876         * i386.c (ix86_size_cost): Rename from ...
4877         (size_cost): This one.
4878         (override_options): Update.
4879         (decide_alg): Likewise.
4880         (ix86_expand_clear): Use RTL profile.
4881         (ix86_pad_returns): Use RTL profile.
4882
4883 2008-08-07  Jan Hubicka  <jh@suse.cz>
4884
4885         * recog.c (split_all_insns): Set RTL profile
4886         (peephole2_optimize): Likewise.
4887         * function.c (thread_prologue_and_epilogue_insns): Likewise.
4888         * combine.c (combine_instructions): Likewise.
4889
4890 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4891
4892         * c-common.c (c_common_reswords): Also warn about keyword "bool".
4893
4894 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
4895
4896         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
4897         value in a6 after the set_frame_ptr insn.
4898
4899 2008-08-07  Richard Henderson  <rth@redhat.com>
4900
4901         PR debug/37033
4902         * gcc.c (cpp_options): Pass along -g*.
4903
4904 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4905
4906         * config/arm/arm.c (output_move_neon): Update comment describing
4907         big-endian vector layout.
4908         (arm_assemble_integer): Do not handle big-endian NEON vectors
4909         specially.
4910         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
4911         neon_vget_lane<mode>_sext_internal,
4912         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
4913         element indices for big-endian.
4914
4915 2008-08-07  Richard Henderson  <rth@redhat.com>
4916
4917         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
4918         * configure, config.in: Rebuild.
4919         * debug.h (dwarf2out_do_cfi_asm): Declare.
4920         * c-cppbuiltin.c (c_cpp_builtins): Use it.
4921         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
4922         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
4923         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
4924
4925 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4926
4927         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
4928         movv2si_internal): Combine into mov<mode>_internal.
4929         (movv2si_internal_2): Remove.
4930
4931 2008-08-07  Jan Hubicka  <jh@suse.cz>
4932
4933         PR target/37048
4934         * i386.md (single stringop patterns): Enable unconditionally.
4935
4936 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
4937
4938         PR target/36992
4939         * config/i386/emmintrin.h (_mm_move_epi64): Use
4940         __builtin_ia32_movq128.
4941
4942         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
4943         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
4944
4945         * config/i386/sse.md (sse2_movq128): New.
4946
4947         * doc/extend.texi: Document __builtin_ia32_movq128.
4948
4949 2008-08-07  Richard Guenther  <rguenther@suse.de>
4950
4951         PR middle-end/37042
4952         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
4953         pointers can access anything.
4954
4955 2008-08-06  Jan Hubicka  <jh@suse.cz>
4956
4957         * optabs.c (emit_unop_insn): Break out to ...
4958         (maybe_emit_unop_insn): ... this one.
4959         (expand_sfix_optab): Use maybe variant.
4960         * optabs.h (maybe_emit_unop_insn): Declare.
4961
4962         * i386.md (mov0 patterns): Enable by default.
4963         (FP conversion expanders): Disable expansion of code expanding
4964         sequences when instruction should be optimized for size.
4965         (single strinop patterns): Enable when optimizing for size.
4966         (string expanders): Disable expanding of code expanding sequences
4967         when optimizning instruction for size.
4968         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
4969         per BB basis.
4970         (ix86_fp_comparison_sahf_cost): Likewise.
4971         (ix86_expand_branch): Likewise.
4972         (ix86_expand_ashl_const): Likewise.
4973         (ix86_split_ashl): Likewise.
4974         (ix86_expand_strlen): Likewise.
4975         (ix86_emit_fp_unordered_jump): Likewie.
4976
4977 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4978
4979         * c-common.c: Fix typo.
4980         (c_common_reswords): Activate more C++ keyword warnings.
4981
4982         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
4983
4984 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4985
4986         PR 26785
4987         * diagnostic.c (permerror_at): New.
4988         * toplev.h (permerror_at): Declare.
4989
4990 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
4991             Ira Rosen  <irar@il.ibm.com>
4992
4993         * tree-vect-transform.c (vect_model_simple_cost): Return
4994         immediately if stmt is pure SLP.
4995         (vect_model_store_cost): Ditto.
4996         (vect_model_load_cost): Ditto.
4997         (vectorizable_store): Remove PURE_SLP check before call
4998         to vect_model_store_cost.
4999         (vect_model_store_cost): When checking whether stmt describe
5000         strided access, add a check that it is not slp_node.
5001
5002 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5003
5004         PR 8715
5005         * c-common.c (warn_for_sign_compare): New. Handle separately the
5006         case that 'constant' is zero.
5007         * c-typeck.c (build_binary_op): Move code to c-common.c
5008
5009 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5010
5011         * config/alpha/alpha.c (alpha_preferred_reload_class,
5012         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
5013         alpha_output_mi_thunk_osf): Avoid C++ keywords.
5014         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
5015         * config/arm/arm.md: Likewise.
5016         * config/avr/avr-protos.h (preferred_reload_class,
5017         test_hard_reg_class, avr_simplify_comparison_p,
5018         out_shift_with_cnt, class_max_nregs): Likewise.
5019         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
5020         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
5021         preferred_reload_class, test_hard_reg_class): Likewise.
5022         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
5023         bfin_memory_move_cost, bfin_secondary_reload,
5024         bfin_output_mi_thunk): Likewise.
5025         * config/crx/crx.c (crx_secondary_reload_class,
5026         crx_memory_move_cost): Likewise.
5027         * config/frv/frv-protos.h (frv_secondary_reload_class,
5028         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
5029         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
5030         frv_secondary_reload_class, frv_class_likely_spilled_p,
5031         frv_class_max_nregs): Likewise.
5032         * config/h8300/h8300.c (h8300_classify_operand,
5033         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
5034         Likewise.
5035         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
5036         * config/ia64/ia64.c (ia64_preferred_reload_class,
5037         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
5038         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
5039         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
5040         Likewise.
5041         * config/m68hc11/m68hc11.c (preferred_reload_class,
5042         m68hc11_memory_move_cost): Likewise.
5043         * config/mcore/mcore.c (mcore_secondary_reload_class,
5044         mcore_reload_class): Likewise.
5045         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
5046         mips_class_max_nregs, mips_cannot_change_mode_class,
5047         mips_preferred_reload_class, mips_secondary_reload_class,
5048         mips_output_mi_thunk): Likewise.
5049         * config/mmix/mmix.c (mmix_preferred_reload_class,
5050         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
5051         Likewise.
5052         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
5053         Likewise.
5054         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
5055         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
5056         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
5057         * config/rs6000/rs6000.c (paired_expand_vector_init,
5058         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
5059         compare_section_name, rs6000_memory_move_cost): Likewise.
5060         * config/s390/s390.c (s390_emit_compare_and_swap,
5061         s390_preferred_reload_class, s390_secondary_reload,
5062         legitimize_pic_address, legitimize_tls_address,
5063         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
5064         s390_class_max_nregs): Likewise.
5065         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
5066         * config/s390/s390.md: Likewise.
5067         * config/score/score-protos.h (score_secondary_reload_class,
5068         score_preferred_reload_class): Likewise.
5069         * config/score/score.c (score_preferred_reload_class,
5070         score_secondary_reload_class): Likewise.
5071         * config/score/score3.c (score3_output_mi_thunk,
5072         score3_preferred_reload_class, score3_secondary_reload_class,
5073         score3_hard_regno_mode_ok): Likewise.
5074         * config/score/score3.h (score3_preferred_reload_class,
5075         score3_secondary_reload_class): Likewise.
5076         * config/score/score7.c (score7_output_mi_thunk,
5077         score7_preferred_reload_class, score7_secondary_reload_class,
5078         score7_hard_regno_mode_ok): Likewise.
5079         * config/score/score7.h (score7_preferred_reload_class,
5080         score7_secondary_reload_class): Likewise.
5081         * config/sh/sh.c (prepare_move_operands, output_far_jump,
5082         output_branchy_insn, add_constant, gen_block_redirect,
5083         sh_insn_length_adjustment, sh_cannot_change_mode_class,
5084         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
5085         Likewise.
5086         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5087         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
5088         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
5089         xstormy16_preferred_reload_class): Likewise.
5090         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
5091         xtensa_expand_atomic, override_options,
5092         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
5093         Likewise.
5094         * reorg.c (try_merge_delay_insns): Likewise.
5095         * tree.c (merge_dllimport_decl_attributes): Likewise.
5096
5097         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
5098
5099 2008-08-06  Michael Matz  <matz@suse.de>
5100
5101         * Makefile.in (write_entries_to_file): Quote words.
5102         * gengtype.c: (read_input_line): Skip over leading white-space.
5103
5104 2008-08-06  Marc Gauthier  <marc@tensilica.com>
5105
5106         * config.gcc: Match more processor names for Xtensa.
5107         * configure.ac: Likewise.
5108         * doc/install.texi (Specific): Likewise.
5109         * configure: Regenerate.
5110
5111 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5112
5113         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
5114         * calls.c (avoid_likely_spilled_reg): Likewise.
5115         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
5116         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
5117         * config/i386/i386.c (ix86_expand_special_args_builtin,
5118         ix86_secondary_reload): Likewise.
5119         * except.c (struct eh_region, gen_eh_region_catch,
5120         remove_unreachable_regions, duplicate_eh_regions,
5121         assign_filter_values, build_post_landing_pads,
5122         sjlj_find_directly_reachable_regions, remove_eh_handler,
5123         reachable_next_level, foreach_reachable_handler,
5124         can_throw_internal_1, can_throw_external_1,
5125         collect_one_action_chain): Likewise.
5126         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
5127         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
5128         * function.c (update_temp_slot_address, instantiate_new_reg,
5129         instantiate_virtual_regs_in_rtx,
5130         instantiate_virtual_regs_in_insn): Likewise.
5131         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
5132         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
5133         gimplify_cleanup_point_expr): Likewise.
5134         * ipa-cp.c (ipcp_lattice_changed): Likewise.
5135         * passes.c (next_pass_1): Likewise.
5136         * print-tree.c (print_node_brief, print_node): Likewise.
5137         * profile.c (branch_prob): Likewise.
5138         * tree-dump.c (dump_register): Likewise.
5139         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
5140         Likewise.
5141         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
5142         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
5143         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
5144         copy_arguments_for_versioning, copy_static_chain): Likewise.
5145         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
5146         add_new_name_mapping, register_new_name_mapping): Likewise.
5147         * tree-mudflap.c (mf_xform_derefs): Likewise.
5148         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
5149         get_init_expr, combine_chains): Likewise.
5150         * tree-pretty-print.c (dump_generic_node): Likewise.
5151         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
5152         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
5153         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
5154         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
5155
5156 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
5157
5158         PR middle-end/37010
5159         * calls.c (expand_call): Use the biggest preferred stack
5160         boundary.
5161
5162 2008-08-06  Michael Matz  <matz@suse.de>
5163
5164         PR target/36613
5165         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
5166         for reused reload, instead of overwriting them.
5167
5168 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
5169
5170         PR middle-end/37009
5171         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
5172         for incoming stack boundary.
5173
5174         * function.c (assign_parm_find_entry_rtl): Update
5175         parm_stack_boundary.
5176
5177         * function.h (rtl_data): Add parm_stack_boundary.
5178
5179         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
5180         parm_stack_boundary for incoming stack boundary.
5181
5182 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
5183
5184         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
5185         for unrepresentable subregs or treat them as equal to other regs
5186         or subregs with the same register number.
5187
5188 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
5189
5190         PR middle-end/35432
5191         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
5192         if want_value.
5193
5194 2008-08-06  Jan Hubicka  <jh@suse.cz>
5195
5196         * predict.c (maybe_hot_frequency_p): When profile is absent, all
5197         frequencies might be hot.
5198
5199 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
5200
5201         * reload.c (find_reloads): Force constants into literal pool
5202         also if they are wrapped in a SUBREG.
5203
5204 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5205
5206         PR target/35659
5207         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
5208         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
5209         Don't allow predicated instructions for data speculation.
5210         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
5211         declaration.
5212
5213 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5214
5215         * haifa-sched.c (extend_global): Split to extend_global_data and
5216         extend_region_data.  Update all uses.
5217         (extend_all): Rename to extend_block_data.
5218
5219 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5220
5221         * sched-rgn.c (new_ready): Check if instruction can be
5222         speculatively scheduled before attempting speculation.
5223         (debug_rgn_dependencies): Remove wrongful assert.
5224
5225 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5226
5227         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
5228
5229 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5230
5231         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
5232         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
5233         va_size, and type_size.
5234
5235 2008-08-04  Jason Merrill  <jason@redhat.com>
5236
5237         PR c++/37016
5238         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
5239         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
5240
5241 2008-08-05  Richard Henderson  <rth@redhat.com>
5242
5243         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
5244         * configure: Rebuild.
5245
5246 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5247
5248         PR tree-opt/37024
5249         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
5250         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
5251         is a conversion.
5252
5253 2008-08-05  Richard Henderson  <rth@redhat.com>
5254
5255         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
5256         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
5257         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
5258         * common.opt (fdwarf2-cfi-asm): New.
5259         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
5260         * config.in, configure: Rebuild.
5261         * dwarf2asm.c (dw2_asm_output_data_raw): New.
5262         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
5263         (dw2_force_const_mem): Externalize.
5264         * dwarf2asm.h: Update.
5265         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
5266         generate a real label.
5267         (output_cfi_directive): New.
5268         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
5269         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
5270         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
5271         and .cfi_lsda.
5272         (dwarf2out_end_epilogue): Emit .cfi_endproc.
5273         (output_loc_operands_raw, output_loc_sequence_raw): New.
5274         (output_cfa_loc_raw): New.
5275
5276 2008-08-05  Paul Brook  <paul@codesourcery.com>
5277
5278         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
5279         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
5280         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
5281         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
5282         * config/arm/arm.h (TARGET_VFPD32): Define.
5283         (TARGET_VFP3): Use TARGET_VFPD32.
5284         (fputype): Add FPUTYPE_VFP3D16.
5285         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
5286         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
5287         * config/arm/arm-cores.def: Add cortex-r4f.
5288         * config/arm/arm-tune.md: Regenerate.
5289
5290 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5291
5292         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
5293         Reword some comments throughout the file.
5294
5295         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
5296         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
5297         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
5298         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
5299
5300         (MFC_START_ENABLE): Remove PPU-only define.
5301         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
5302         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
5303
5304         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
5305         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
5306         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
5307         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
5308         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
5309         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
5310         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
5311
5312         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
5313         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
5314         (mfc_sdcrt, mfc_sdcrtst): Likewise.
5315         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
5316
5317         (spu_read_machine_status): Fix typo.
5318
5319 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5320
5321         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
5322         SUBREG of multi-word hard register.
5323         * config/spu/spu.c (valid_subreg): Likewise.
5324         (adjust_operand): Handle SUBREGs of multi-word hard registers.
5325
5326 2008-08-04  Richard Guenther  <rguenther@suse.de>
5327
5328         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
5329         the candidate with the stripped base if that base is different
5330         from the original base even for offset zero.
5331
5332 2008-08-04  Richard Guenther  <rguenther@suse.de>
5333
5334         PR middle-end/36691
5335         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
5336         check for no_overflow.
5337
5338 2008-08-04  Richard Guenther  <rguenther@suse.de>
5339
5340         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
5341
5342 2008-08-04  Paul Brook  <paul@codesourcery.com>
5343
5344         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
5345         (arm_order_regs_for_local_alloc): New function.
5346         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
5347         prototype.
5348         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
5349
5350 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
5351
5352         PR target/37012
5353         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
5354         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
5355         (ix86_expand_epilogue): Likewise.
5356
5357 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
5358
5359         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
5360         in comments.
5361
5362 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
5363
5364         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
5365         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
5366         (*movv2sf_internal_rex64): Ditto.
5367
5368 2008-08-03  Jan Hubicka  <jh@suse.cz>
5369
5370         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
5371         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
5372         * expmed.c (expand_smod_pow2): Likewise.
5373
5374 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
5375
5376         PR target/36992
5377         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
5378         alternative 0 of operand 1.
5379         (*vec_concatv2di_rex64_sse): Ditto.
5380         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
5381         of operand 1.
5382         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
5383         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
5384         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
5385         (*movv2sf_internal_rex64): Ditto.
5386
5387 2008-08-02  Richard Guenther  <rguenther@suse.de>
5388
5389         PR target/35252
5390         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
5391         (ssedoublesizemode): New mode attribute.
5392         (sse_shufps): Call gen_sse_shufps_v4sf.
5393         (sse_shufps_1): Macroize.
5394         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
5395         (sse2_shufpd_1): Macroize.
5396         (vec_extract_odd, vec_extract_even): New expanders.
5397         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
5398         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
5399         * i386.c (ix86_expand_vector_init_one_nonzero): Call
5400         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
5401         (ix86_expand_vector_set): Likewise.
5402         (ix86_expand_reduc_v4sf): Likewise.
5403
5404 2008-08-01  Doug Kwan  <dougkwan@google.com>
5405
5406         * matrix-reorg.c: Re-enable all code.
5407         (struct malloc_call_data): Change CALL_STMT to gimple type.
5408         (collect_data_for_malloc_call): Tuplify.
5409         (struct access_site_info): Change STMT to gimple type.
5410         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
5411         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
5412         (struct free_info): Change STMT to gimple type.
5413         (struct matrix_access_phi_node):  Change PHI to gimple type.
5414         (get_inner_of_cast_expr): Remove.
5415         (may_flatten_matrices_1): Tuplify.
5416         (may_flatten_matrices): Ditto.
5417         (mark_min_matrix_escape_level): Ditto.
5418         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
5419         (ssa_accessed_in_call_rhs): New
5420         (ssa_accessed_in_assign_rhs): New
5421         (record_access_alloc_site_info): Tuplify.
5422         (add_allocation_site): Ditto.
5423         (analyze_matrix_allocation_site): Ditto.
5424         (analyze_transpose): Ditto.
5425         (get_index_from_offset): Ditto.
5426         (update_type_size): Ditto.
5427         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
5428         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
5429         (analyze_accesses_for_phi_node): Tuplify.
5430         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
5431         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
5432         (analyze_matrix_accesses): Tuplify.
5433         (check_var_data): New call-back type for check_var_notmodified_p.
5434         (check_var_notmodified_p): Tuplify and use call-back struct to
5435         return statement found.
5436         (can_calculate_expr_before_stmt): Factor out statement related code
5437         into ...
5438         (can_calculate_stmt_before_stmt): New.
5439         (check_allocation_function): Tuplify.
5440         (find_sites_in_func): Ditto.
5441         (record_all_accesses_in_func): Ditto.
5442         (transform_access_sites): Ditto.
5443         (transform_allocation_sites): Ditto.
5444         (matrix_reorg): Re-enable.
5445         (gate_matrix_reorg): Re-enable.
5446
5447 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
5448
5449         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
5450         for labels for which it hasn't been set yet.  If it has been set,
5451         stop walking insns and continue with next worklist item.
5452         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
5453         if the only BARRIER is at the very end of a function.
5454
5455 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
5456
5457         * cfgexpand.c (expand_stack_alignment): Assert that
5458         stack_realign_drap and drap_rtx must match.
5459
5460         * function.c (instantiate_new_reg): If DRAP is used to realign
5461         stack, replace virtual_incoming_args_rtx with internal arg
5462         pointer.
5463
5464 2008-08-01  Richard Guenther  <rguenther@suse.de>
5465
5466         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
5467         loop information only if we initialized it.
5468         (execute_pre): Call fini_pre with in_fre.
5469         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
5470         if we do not unroll because we hit max-completely-peeled-insns.
5471         Use our estimation for consistency, do allow shrinking.
5472
5473 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
5474
5475         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
5476         with MIN_STACK_BOUNDARY.
5477         (ix86_update_stack_boundary): Likewise.
5478         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
5479         STACK_BOUNDARY.
5480
5481         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
5482         (MIN_STACK_BOUNDARY): This.
5483
5484 2008-08-01  Richard Guenther  <rguenther@suse.de>
5485
5486         PR middle-end/36997
5487         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
5488
5489 2008-08-01  Richard Guenther  <rguenther@suse.de>
5490
5491         PR tree-optimization/36988
5492         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
5493         do not matter if that doesn't change volatile qualification.
5494
5495 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
5496
5497         * configure.ac: Do not generate libada-mk.  Do not subst
5498         host_cc_for_libada.
5499         * libada-mk.in: Remove.
5500         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
5501         * configure: Regenerate.
5502
5503 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
5504
5505         * tree-pass.h: Added comment about not dumping passes with name
5506         starting with star in struct opt_pass.
5507         * passes.c (register_dump_files_1): Don't do dump for a pass with
5508         name starting with star.
5509         * doc/passes.texi (Pass manager): Mention pass names and special
5510         meaning of star prefix to avoid dump.
5511
5512 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
5513
5514         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
5515         to MIPS64r2.
5516         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
5517         (ISA_MIPS64R2): New macro.
5518         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
5519         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
5520         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
5521         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
5522         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
5523         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
5524         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
5525         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
5526         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
5527         Move up to keep list alphabetically sorted.
5528         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
5529         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
5530         processor.
5531         * doc/invoke.texi (MIPS Options): Add -mips64r2.
5532         (-march=@var{arch}): Add mips64r2.
5533
5534 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5535
5536         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
5537
5538 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
5539
5540         * expr.c (expand_assignment): Check for complete type.
5541
5542 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5543
5544         PR debug/36977
5545         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
5546
5547         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
5548         for stack alignment.
5549
5550         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
5551
5552 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
5553
5554         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
5555         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
5556
5557 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
5558
5559         PR rtl-optimization/36419
5560         * dwarf2out.c (barrier_args_size): New variable.
5561         (compute_barrier_args_size, compute_barrier_args_size_1): New
5562         functions.
5563         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
5564         if not called yet in the current function, use barrier_args_size
5565         array to find the new args_size value.
5566         (dwarf2out_frame_debug): Free and clear barrier_args_size.
5567
5568 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5569
5570         PR debug/36980
5571         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
5572         rule 19.
5573
5574 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5575
5576         PR debug/36976
5577         * dwarf2out.c (dwarf2out_args_size_adjust): New.
5578         (dwarf2out_stack_adjust): Use it.
5579         (dwarf2out_frame_debug_expr): Likewise.
5580
5581 2008-07-31  Richard Guenther  <rguenther@suse.de>
5582
5583         PR tree-optimization/36978
5584         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
5585         the generated condition.
5586
5587 2008-07-31  Richard Guenther  <rguenther@suse.de>
5588
5589         * passes.c (init_optimization_passes): Always call
5590         pass_early_warn_uninitialized.
5591         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
5592         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
5593         * doc/passes.texi (Warn for uninitialized variables): Adjust.
5594
5595 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
5596
5597         PR c/36970
5598         * builtins.c (maybe_emit_free_warning): New function.
5599         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
5600         maybe_emit_free_warning for BUILT_IN_FREE.
5601
5602         PR debug/36278
5603         * dwarf2out.c (get_context_die): New function.
5604         (force_decl_die, force_type_die): Use it.
5605         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
5606         returns NULL, force generation of DW_TAG_typedef and put that into
5607         DW_AT_import.
5608
5609         PR preprocessor/36649
5610         * c-pch.c (c_common_read_pch): Save and restore
5611         line_table->trace_includes across PCH restore.
5612
5613 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
5614
5615         PR ada/36554
5616         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
5617
5618 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
5619
5620         PR 36974
5621         * final.c (call_from_call_insn): Handle COND_EXEC.
5622
5623 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
5624
5625         * builtins.c (std_gimplify_va_arg_expr): Replace
5626         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
5627         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
5628
5629 2008-07-30  Joey Ye  <joey.ye@intel.com>
5630             H.J. Lu  <hongjiu.lu@intel.com>
5631
5632         * builtins.c (expand_builtin_setjmp_receiver): Replace
5633         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
5634         (expand_builtin_apply_args_1): Likewise.
5635         (expand_builtin_longjmp): Need DRAP for stack alignment.
5636         (expand_builtin_apply): Likewise.
5637
5638         * caller-save.c (setup_save_areas): Call assign_stack_local_1
5639         instead of assign_stack_local to allow alignment reduction.
5640
5641         * calls.c (emit_call_1): Need DRAP for stack alignment if
5642         return pops.
5643         (expand_call): Replace virtual_incoming_args_rtx with
5644         crtl->args.internal_arg_pointer.
5645         * stmt.c (expand_nl_goto_receiver): Likewise.
5646
5647         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
5648         alignment and store to stack_alignment_estimated and
5649         max_used_stack_slot_alignment.
5650         (expand_one_var): Likewise.
5651         (expand_stack_alignment): New function.
5652         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
5653         and stack_alignment_estimated fields in rtl_data.  Call
5654         expand_stack_alignment at end.
5655
5656         * defaults.h (INCOMING_STACK_BOUNDARY): New.
5657         (MAX_STACK_ALIGNMENT): Likewise.
5658         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
5659         (SUPPORTS_STACK_ALIGNMENT): Likewise.
5660
5661         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
5662         stack alignment when generating virtual registers.
5663
5664         * function.c (assign_stack_local): Renamed to ...
5665         (assign_stack_local_1): This.  Add a parameter to indicate
5666         if it is OK to reduce alignment.
5667         (assign_stack_local): Use it.
5668         (instantiate_new_reg): Instantiate virtual incoming args rtx
5669         to vDRAP if stack realignment and DRAP is needed.
5670         (assign_parms): Collect parameter/return type alignment and
5671         contribute to stack_alignment_estimated.
5672         (locate_and_pad_parm): Likewise.
5673         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
5674         with crtl->args.internal_arg_pointer.
5675
5676         * function.h (rtl_data): Add new field drap_reg,
5677         max_used_stack_slot_alignment, stack_alignment_estimated,
5678         stack_realign_needed, need_drap, stack_realign_processed and
5679         stack_realign_finalized.
5680         (stack_realign_fp): New macro.
5681         (stack_realign_drap): Likewise.
5682
5683         * global.c (compute_regsets): Frame pointer is needed when
5684         stack is realigned.  Can eliminate frame pointer when stack is
5685         realigned and dynamic realigned argument pointer isn't used.
5686
5687         * reload1.c (update_eliminables):  Frame pointer is needed
5688         when stack is realigned.
5689         (init_elim_table): Can eliminate frame pointer when stack is
5690         realigned and dynamic realigned argument pointer isn't used.
5691
5692         * rtl.h (assign_stack_local_1): Declare new funtion.
5693
5694         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
5695         (TARGET_GET_DRAP_RTX): Likewise.
5696         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
5697         TARGET_GET_DRAP_RTX.
5698
5699         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
5700
5701         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
5702         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
5703
5704 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
5705             H.J. Lu  <hongjiu.lu@intel.com>
5706
5707         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
5708         vdrap_reg, stack_realign and drap_reg_saved.
5709         (add_cfi): Don't allow redefining CFA when DRAP is used.
5710         (reg_save): Handle stack alignment.
5711         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
5712         alignment.  Don't generate DWARF information for (set fp sp)
5713         when DRAP is used.
5714         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
5715         to INVALID_REGNUM.
5716         (int_loc_descriptor): Move prototype forward.  Also define if
5717         DWARF2_UNWIND_INFO is true.
5718         (output_cfa_loc): Handle DW_CFA_expression.
5719         (build_cfa_aligned_loc): New.
5720         (based_loc_descr): Update assert for stack realign.  For local
5721         variables, use sp+offset when stack is aligned without drap and
5722         fp+offset when stack is aligned with drap.  For arguments, use
5723         cfa+offset when drap is used to align stack.
5724
5725 2008-07-30  Joey Ye  <joey.ye@intel.com>
5726             H.J. Lu  <hongjiu.lu@intel.com>
5727
5728         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
5729         Break long line.
5730         (ix86_gen_andsp): New.
5731         (ix86_user_incoming_stack_boundary): Likewise.
5732         (ix86_default_incoming_stack_boundary): Likewise.
5733         (ix86_incoming_stack_boundary): Likewise.
5734         (ix86_can_eliminate): Likewise.
5735         (find_drap_reg): Likewise.
5736         (ix86_update_stack_boundary): Likewise.
5737         (ix86_get_drap_rtx): Likewise.
5738         (ix86_finalize_stack_realign_flags): Likewise.
5739         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
5740         (TARGET_GET_DRAP_RTX): Likewise.
5741         (override_options): Overide option value for new options.
5742         (ix86_function_ok_for_sibcall): Remove check for
5743         force_align_arg_pointer.
5744         (ix86_handle_cconv_attribute): Likewise.
5745         (ix86_function_regparm): Likewise.
5746         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
5747         (ix86_va_start): Replace virtual_incoming_args_rtx with
5748         crtl->args.internal_arg_pointer.
5749         (ix86_select_alt_pic_regnum): Check DRAP register.
5750         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
5751         (ix86_compute_frame_layout): Compute frame layout wrt stack
5752         realignment.
5753         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
5754         (ix86_expand_prologue): Decide if stack realignment is needed
5755         and generate prologue code accordingly.
5756         (ix86_expand_epilogue): Generate epilogue code wrt stack
5757         realignment is really needed or not.
5758
5759         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
5760         (ABI_STACK_BOUNDARY): Likewise.
5761         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
5762         (STACK_REALIGN_DEFAULT): Likewise.
5763         (INCOMING_STACK_BOUNDARY): Likewise.
5764         (MAX_STACK_ALIGNMENT): Likewise.
5765         (ix86_incoming_stack_boundary): Likewise.
5766         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
5767         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
5768         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
5769         (machine_function): Remove force_align_arg_pointer.
5770
5771         * config/i386/i386.md (BX_REG): New.
5772         (R13_REG): Likewise.
5773
5774         * config/i386/i386.opt (mforce_drap): New.
5775         (mincoming-stack-boundary): Likewise.
5776         (mstackrealign): Add Init(-1).
5777
5778         * config/i386/i386-protos.h (ix86_can_eliminate): New
5779
5780 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
5781
5782         * doc/extend.texi: Update force_align_arg_pointer.
5783
5784         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
5785         -mstackrealign.
5786
5787         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
5788         (INCOMING_STACK_BOUNDARY): Likewise.
5789         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
5790         (TARGET_GET_DRAP_RTX): Likewise.
5791
5792 2008-07-30  Andreas Schwab  <schwab@suse.de>
5793
5794         PR rtl-optimization/36929
5795         * dse.c (replace_inc_dec): Use emit_insn_before instead of
5796         add_insn_before and fix argument order.
5797         (replace_inc_dec_mem): Handle NULL rtx.
5798
5799 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
5800
5801         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
5802         function.
5803         (arm_compute_initial_elimination_offset): Use it.
5804         (arm_compute_save_reg_mask): Include static chain save slot when
5805         calculating alignment.
5806         (arm_get_frame_offsets): Ditto.
5807         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
5808         that we can use to decrement the stack when the stack decrement
5809         could be too big for an immediate value in a single insn.
5810         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
5811
5812 2008-07-30  Richard Guenther  <rguenther@suse.de>
5813
5814         PR tree-optimization/36967
5815         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
5816         Release defs of statements we remove.
5817
5818 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
5819
5820         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
5821         instead of NULL_RTVEC.
5822
5823 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
5824
5825         PR target/35866
5826
5827         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
5828         vector modes.
5829
5830 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
5831
5832         * final.c (call_from_call_insn): New.
5833         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
5834
5835 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
5836
5837         * configure.ac: Substitute ADA_CFLAGS.
5838         * configure: Regenerate.
5839         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
5840         * Makefile.in: Remove mention of X_* variables.
5841         * config/pa/x-ada-hpux10: Remove.
5842         * config/pa/x-ada: Remove.
5843
5844         * doc/fragments.texi: Update.
5845
5846 2008-07-30  Olivier Hainque  <hainque@adacore.com>
5847
5848         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
5849         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
5850         __dso_handle explicitly here.
5851
5852 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5853
5854         PR 34389
5855         * c-typeck.c (build_binary_op): Encapsulate code into...
5856         * c-common.c (shorten_binary_op): ...this new function.
5857         (conversion_warning): Use the new function. Handle non-negative
5858         constant in bitwise-and.
5859         * c-common.h (shorten_binary_op): Declare.
5860
5861 2008-07-30  Olivier Hainque  <hainque@adacore.com>
5862
5863         * scan.c (make_sstring_space): Add explicit conversions of
5864         allocator's return value.
5865         * fix-header.c (recognized_function): Likewise.
5866
5867 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5868
5869         * doc/cpp.texi: Update to GFDL 1.2.
5870         * doc/gcc.texi: Do not list GPL as Invariant Section.
5871         * doc/gccint.texi: Likewise.  Update copyright years.
5872         * doc/install.texi: Update copyright years.
5873
5874 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
5875
5876         PR target/36955
5877         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
5878         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
5879
5880 2008-07-29  Jan Hubicka  <jh@suse.cz>
5881
5882         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
5883         (grokdeclarator): Likewise.
5884         * langhooks.c (lhd_warn_unused_global_decl): Use
5885         DECL_DECLARED_INLINE_P.
5886         * print-tree.c (print_node): Remove DECL_INLINE check.
5887
5888 2008-07-29  Richard Guenther  <rguenther@suse.de>
5889
5890         PR tree-optimization/36945
5891         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
5892         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
5893         Record invariant addresses un-decomposed.
5894         (copy_reference_ops_from_call): Record reference call
5895         arguments properly.  Simplify.
5896         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
5897         helper split out from ...
5898         (create_component_ref_by_pieces): ... here.  Simplify.
5899         Prepare for recursive invocation for call arguments.
5900         (create_expression_by_pieces): Adjust call to
5901         create_component_ref_by_pieces.
5902         (compute_avail): Process operand 2 of reference ops.
5903
5904 2008-07-29  Richard Guenther  <rguenther@suse.de>
5905
5906         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
5907
5908 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
5909
5910         * c-format.c (check_format_types): Revert unwanted checkin.
5911
5912 2008-07-29  Jan Hubicka  <jh@suse.cz>
5913
5914         * flags.h (flag_really_no_inline): Remove.
5915         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
5916         * toplev.c (flag_really_no_inline): Remove.
5917         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
5918         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
5919         (cgraph_decide_inlining_incrementally): Likewise.
5920         (compute_inline_parameters): Likewise.
5921         * opts.c (decode_options): Simplify.
5922         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
5923         * common.opt (finline): Initialize to 1.
5924         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
5925
5926 2008-07-29  Jan Hubicka  <jh@suse.cz>
5927
5928         * predict.c (always_optimize_for_size_p): New function.
5929         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5930         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5931         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
5932         functions.
5933         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
5934         * function.c (prepare_function_start): Set default profile.
5935         * function.h (rtl_data): Add maybe_hot_insn_p.
5936         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
5937         (construct_exit_block): Likewise.
5938         (tree_expand_cfg): Likewise.
5939         * basic-block.h
5940         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5941         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5942         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
5943         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
5944         Declare.
5945
5946 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5947
5948         PR 34985
5949         * c-decl.c (merge_decls): Merge USED flags.
5950
5951 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
5952
5953         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
5954         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
5955         next_stack, lab_false and lab_over trees.
5956
5957 2008-07-28  Richard Guenther  <rguenther@suse.de>
5958
5959         PR tree-optimization/36957
5960         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
5961         (useless_type_conversion_p): Remove.
5962         (types_compatible_p): Remove.
5963         * gimple.h (tree_ssa_useless_type_conversion): Declare.
5964         (useless_type_conversion_p): Declare.
5965         (types_compatible_p): Declare.
5966         (gimple_expr_type): Return the base type only if it is
5967         trivially convertible to the subtype.
5968
5969 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
5970
5971         * configure.ac: Use the m4_do macro to concatenate the warnings into
5972         one string in ACX_PROG_CC_WARNING_OPTS,
5973         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
5974         * configure: Regenerate.
5975
5976 2008-07-28  Richard Guenther  <rguenther@suse.de>
5977
5978         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
5979         (insert_fake_stores): Remove.
5980         (realify_fake_stores): Likewise.
5981         (execute_pre): Remove dead code.
5982         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
5983         (find_func_aliases): Deal with it here instead.
5984         Re-enable gcc_unreachable call.
5985
5986 2008-07-28  Richard Guenther  <rguenther@suse.de>
5987
5988         Merge from gimple-tuples-branch.
5989
5990         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
5991         * gimple.def: New file.
5992         * gsstruct.def: Likewise.
5993         * gimple-iterator.c: Likewise.
5994         * gimple-pretty-print.c: Likewise.
5995         * tree-gimple.c: Removed.  Merged into ...
5996         * gimple.c: ... here.  New file.
5997         * tree-gimple.h: Removed.  Merged into ...
5998         * gimple.h: ... here.  New file.
5999
6000         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
6001         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
6002         --enable-checking=gimple flag.
6003         * config.in: Likewise.
6004         * configure: Regenerated.
6005
6006         * tree-ssa-operands.h: Tuplified.
6007         * tree-vrp.c: Likewise.
6008         * tree-loop-linear.c: Likewise.
6009         * tree-into-ssa.c: Likewise.
6010         * tree-ssa-loop-im.c: Likewise.
6011         * tree-dump.c: Likewise.
6012         * tree-complex.c: Likewise.
6013         * cgraphbuild.c: Likewise.
6014         * tree-ssa-threadupdate.c: Likewise.
6015         * tree-ssa-loop-niter.c: Likewise.
6016         * tree-pretty-print.c: Likewise.
6017         * tracer.c: Likewise.
6018         * gengtype.c: Likewise.
6019         * tree-loop-distribution.c: Likewise.
6020         * tree-ssa-loop-unswitch.c: Likewise.
6021         * cgraph.c: Likewise.
6022         * cgraph.h: Likewise.
6023         * tree-ssa-loop-manip.c: Likewise.
6024         * value-prof.c: Likewise.
6025         * tree-ssa-loop-ch.c: Likewise.
6026         * tree-tailcall.c: Likewise.
6027         * value-prof.h: Likewise.
6028         * tree.c: Likewise.
6029         * tree.h: Likewise.
6030         * tree-pass.h: Likewise.
6031         * ipa-cp.c: Likewise.
6032         * tree-scalar-evolution.c: Likewise.
6033         * tree-scalar-evolution.h: Likewise.
6034         * target.h: Likewise.
6035         * lambda-mat.c: Likewise.
6036         * tree-phinodes.c: Likewise.
6037         * diagnostic.h: Likewise.
6038         * builtins.c: Likewise.
6039         * tree-ssa-alias-warnings.c: Likewise.
6040         * cfghooks.c: Likewise.
6041         * fold-const.c: Likewise.
6042         * cfghooks.h: Likewise.
6043         * omp-low.c: Likewise.
6044         * tree-ssa-dse.c: Likewise.
6045         * ipa-reference.c: Likewise.
6046         * tree-ssa-uncprop.c: Likewise.
6047         * toplev.c: Likewise.
6048         * tree-gimple.c: Likewise.
6049         * tree-gimple.h: Likewise.
6050         * tree-chrec.c: Likewise.
6051         * tree-chrec.h: Likewise.
6052         * tree-ssa-sccvn.c: Likewise.
6053         * tree-ssa-sccvn.h: Likewise.
6054         * cgraphunit.c: Likewise.
6055         * tree-ssa-copyrename.c: Likewise.
6056         * tree-ssa-ccp.c: Likewise.
6057         * tree-ssa-loop-ivopts.c: Likewise.
6058         * tree-nomudflap.c: Likewise.
6059         * tree-call-cdce.c: Likewise.
6060         * ipa-pure-const.c: Likewise.
6061         * c-format.c: Likewise.
6062         * tree-stdarg.c: Likewise.
6063         * tree-ssa-math-opts.c: Likewise.
6064         * tree-ssa-dom.c: Likewise.
6065         * tree-nrv.c: Likewise.
6066         * tree-ssa-propagate.c: Likewise.
6067         * ipa-utils.c: Likewise.
6068         * tree-ssa-propagate.h: Likewise.
6069         * tree-ssa-alias.c: Likewise.
6070         * gimple-low.c: Likewise.
6071         * tree-ssa-sink.c: Likewise.
6072         * ipa-inline.c: Likewise.
6073         * c-semantics.c: Likewise.
6074         * dwarf2out.c: Likewise.
6075         * expr.c: Likewise.
6076         * tree-ssa-loop-ivcanon.c: Likewise.
6077         * predict.c: Likewise.
6078         * tree-ssa-loop.c: Likewise.
6079         * tree-parloops.c: Likewise.
6080         * tree-ssa-address.c: Likewise.
6081         * tree-ssa-ifcombine.c: Likewise.
6082         * matrix-reorg.c: Likewise.
6083         * c-decl.c: Likewise.
6084         * tree-eh.c: Likewise.
6085         * c-pretty-print.c: Likewise.
6086         * lambda-trans.c: Likewise.
6087         * function.c: Likewise.
6088         * langhooks.c: Likewise.
6089         * ebitmap.h: Likewise.
6090         * tree-vectorizer.c: Likewise.
6091         * function.h: Likewise.
6092         * langhooks.h: Likewise.
6093         * tree-vectorizer.h: Likewise.
6094         * ipa-type-escape.c: Likewise.
6095         * ipa-type-escape.h: Likewise.
6096         * domwalk.c: Likewise.
6097         * tree-if-conv.c: Likewise.
6098         * profile.c: Likewise.
6099         * domwalk.h: Likewise.
6100         * tree-data-ref.c: Likewise.
6101         * tree-data-ref.h: Likewise.
6102         * tree-flow-inline.h: Likewise.
6103         * tree-affine.c: Likewise.
6104         * tree-vect-analyze.c: Likewise.
6105         * c-typeck.c: Likewise.
6106         * gimplify.c: Likewise.
6107         * coretypes.h: Likewise.
6108         * tree-ssa-phiopt.c: Likewise.
6109         * calls.c: Likewise.
6110         * tree-ssa-coalesce.c: Likewise.
6111         * tree.def: Likewise.
6112         * tree-dfa.c: Likewise.
6113         * except.c: Likewise.
6114         * except.h: Likewise.
6115         * cfgexpand.c: Likewise.
6116         * tree-cfgcleanup.c: Likewise.
6117         * tree-ssa-pre.c: Likewise.
6118         * tree-ssa-live.c: Likewise.
6119         * tree-sra.c: Likewise.
6120         * tree-ssa-live.h: Likewise.
6121         * tree-predcom.c: Likewise.
6122         * lambda.h: Likewise.
6123         * tree-mudflap.c: Likewise.
6124         * ipa-prop.c: Likewise.
6125         * print-tree.c: Likewise.
6126         * tree-ssa-copy.c: Likewise.
6127         * ipa-prop.h: Likewise.
6128         * tree-ssa-forwprop.c: Likewise.
6129         * ggc-page.c: Likewise.
6130         * c-omp.c: Likewise.
6131         * tree-ssa-dce.c: Likewise.
6132         * tree-vect-patterns.c: Likewise.
6133         * tree-ssa-ter.c: Likewise.
6134         * tree-nested.c: Likewise.
6135         * tree-ssa.c: Likewise.
6136         * lambda-code.c: Likewise.
6137         * tree-ssa-loop-prefetch.c: Likewise.
6138         * tree-inline.c: Likewise.
6139         * tree-inline.h: Likewise.
6140         * tree-iterator.c: Likewise.
6141         * tree-optimize.c: Likewise.
6142         * tree-ssa-phiprop.c: Likewise.
6143         * tree-vect-transform.c: Likewise.
6144         * tree-object-size.c: Likewise.
6145         * tree-outof-ssa.c: Likewise.
6146         * cfgloop.c: Likewise.
6147         * system.h: Likewise.
6148         * tree-profile.c: Likewise.
6149         * cfgloop.h: Likewise.
6150         * c-gimplify.c: Likewise.
6151         * c-common.c: Likewise.
6152         * tree-vect-generic.c: Likewise.
6153         * tree-flow.h: Likewise.
6154         * c-common.h: Likewise.
6155         * basic-block.h: Likewise.
6156         * tree-ssa-structalias.c: Likewise.
6157         * tree-switch-conversion.c: Likewise.
6158         * tree-ssa-structalias.h: Likewise.
6159         * tree-cfg.c: Likewise.
6160         * passes.c: Likewise.
6161         * ipa-struct-reorg.c: Likewise.
6162         * ipa-struct-reorg.h: Likewise.
6163         * tree-ssa-reassoc.c: Likewise.
6164         * cfgrtl.c: Likewise.
6165         * varpool.c: Likewise.
6166         * stmt.c: Likewise.
6167         * tree-ssanames.c: Likewise.
6168         * tree-ssa-threadedge.c: Likewise.
6169         * langhooks-def.h: Likewise.
6170         * tree-ssa-operands.c: Likewise.
6171         * config/alpha/alpha.c: Likewise.
6172         * config/frv/frv.c: Likewise.
6173         * config/s390/s390.c: Likewise.
6174         * config/m32c/m32c.c: Likewise.
6175         * config/m32c/m32c-protos.h: Likewise.
6176         * config/spu/spu.c: Likewise.
6177         * config/sparc/sparc.c: Likewise.
6178         * config/i386/i386.c: Likewise.
6179         * config/sh/sh.c: Likewise.
6180         * config/xtensa/xtensa.c: Likewise.
6181         * config/stormy16/stormy16.c: Likewise.
6182         * config/ia64/ia64.c: Likewise.
6183         * config/rs6000/rs6000.c: Likewise.
6184         * config/pa/pa.c: Likewise.
6185         * config/mips/mips.c: Likewise.
6186
6187 2008-07-28  Simon Baldwin  <simonb@google.com>
6188
6189         * c-pragma.c (handle_pragma_message): New function.
6190         (init_pragma): Register handle_pragma_message.
6191         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
6192         documentation.
6193
6194 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
6195
6196         PR tree-optimization/35252
6197         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
6198         REALPART_EXPR to be considered as same load operation.
6199
6200 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
6201
6202         PR tree-optimization/36830
6203         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
6204         (expressions_equal_p): Return false if only one operand is null.
6205
6206 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
6207
6208         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
6209         version requirements.
6210
6211 2008-07-26  Olivier Hainque  <hainque@adacore.com>
6212
6213         * collect2.c (symkind): New enum.  Symbol kinds we care about.
6214         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
6215         code and head comment accordingly.
6216         (scan_prog_file): Use symkind names instead of bare integers.
6217
6218 2008-07-25  Jan Hubicka  <jh@suse.cz>
6219
6220         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
6221         DECL_INLINE.
6222         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
6223         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
6224         * dojump.c (clear_pending_stack_adjust): Likewise.
6225         * print-tree.c (print_node): Ignore DECL_INLINE.
6226         * tree-inline.c (inlinable_function_p): Likewise.
6227
6228 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
6229
6230         * doc/extend.texi (hot attribute): Document that the hot attribute
6231         turns on -O3 for some ports.
6232         (cold attribute): Document that the cold attribute turns on -Os
6233         for some ports
6234
6235         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
6236         reflect function specific option support.
6237
6238         * target.h (struct target_option_hooks): Add fields to say whether
6239         the cold attribute implies -Os and the hot attribute implies -O3.
6240
6241         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
6242         By default, do not turn on -Os for cold functions.
6243         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
6244         not turn on -O3 for hot functions.
6245
6246         * c-common.c (handle_hot_attribute): Use target hook to determine
6247         if hot functions should enable -O3.
6248         (handle_cold_attribute): Use target hook to determine if cold
6249         functions should enable -Os.
6250
6251         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
6252         (override_options): Move disable scheduling to
6253         optimization_options.
6254         (optimization_options): Disable scheduling here, not
6255         override_options.
6256         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6257         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6258
6259         * config/ia64/ia64.c (ia64_override_options): Move setting
6260         scheduling flags to ia64_optimization_options.
6261         (ia64_optimization_options): Disable scheduling options here, and
6262         not in ia64_override_options.
6263         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6264         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6265
6266 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
6267
6268         PR target/36936
6269         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
6270
6271 2008-07-25  Martin Jambor  <mjambor@suse.cz>
6272
6273         PR tree-optimization/36926
6274         * ipa-prop.c (ipa_analyze_call_uses): Call
6275         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
6276
6277 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
6278
6279         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
6280         movv2si_internal): Add mem = reg alternative.
6281
6282 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
6283
6284         PR bootstrap/36918
6285         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
6286         DEFAULT_PCC_STRUCT_RETURN to 127.
6287
6288 2008-07-24  Jan Hubicka  <jh@suse.cz>
6289
6290         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
6291         (build_cgraph_edges): Likewise.
6292         * cgraph.c (cgraph_node): Do not update assembler hash.
6293         (cgraph_remove_node): Drop non-unit-at-a-time code.
6294         * tree-pass.h (pass_O0_always_inline): Remove.
6295         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
6296         * toplev.c (process_options): Flag unit-at-a-time does not imply
6297         no section anchors.
6298         * cgraphunit.c: Update comments.
6299         (decide_is_function_needed): Drop non-unit-at-a-time mode.
6300         (cgraph_assemble_pending_functions): Remove.
6301         (cgraph_reset_node): Drop non-unit-at-a-time code.
6302         (cgraph_finalize_function): Likewise.
6303         (cgraph_analyze_function): Likewise.
6304         (cgraph_finalize_compilation_unit): Likewise.
6305         (cgraph_expand_function): Likewise.
6306         (cgraph_optimize): Likesise.
6307         (save_inline_function_body): Likewise.
6308         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
6309         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
6310         * ipa-inline.c: Update comments.
6311         (enum inlining_mode): remove INLINE_SPEED.
6312         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
6313         (cgraph_mark_inline_edge): Likewise.
6314         (try_inline): Likewise.
6315         (cgraph_decide_inlining_incrementally): Likewise.
6316         (cgraph_gate_inlining): Remove.
6317         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
6318         (cgraph_gate_early_inlining): Likewise.
6319         (gate_inline_passes): Remove.
6320         (pass_inline_parameters, pass_ipa_inline): Remove gates.
6321         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
6322         pass_O0_always_inline): Remove.
6323         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
6324         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
6325         * opts.c (no_unit_at_a_time_default): Remove.
6326         (decode_options): Remove flag_unit_at_a_time reset and warning.
6327         * opts.h (no_unit_at_a_time_default): Remove.
6328         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
6329         early in GNU dialect.
6330         (merge_decls): Update comment; drop unit-at-a-time check.
6331         (finish_decl): Likewise.
6332         (grok_declaration): Remove flag_inline_trees code.
6333         (finish_functions): Return on function returning non-void on all
6334         statics.
6335         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
6336         * cfgexpand.c (expand_one_static_var): Remove.
6337         (expand_one_var): Remove expand_one_static_var call.
6338         (expand_used_vars_for_block): Remove flag_unit_a_time check.
6339         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
6340         and flag_unit_at_a-time compatibility checks.
6341         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
6342         * tree-inline.c (flag_inline_trees): Remove.
6343         (inlinable_function_p): Don't check it.
6344         (expand_call_inline): Remove non-unit-at-a-time code.
6345         * tree-inline.h (flag_inline_trees): Remove.
6346         * tree-optimize.c (execute_early_local_optimizations): Remove
6347         unit-at-a-time checks.
6348         (tree_rest_of_compilation): Likewise.
6349         * combine.c (setup_incoming_promotions): Likewise.
6350         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
6351         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
6352         * passes.c (pass_inline_parameters): Update comments; remove
6353         O0_alwaysinline pass.
6354         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
6355         (execute_one_pass): Likewise.
6356         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
6357         (ix86_function_sseregparm): Likewise.
6358         * arm.c (arm_function_in_section_p): Likewise.
6359         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
6360         * varpool.c: Update comments.
6361         (decide_is_variable_needed): Remove unit-at-a-time checks.
6362         (varpool_finalize_decl): Likewise.
6363
6364 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
6365
6366         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
6367         to 2 instead of -1.
6368         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
6369
6370 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
6371
6372         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
6373         imp symbol extension.
6374
6375         2008-07-23  Ian Lance Taylor  <iant@google.com>
6376
6377         * tree-vrp.c (infer_value_range): Ignore asm statements when
6378         looking for memory accesses for -fdelete-null-pointer-checks.
6379
6380 2008-07-24  Ben Elliston  <bje@au.ibm.com>
6381
6382         * config/spu/spu-c.c (__vector_keyword): New variable.
6383         (vector_keyword): Likewise.
6384         (spu_categorize_keyword): New function.
6385         (spu_macro_to_expand): Likewise.
6386         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
6387         compiling an ISO C dialect.
6388
6389 2008-07-24  Ben Elliston  <bje@au.ibm.com>
6390
6391         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
6392         conventional usage.
6393
6394 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6395
6396         * configure: Regenerate.
6397         * configure.ac: Require texinfo 4.7.
6398         * doc/install.texi: Document texinfo 4.7 requirement.
6399
6400 2008-07-23  Martin Jambor  <mjambor@suse.cz>
6401
6402         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
6403         rather than for DECL_SAVED_TREE.
6404         * ipa-prop.c: Include diagnostic.h.
6405         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
6406         thoroughly.
6407         (ipa_detect_param_modifications): Function rewritten from scratch.
6408         (ipa_compute_jump_functions): Changed accesses to modification flags.
6409         (ipa_free_node_params_substructures): Update flags destruction.
6410         (ipa_node_duplication_hook): Update flags duplication.
6411         (ipa_print_all_params_modified): Updated flag access.
6412         * ipa-prop.h (struct ipa_param_flags): New structure.
6413         (struct ipa_node_params): New field modification_analysis_done,
6414         modified_flags changed into param_flags.
6415         (ipa_is_ith_param_modified): Changed to use new flags.
6416         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
6417
6418         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
6419         ipa-cp.c and split into two functions.
6420         (ipa_print_node_jump_functions): New function.
6421         (compute_scalar_jump_functions): New function.
6422         (type_like_member_ptr_p): New function.
6423         (compute_pass_through_member_ptrs): New function.
6424         (fill_member_ptr_cst_jump_function): New function.
6425         (determine_cst_member_ptr): New function.
6426         (compute_cst_member_ptr_arguments): New function.
6427         (ipa_compute_jump_functions): Complete rewrite.
6428         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
6429         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
6430         (struct ipa_member_ptr_cst): New structure.
6431         (union jump_func_value): New field member_cst.
6432         * ipa-cp.c (ipcp_lat_is_insertable): New function.
6433         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
6434         jump function types.
6435         (ipcp_print_all_lattices): Slight fprintf rearrangement.
6436         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
6437         instead of ipcp_print_all_jump_functions.
6438         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
6439         only for replacable scalars.
6440
6441         * doc/invoke.texi (Optimize options): Add description of
6442         -findirect-inlining.
6443         * common.opt (flag_indirect_inlining): New flag.
6444         * opts.c (decode_options): Set flag_indirect_inlining when
6445         optimize >= 3.
6446
6447         * ipa-inline.c: Include ipa-prop.h.
6448         (inline_indirect_intraprocedural_analysis): New function.
6449         (inline_generate_summary): Allocate parameter and argument info
6450         structures, call inline_indirect_intraprocedural_analysis on each
6451         node when doing indirect inlining and deallocate indirect inlining
6452         data structures in the end.
6453         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
6454         (free_all_ipa_structures_after_iinln): New function.
6455         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
6456         done.
6457         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
6458
6459         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
6460         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
6461         of computing the frequency separately.
6462         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
6463         of computing the frequency separately.
6464         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
6465         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
6466         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
6467         (ipa_get_stmt_member_ptr_load_param): New function.
6468         (ipa_is_ssa_with_stmt_def): New function.
6469         (ipa_note_param_call): New function.
6470         (ipa_analyze_call_uses): New function.
6471         (ipa_analyze_stmt_uses): New function.
6472         (ipa_analyze_params_uses): New function.
6473         (ipa_free_node_params_substructures): Also free the param_calls linked
6474         list.
6475         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
6476         (ipa_print_node_param_flags): New function.
6477         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
6478         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
6479         * ipa-prop.h (struct ipa_param_flags): New field called.
6480         (struct ipa_param_call_note): New structure.
6481         (struct ipa_node_params): New fields param_calls and
6482         uses_analysis_done.
6483         (ipa_is_ith_param_called): New function.
6484         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
6485         ipa_analyze_params_uses and dump parameter flags.
6486
6487         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
6488         ipa_propagate_indirect_call_infos if performing indirect inlining,
6489         pass a new parameter new_edges to it.
6490         (add_new_edges_to_heap): New fucntion.
6491         (cgraph_decide_inlining_of_small_functions): New vector
6492         new_indirect_edges for newly found indirect edges , call
6493         ipa_propagate_indirect_call_infos after inlining.
6494         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
6495         inlining if performing indirect inlining.  Call
6496         free_all_ipa_structures_after_iinln when doing so too.
6497         (inline_generate_summary): Do not call
6498         free_all_ipa_structures_after_iinln here.
6499         * ipa-prop.c (update_jump_functions_after_inlining): New function.
6500         (print_edge_addition_message): New function.
6501         (update_call_notes_after_inlining): New function.
6502         (propagate_info_to_inlined_callees): New function.
6503         (ipa_propagate_indirect_call_infos): New function.
6504         * ipa-prop.h: Include cgraph.h
6505         (struct ipa_param_call_note): Fields reordered, new field processed.
6506         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
6507         flag indirect_call.
6508         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
6509         rediscovered call statements.
6510         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
6511         (dump_cgraph_node): Dump also the indirect_call flag.
6512         (cgraph_clone_edge): Copy also the indirect_call flag.
6513         * tree-inline.c (copy_bb): Do not check for fndecls from call
6514         expressions, check for edge availability when moving clones.
6515         (get_indirect_callee_fndecl): New function.
6516         (expand_call_inline): If callee declaration is not apprent from
6517         the statement, try calling get_indirect_callee_fndecl.  Do not
6518         issue warnings or call sorry when not inlinings an indirect edge.
6519         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
6520
6521         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
6522         bit more frandly to matching.
6523         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
6524         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
6525         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
6526
6527 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6528
6529         PR 36907
6530         * opth-gen.awk: Suppress function specific features when building
6531         target libraries.
6532         * optc-gen.awk: Ditto.
6533
6534 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6535
6536         PR 35058
6537         * diagnostic.c (pedwarn): Add opt parameter.
6538         (pedwarn0): New.
6539         * c-tree.h (pedwarn_init): Add opt parameter.
6540         (pedwarn_c90): Likewise.
6541         (pedwarn_c99): Likewise.
6542         * c-errors.c (pedwarn_c99): Likewise.
6543         (pedwarn_c90): Likewise.
6544         * toplev.h (pedwarn): Update declaration.
6545         (pedwarn0): Declare.
6546         * c-lex.c: All calls to pedwarn changed.
6547         * builtins.c: All calls to pedwarn changed.
6548         * toplev.c: All calls to pedwarn changed.
6549         * c-decl.c: All calls to pedwarn changed.
6550         * c-typeck.c: All calls to pedwarn changed.
6551         * c-common.c: All calls to pedwarn changed.
6552         * c-parser.c: All calls to pedwarn changed.
6553
6554 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6555             Karthik Kumar  <karthikkumar@gmail.com>
6556
6557         * attribs.c (file scope): Include c-common.h.
6558         (decl_attributes): Add support for #pragma GCC optimize and
6559         #pragma GCC option.
6560
6561         * targhooks.c (default_can_inline_p): New function that is the
6562         default for the TARGET_CAN_INLINE_P target hook.
6563
6564         * targhooks.h (default_can_inline_p): Add declaration.
6565
6566         * tree.c (cl_optimization_node): New static tree for building
6567         OPTIMIZATION_NODE tree.
6568         (cl_target_option_node): New static tree for building
6569         TARGET_OPTION_NODE tree.
6570         (cl_option_hash_table): New hash table for hashing
6571         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6572         (cl_option_hash_hash): New function to provide the hash value for
6573         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6574         (cl_option_hash_eq): New function to provide an equality test for
6575         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6576         (tree_code_size): Add support for OPTIMIZATION_NODE and
6577         TARGET_OPTION_NODE trees.
6578         (tree_code_structure): Add support for OPTIMIZATION_NODE and
6579         TARGET_OPTION_NODE trees.
6580         (build_optimization_node): Build a tree that has all of the
6581         current optimization options.
6582         (build_target_option_node): Build a tree that has the target
6583         options that might be changed on a per function basis.
6584
6585         * tree.h (file scope): Include options.h.
6586         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
6587         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
6588         (TREE_OPTIMIZATION): Ditto.
6589         (TREE_TARGET_SPECIFIC): Ditto.
6590         (struct tree_function_decl): Add fields for remembering the
6591         current optimization options and target specific options.
6592         (struct tree_optimization_option): New tree variant that remembers
6593         the optimization options.
6594         (struct tree_target_option): New tree variant that remembers the
6595         target specific flags that might change for compiling a particular
6596         function.
6597         (union tree_node): Include tree_optimization_option and
6598         tree_target_option fields.
6599         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
6600         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
6601         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
6602         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
6603         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
6604         optimization and target options.
6605         (optimization_default_node): New macro to refer to global_trees
6606         field.
6607         (optimization_current_node): Ditto.
6608         (optimization_cold_node): Ditto.
6609         (optimization_hot_node): Ditto.
6610         (target_option_default_node): Ditto.
6611         (target_option_current_node): Ditto.
6612         (current_option_pragma): Ditto.
6613         (current_optimize_pragma): Ditto.
6614
6615         * target.h (struct gcc_target): Add valid_option_attribute_p,
6616         target_option_save, target_option_restore, target_option_print,
6617         target_option_pragma_parse, and can_inline_p hooks.
6618
6619         * toplev.h (parse_optimize_options): Add declaration.
6620         (fast_math_flags_struct_set_p): Ditto.
6621
6622         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
6623         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
6624         optimize is used.
6625
6626         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
6627         tree_can_inline_p hook to see if one function can inline another.
6628         (cgraph_decide_inlining): Ditto.
6629         (cgraph_decide_inlining_incrementally): Ditto.
6630
6631         * opts.c (decode_options): Add support for running multiple times
6632         to allow functions with different target or optimization options
6633         than was specified on the command line.
6634         (fast_math_flags_struct_set_p): New function that is similar to
6635         fast_math_flags_set_p, except it uses the values in the
6636         cl_optimization structure instead of global variables.
6637
6638         * optc-gen.awk: Add support for TargetSave to allow a back end to
6639         declare new fields that need to be saved when using function
6640         specific options.  Include flags.h and target.h in the options.c
6641         source.  Add support for Save to indicate which options can be set
6642         for individual functions.  Generate cl_optimize_save,
6643         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
6644         cl_target_option_restore, cl_target_option_print functions to
6645         allow functions to use different optimization or target options.
6646
6647         * opt-functions.awk (var_type_struct): Return the type used for
6648         storing the field in a structure.
6649
6650         * opth-gen.awk: Add support for TargetSave to allow a back end to
6651         declare new fields that need to be saved when using function
6652         specific options.  Add support for Save to indicate which options
6653         can be set for individual functions.  Only generate one extern for
6654         Mask fields.  Generate cl_optimization and cl_target_option
6655         structures to remember optimization and target options.
6656
6657         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
6658         collecting new tree nodes.
6659         (TS_TARGET_OPTION): Ditto.
6660
6661         * c-decl.c (merge_decls): Merge function specific target and
6662         optimization options.
6663
6664         * function.c (invoke_set_current_function_hook): If the function
6665         uses different optimization options, change the global variables
6666         to reflect this.
6667
6668         * coretypes.h (struct cl_optimization): Add forward reference.
6669         (struct cl_target_option): Ditto.
6670
6671         * c-pragma.c (option_stack): New static vector to remember the
6672         current #pragma GCC option stack.
6673         (handle_pragma_option): New function to support #pragma GCC option
6674         to change target options.
6675         (optimize_stack): New static vector to remember the current
6676         #pragma GCC optimize stack.
6677         (handle_pragma_optimize): New function to support #pragma GCC
6678         optimize to change optimization options.
6679         (init_pragma): Add support for #pragma GCC optimize and #pragma
6680         GCC option.
6681
6682         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
6683         optimization options.
6684         (TARGET_OPTION_NODE): New tree code for remembering certain target
6685         options.
6686
6687         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
6688         TARGET_OPTION_NODE trees.
6689
6690         * common.opt (-O): Add Optimization flag.
6691         (-Os): Ditto.
6692         (-fmath-errno): Ditto.
6693         (-falign-functions): Add UInteger flag to make sure flag gets full
6694         int in cl_optimization structure.
6695         (-falign-jumps): Ditto.
6696         (-falign-labels): Ditto.
6697         (-falign-loops): Ditto.
6698         (-fsched-stalled-insns): Ditto.
6699         (-fsched-stalled-insns-dep): Ditto.
6700
6701         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
6702         definition.
6703         (TARGET_OPTION_SAVE): Ditto.
6704         (TARGET_OPTION_RESTORE): Ditto.
6705         (TARGET_OPTION_PRINT): Ditto.
6706         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
6707         (TARGET_CAN_INLINE_P): Ditto.
6708         (TARGET_INITIALIZER): Add new hooks.
6709
6710         * tree-inline.c (tree_can_inline_p): New function to determine
6711         whether one function can inline another.  Check if the functions
6712         use compatible optimization options, and also call the backend
6713         can_inline_p hook.
6714
6715         * tree-inline.h (tree_can_inline_p): Add declaration.
6716
6717         * c-common.c (c_common_attribute): Add support for option and
6718         optimize attributes.
6719         (handle_option_attribute): Add support for the option attribute to
6720         allow the user to specify different target options for compiling a
6721         specific function.
6722         (handle_optimize_attribute): Add support for the optimize
6723         attribute to allow the user to specify different optimization
6724         options for compiling a specific function.
6725         (handle_hot_attribute): Turn on -O3 optimization for this one
6726         function if it isn't the default optimization level.
6727         (handle_cold_attribute): Turn on -Os optimization for this one
6728         function if it insn't the default optimization.
6729         (const_char_p): New const char * typedef.
6730         (optimize_args): New static vector to remember the optimization
6731         arguments.
6732         (parse_optimize_options): New function to set up the optimization
6733         arguments from either the optimize attribute or #pragma GCC optimize.
6734
6735         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
6736         (builtin_define_std): Ditto.
6737
6738         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
6739         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
6740         (x86_64-*-*): Ditto.
6741
6742         * Makefile.in (TREE_H): Add options.h.
6743         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
6744
6745         * doc/extend.texi (option attribute): Document new attribute.
6746         (optimize attribute): Ditto.
6747         (hot attribute): Document hot attribute sets -O3.
6748         (cold attribute): Document cold attribute sets -Os.
6749         (#pragma GCC option): Document new pragma.
6750         (#pragma GCC optimize): Ditto.
6751
6752         * doc/options.texi (TargetSave): Document TargetSave syntax.
6753         (UInteger): Document UInteger must be used for certain flags.
6754         (Save): Document Save option to create target specific options
6755         that can be saved/restored on a function specific context.
6756
6757         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
6758         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
6759
6760         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
6761         (TARGET_OPTION_SAVE): Ditto.
6762         (TARGET_OPTION_RESTORE): Ditto.
6763         (TARGET_OPTION_PRINT): Ditto.
6764         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
6765         (TARGET_CAN_INLINE_P): Ditto.
6766
6767         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
6768         -mfpmath=sse,387.
6769         (-mfpmath=both): Ditto.
6770
6771 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6772             Karthik Kumar  <karthikkumar@gmail.com>
6773
6774         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
6775         (TARGET_POPCNT): Ditto.
6776         (TARGET_SAHF): Ditto.
6777         (TARGET_AES): Ditto.
6778         (TARGET_PCLMUL): Ditto.
6779         (TARGET_CMPXCHG16B): Ditto.
6780         (TARGET_RECIP): Move switch into target_flags.
6781         (TARGET_FUSED_MADD): Ditto.
6782         (ix86_arch_features): Make an unsigned char type.
6783         (ix86_tune_features): Ditto.
6784         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
6785         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
6786         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
6787
6788         * config/i386/i386.opt (arch): New TargetSave field to define
6789         fields that need to be saved for function specific option support.
6790         (tune): Ditto.
6791         (fpmath): Ditto.
6792         (branch_cost): Ditto.
6793         (ix86_isa_flags_explicit): Ditto.
6794         (tune_defaulted): Ditto.
6795         (arch_specified): Ditto.
6796         (-m128-long-double): Add Save flag to save option for target
6797         specific option support.
6798         (-m80387): Ditto.
6799         (-maccumulate-outgoing-args): Ditto.
6800         (-malign-double): Ditto.
6801         (-malign-stringops): Ditto.
6802         (-mfancy-math-387): Ditto.
6803         (-mhard-float): Ditto.
6804         (-mieee-fp): Ditto.
6805         (-minline-all-stringops): Ditto.
6806         (-minline-stringops-dynamically): Ditto.
6807         (-mms-bitfields): Ditto.
6808         (-mno-align-stringops): Ditto.
6809         (-mno-fancy-math-387): Ditto.
6810         (-mno-push-args): Ditto.
6811         (-mno-red-zone): Ditto.
6812         (-mpush-args): Ditto.
6813         (-mred-zone): Ditto.
6814         (-mrtd): Ditto.
6815         (-msseregparm): Ditto.
6816         (-mstack-arg-probe): Ditto.
6817         (-m32): Ditto.
6818         (-m64): Ditto.
6819         (-mmmx): Ditto.
6820         (-m3dnow): Ditto.
6821         (-m3dnowa): Ditto.
6822         (-msse): Ditto.
6823         (-msse2): Ditto.
6824         (-msse3): Ditto.
6825         (-msse4.1): Ditto.
6826         (-msse4.2): Ditto.
6827         (-msse4): Ditto.
6828         (-mno-sse4): Ditto.
6829         (-msse4a): Ditto.
6830         (-msse5): Ditto.
6831         (-mrecip): Move flag into target_flags.
6832         (-mcld): Ditto.
6833         (-mno-fused-madd): Ditto.
6834         (-mfused-madd): Ditto.
6835         (-mabm): Move flag into ix86_isa_flags.
6836         (-mcx16): Ditto.
6837         (-mpopcnt): Ditto.
6838         (-msahf): Ditto.
6839         (-maes): Ditto.
6840         (-mpclmul): Ditto.
6841
6842         * config/i386/i386-c.c: New file for #pragma support.
6843         (ix86_target_macros_internal): New function to #define or #undef
6844         target macros based when the user uses the #pragma GCC option to
6845         change target options.
6846         (ix86_pragma_option_parse): New function to add #pragma GCC option
6847         support.
6848         (ix86_target_macros): Move defining the target macros here from
6849         TARGET_CPU_CPP_BUILTINS in i386.h.
6850         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
6851         defined, initialize any subtarget #pragmas.
6852
6853         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
6854         REGISTER_TARGET_PRAGMAS.
6855
6856         * config/i386/t-i386: New file for x86 dependencies.
6857         (i386.o): Make dependencies mirror the include files used.
6858         (i386-c.o): New file, add dependencies.
6859
6860         * config/i386/i386-protos.h (override_options): Add bool argument.
6861         (ix86_valid_option_attribute_tree): Add declaration.
6862         (ix86_target_macros): Ditto.
6863         (ix86_register_macros): Ditto.
6864
6865         * config/i386/i386.c (ix86_tune_features): Move initialization of
6866         the target masks to initial_ix86_tune_features to allow functions
6867         to have different target options.  Make type unsigned char,
6868         instead of unsigned int.
6869         (initial_ix86_tune_features): New static vector to hold processor
6870         masks for the tune variables.
6871         (ix86_arch_features): Move initialization of the target masks to
6872         initial_ix86_arch_features to allow functions to have different
6873         target options.  Make type unsigned char, instead of unsigned int.
6874         (initial_ix86_arch_features): New static vector to hold processor
6875         masks for the arch variables.
6876         (enum ix86_function_specific_strings): New enum to describe the
6877         string options used for attribute((option(...))).
6878         (ix86_target_string): New function to return a string that
6879         describes the target options.
6880         (ix86_debug_options): New function to print the current options in
6881         the debugger.
6882         (ix86_function_specific_save): New function hook to save the
6883         function specific global variables in the cl_target_option structure.
6884         (ix86_function_specific_restore): New function hook to restore the
6885         function specific variables from the cl_target_option structure to
6886         the global variables.
6887         (ix86_function_specific_print): New function hook to print the
6888         target specific options in the cl_target_option structure.
6889         (ix86_valid_option_attribute_p): New function hook to validate
6890         attribute((option(...))) arguments.
6891         (ix86_valid_option_attribute_tree): New function that is common
6892         code between attribute((option(...))) and #pragma GCC option
6893         support that parses the options and returns a tree holding the options.
6894         (ix86_valid_option_attribute_inner_p): New helper function for
6895         ix86_valid_option_attribute_tree.
6896         (ix86_can_inline_p): New function hook to decide if one function
6897         can inline another on a target specific basis.
6898         (ix86_set_current_function); New function hook to switch target
6899         options if the user used attribute((option(...))) or #pragma GCC
6900         option.
6901         (ix86_tune_defaulted): Move to static file scope from
6902         override_options.
6903         (ix86_arch_specified): Ditto.
6904         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
6905         ix86_isa_flags.
6906         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
6907         (OPTION_MASK_ISA_ABM_SET): Ditto.
6908         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
6909         (OPTION_MASK_ISA_CX16_SET): Ditto.
6910         (OPTION_MASK_ISA_SAHF_SET): Ditto.
6911         (OPTION_MASK_ISA_AES_UNSET): Ditto.
6912         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
6913         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
6914         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
6915         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
6916         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
6917         (struct ptt): Move to static file scope from override_options.
6918         (processor_target_table): Ditto.
6919         (cpu_names): Ditto.
6920         (ix86_handle_option): Add support for options that are now isa options.
6921         (override_options): Add support for declaring functions that
6922         support different target options than were specified on the
6923         command line.  Move struct ptt, processor_target_table, cpu_names,
6924         ix86_tune_defaulted, ix86_arch_specified to static file scope.
6925         Add bool argument.  Fix up error messages so the appropriate error
6926         is given for either command line or attribute.
6927         (ix86_previous_fndecl): New static to remember previous function
6928         declaration to see if we need to change target options.
6929         (ix86_builtins_isa): New array to record the ISA of each builtin
6930         function.
6931         (def_builtin): Always create the builtin function, even if the
6932         current ISA doesn't support it.
6933         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
6934         tests for those builtins.
6935         (ix86_init_builtins): Remove TARGET_MMX test for calling
6936         ix86_init_mmx_sse_builtins.
6937         (ix86_expand_builtin): If the current ISA doesn't support a given
6938         builtin, signal an error.
6939         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
6940         (TARGET_SET_CURRENT_FUNCTION): Ditto.
6941         (TARGET_OPTION_SAVE): Ditto.
6942         (TARGET_OPTION_RESTORE): Ditto.
6943         (TARGET_OPTION_PRINT): Ditto.
6944         (TARGET_CAN_INLINE_P): Ditto.
6945
6946 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
6947
6948         * c-typeck.c (build_external_ref): Don't call assemble_external.
6949         * final.c (output_operand): Call assemble_external.
6950
6951 2008-07-21  DJ Delorie  <dj@redhat.com>
6952
6953         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
6954         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
6955
6956 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6957
6958         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
6959         original insn and splitter contents into ...
6960         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
6961         flag_unsafe_math_optimizations.  Add dummy scratch register.
6962         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
6963         !flag_unsafe_math_optimizations.  Returns number with next
6964         highest magnitude if this is still less or equal to the true
6965         quotient in magnitude.
6966
6967 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
6968
6969         * Makefile.in: Replace toplev.h with TOPLEV_H.
6970         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
6971         * c-lex.c (fe_file_change): Don't set in_system_header.
6972         * c-parser.c (c_token): Remove in_system_header.
6973         (c_lex_one_token): Don't set in_system_header.
6974         (c_parser_set_source_position_from_token): Don't set in_system_header.
6975         * diagnostic.c (diagnostic_report_diagnostic): Use location from
6976         diagnostic_info.
6977         (warning_at): New.
6978         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
6979         * flags.h (in_system_header): Remove.
6980         * function.c (saved_in_system_header): Remove.
6981         (push_cfun): Don't set in_system_header.
6982         (pop_cfun): Don't set in_system_header.
6983         (push_struct_function): Don't set in_system_header.
6984         * input.h (expanded_location): Add sysp.
6985         (in_system_header_at): New.
6986         (in_system_header): New.
6987         * toplev.c (in_system_header): Remove.
6988         * toplev.h: Include input.h
6989         (warning_at): New.
6990         * tree-cfg.c (execute_warn_function_return): Call warning_at.
6991         * tree-ssa.c (warn_uninit): Call warning_at.
6992         (warn_uninitialized_var): Update calls to warn_uninit.
6993         (warn_uninitialized_phi): Update calls to warn_uninit.
6994         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
6995         (expand_location): Initialize xloc.sysp.
6996         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
6997         (tree_decl_with_vis): Remove in_system_header_flag.
6998
6999 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
7000
7001         PR target/36822
7002         * recog.c (asm_operand_ok): Change the order of the extra
7003         memory constraint checks.
7004
7005 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7006
7007         PR tree-opt/36879
7008         * tree-switch-conversion.c (build_one_array): Call
7009         varpool_mark_needed_node and varpool_finalize_decl
7010         instead of assemble_variable.
7011
7012 2008-07-19  Jan Hubicka  <jh@suse.cz>
7013
7014         * cgraph.c (cgraph_add_new_function): Do early local passes.
7015         * tree-nrv.c (gate_pass_return_slot): New gate.
7016         (pass_nrv): Add the gate.
7017         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
7018         functions.
7019         (coalesce_ssa_name): Coalesce SSA names.
7020         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
7021         not optimizing so unused user vars remains visible.
7022         * common.opt (flag_tree_ter): Always enable by default.
7023         * tree-ssa-ter.c: Include flags.h
7024         (is_replaceable_p): Check that locations match; when aliasing is missing
7025         be conservative about loads.
7026         * tree-optimize.c (gate_init_datastructures): Remove.
7027         (pass_init_datastructures): New.
7028         * passes.c: Reorder passes so we always go into SSA.
7029
7030 2008-07-19  Jan Hubicka  <jh@suse.cz>
7031
7032         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
7033         * doc/invoke.texi (--combine): Likewise.
7034         (-finline-functions-called-once): Update levels when enabled.
7035         (-funit-at-a-time): Document new behaviour.
7036         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
7037         -fno-section-anchors when disabled explicitly.
7038         (inline params): They are not ignored now.
7039         (precompiled headers): Remove unit-at-a-time as being incompatible.
7040         * opts.c (decode_options): Handle unit-at-a-time as alias;
7041         imply -fno-section-anchors when toplevel reorder is disabled
7042         explicitly.
7043         * common.opt (ftoplevel-reorder): Set default value to 2.
7044         (funit-at-a-time): Set default value to 1.
7045         * config/rs6000/rs6000.c (optimization_options): Set section anchors
7046         to 2.
7047
7048 2008-07-19  Jan Hubicka  <jh@suse.cz>
7049
7050         * builtins.c (expand_builtin_int_roundingfn,
7051         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
7052         it is not useful.
7053
7054 2008-07-19  Richard Guenther  <rguenther@suse.de>
7055
7056         PR bootstrap/36864
7057         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
7058         * tree-ssa-sccvn.c (get_constant_value_id): New function.
7059         * tree-ssa-pre.c (get_expr_value_id): For newly created
7060         constant value-ids make sure to add the expression to its
7061         expression-set.
7062
7063 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
7064
7065         PR middle-end/36877
7066         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
7067         return value of the builtin is ignored.
7068
7069 2008-07-19  Olivier Hainque  <hainque@adacore.com>
7070
7071         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
7072         bits, a C conformant malloc implementation has to provide.
7073         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
7074
7075 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
7076
7077         PR target/36780
7078         PR target/36827
7079         * reload.c (find_reloads_subreg_address): Only reload address if
7080         reloaded == 0, not for reloaded != 1.
7081
7082         Revert:
7083         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
7084         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
7085         (m32c_legitimate_address_p): Handle "++rii" addresses created by
7086         m32c_legitimize_reload_address.
7087
7088         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7089         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
7090         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
7091
7092 2008-07-19  Olivier Hainque  <hainque@adacore.com>
7093
7094         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
7095         argument, saying whether nested array are to be collapsed
7096         into a single array type DIE with multiple subscripts.
7097         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
7098         issues, centralize the nested array types collapsing control and
7099         disable the transformation for Ada.
7100
7101 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
7102
7103         PR target/36786
7104         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
7105         x86_64_shift_adj.
7106         (x86_64_shift_adj_2): New expander.
7107         (x86_64_shift_adj_3): Ditto.
7108         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
7109         to split TImode operands.
7110         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
7111         (ix86_split_lshr): Ditto.
7112
7113 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
7114
7115         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
7116         and __CHAR32_TYPE__.
7117         * c-typeck.c (digest_init): Support char16_t and char32_t.
7118         (set_nonincremental_init_from_string): Idem.
7119
7120 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
7121
7122         PR middle-end/36859
7123         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
7124         PREFERRED_STACK_BOUNDARY.
7125         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7126
7127 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
7128
7129         PR middle-end/36858
7130         * function.c (locate_and_pad_parm): Cap boundary earlier.
7131
7132 2008-07-17  Julian Brown  <julian@codesourcery.com>
7133
7134         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
7135         no-op for targets which don't use DLLs.
7136
7137 2008-07-17  Martin Jambor  <mjambor@suse.cz>
7138
7139         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
7140         that nodes are relevant by examining the node->analyzed flag.
7141         (ipcp_init_stage): Check which nodes are relevant, assert that the
7142         relevant ones are also required.
7143         (ipcp_propagate_stage): Check on the side arrays are properly
7144         allocated.
7145         (ipcp_print_all_jump_functions): Make sure not to touch any node
7146         that is not analyzed or an edge that does not have a corresponding
7147         entry in the on-the-side vectors.
7148         (ipcp_function_scale_print): Likewise.
7149         (ipcp_update_callgraph): Check that the node is relevant.
7150         (ipcp_insert_stage): Check that the node is relevant.  Check there is
7151         an info for every node and edge.
7152         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
7153         (ipa_print_all_tree_maps): Likewise and a new variable info.
7154         (ipa_print_all_params_modified): Likewise.
7155         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
7156
7157 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
7158
7159         PR target/25343
7160         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
7161
7162 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
7163
7164         PR rtl-optimization/36753
7165         * fwprop.c (use_killed_between): Don't shortcut
7166         single-definition global registers.
7167
7168 2008-07-16  Jan Hubicka  <jh@suse.cz>
7169
7170         * cgraph.h (varpool_empty_needed_queue): Declare.
7171         * cgraphunit.c (output_in_order): Mark all variables as needed;
7172         empty the queue.
7173         * varpool.c (varpool_assemble_node): Update debug queue.
7174         (varpool_assemble_pending_decls): Don't do it here.
7175         (varpool_empty_needed_queue):  New function.
7176
7177 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7178
7179         * recog.c (peephole2_optimize): Fix formatting.
7180
7181 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7182
7183         * c-pch.c (get_ident): Avoid C++ keywords.
7184         * combine-stack-adj.c (single_set_for_csa): Likewise.
7185         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
7186         output_asm_insn): Likewise.
7187         * reload.c (push_secondary_reload, find_reusable_reload,
7188         push_reload, combine_reloads, find_reloads,
7189         debug_reload_to_stream): Likewise.
7190         * reload.h (struct reload): Likewise.
7191         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
7192         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
7193         emit_output_reload_insns): Likewise.
7194         * targhooks.c (default_secondary_reload): Likewise.
7195         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
7196
7197 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7198
7199         * recog.c (validate_change_1, validate_change,
7200         validate_unshare_change, validate_replace_rtx_1, struct
7201         funny_match, constrain_operands, peephole2_optimize): Avoid C++
7202         keywords.
7203         * reload.c (push_secondary_reload, secondary_reload_class,
7204         scratch_reload_class, find_valid_class, find_reusable_reload,
7205         push_reload, find_dummy_reload, find_reloads_address_1,
7206         find_reloads_address_part, find_equiv_reg): Likewise.
7207         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
7208         choose_reload_regs): Likewise.
7209         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
7210         Likewise.
7211         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
7212         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
7213         * sched-rgn.c (concat_INSN_LIST): Likewise.
7214         * stor-layout.c (mode_for_size, mode_for_size_tree,
7215         smallest_mode_for_size): Likewise.
7216
7217 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7218
7219         * cfg.c (dump_reg_info): Avoid C++ keywords.
7220         * dwarf2asm.c (dw2_force_const_mem,
7221         dw2_asm_output_encoded_addr_rtx): Likewise.
7222         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
7223         * expmed.c (expand_shift): Likewise.
7224         * global.c (find_reg): Likewise.
7225         * graph.c (draw_edge): Likewise.
7226         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
7227         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
7228         widen_clz, widen_bswap, expand_parity, expand_unop,
7229         emit_cmp_and_jump_insn_1): Likewise.
7230         * postreload.c (reload_cse_simplify_operands): Likewise.
7231         * ra.h (add_neighbor): Likewise.
7232         * reg-stack.c (remove_regno_note, change_stack): Likewise.
7233         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
7234         record_reg_classes, copy_cost, record_address_regs,
7235         invalid_mode_change_p): Likewise.
7236         * regrename.c (regrename_optimize, scan_rtx_reg,
7237         dump_def_use_chain, find_oldest_value_reg,
7238         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
7239
7240 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7241
7242         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
7243         MASK_POWERPC64 for power4 in previous commit.
7244
7245 2008-07-16  Olivier Hainque  <hainque@adacore.com>
7246
7247         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
7248         instead of bare conversion to cast const-ness away.
7249
7250 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
7251
7252         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
7253         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
7254         * config/xtensa/xtensa.c (xtensa_function_value): New function.
7255         (TARGET_FUNCTION_VALUE): Define.
7256
7257 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7258
7259         * config/rs6000/rs6000.c (processor_target_table): Add
7260         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
7261
7262 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
7263
7264         PR target/36827
7265         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
7266         (m32c_legitimate_address_p): Handle "++rii" addresses created by
7267         m32c_legitimize_reload_address.
7268
7269 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
7270
7271         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
7272         DECL_IN_SYSTEM_HEADER in sync.
7273
7274 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
7275
7276         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
7277         * tree-ssa-pre.c (pre_expr_eq): Ditto
7278         (get_constant_for_value_id): Take a type as an argument.
7279         (fully_constant_expression): Pass in type.
7280         (find_or_generate_expression): Short circuit constant case.
7281         (create_expression_by_pieces): Remove special casing of
7282         pointer_plus.
7283         (do_regular_insertion): Short circuit constant case.
7284         (do_partial_partial_insertion): Ditto.
7285
7286 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7287
7288         PR target/36782
7289         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
7290
7291 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
7292
7293         * config/xtensa/libgcc-xtensa.ver: New file.
7294         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
7295
7296 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7297
7298         * df-problems.c (df_set_note): Avoid C++ keywords.
7299         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
7300         * dse.c (record_store, remove_useless_values): Likewise.
7301         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
7302         gen_reg_rtx_offset, operand_subword, change_address_1,
7303         change_address, adjust_address_1, offset_address,
7304         widen_memory_access, emit_copy_of_insn_after): Likewise.
7305         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
7306         * fwprop.c (should_replace_address, propagate_rtx_1,
7307         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
7308         Likewise.
7309         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
7310         gcse_emit_move_after, update_ld_motion_stores): Likewise.
7311         * lcm.c (compute_insert_delete, pre_edge_lcm,
7312         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
7313         * lower-subreg.c (resolve_reg_notes): Likewise.
7314         * mode-switching.c (optimize_mode_switching): Likewise.
7315
7316 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7317
7318         * bt-load.c (add_btr_def, migrate_btr_def,
7319         branch_target_load_optimize): Avoid C++ keywords.
7320         * caller-save.c (insert_restore, insert_save, insert_one_insn):
7321         Likewise.
7322         * combine.c (subst, simplify_set, make_extraction,
7323         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
7324         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
7325         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
7326
7327 2008-07-15  Richard Guenther  <rguenther@suse.de>
7328
7329         PR middle-end/36369
7330         * c-common.c (strict_aliasing_warning): Do not warn for
7331         TYPE_REF_CAN_ALIAS_ALL pointers.
7332         (c_common_get_alias_set): may_alias types are not special.
7333         * tree.c (build_pointer_type_for_mode): Look up the may_alias
7334         attribute and set can_ref_all accordingly.
7335         (build_reference_type_for_mode): Likewise.
7336         * doc/extend.texi (may_alias): Clarify.
7337
7338 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7339
7340         PR target/36780
7341         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
7342         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
7343
7344 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7345
7346         PR target/31568
7347         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
7348         gcc_assert, instead call output_operand_lossage.
7349
7350 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
7351
7352         * builtins.c (std_canonical_va_list): Treat structure based
7353         va_list types.
7354
7355 2008-07-15  Ben Elliston  <bje@au.ibm.com>
7356
7357         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
7358
7359 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
7360
7361         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
7362         is set.
7363
7364 2008-07-14  Jan Hubicka  <jh@suse.cz>
7365
7366         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
7367         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
7368         fix predicates and constraints.
7369         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
7370         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
7371
7372 2008-07-14  Doug Kwan  <dougkwan@google.com>
7373
7374         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
7375         additional option file arm/eabi.opt.
7376         * config/arm/eabi.h (File): New configuration file for EABI targets.
7377         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
7378         SUBSUBTARGET_EXTRA_SPECS.
7379         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
7380         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
7381         from STARTFILE_SPEC so that it can be referenced in an override.
7382         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
7383         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
7384         can be referenced in an override.
7385         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
7386         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
7387         so that it can be referenced in an override.
7388         (LINK_SPEC): Use BPABI_LINK_SPEC.
7389         * config/arm/eabi.opt (File): New.
7390
7391 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7392
7393         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
7394         (FIXED_VALUE_H): New variable.
7395         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
7396         input.h, fixed-value.h.
7397         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
7398         (BASIC_BLOCK_H): Use $(BITMAP_H).
7399         (FUNCTION_H): Add varray.h.
7400         (IPA_REFERENCE_H): Use $(BITMAP_H).
7401         (CGRAPH_H): Add $(BASIC_BLOCK_H).
7402         (DF_H): Use $(BITMAP_H).
7403         (GGC_H): Add statistics.h.
7404         (INSN_ADDR_H): New.
7405         (INSN_ATTR_H): Use it.
7406         (SYSTEM_H): Add safe-ctype.h, filenames.h.
7407         (INPUT_H): New.
7408         (SYMTAB_H): Add $(OBSTACK_H).
7409         (CPP_INTERNAL_H): New.
7410         (TREE_DUMP_H): Add tree-pass.h.
7411         (TREE_FLOW_H): Use $(BITMAP_H)
7412         (PRETTY_PRINT_H): Use $(INPUT_H).
7413         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
7414         (GSTAB_H): New.
7415         (BITMAP_H): New.
7416         (many object files): Fix lots of header dependencies throughout.
7417
7418 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7419
7420         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
7421         New macros.
7422         (s-gtyp-input): Use them to write tmp-gi.list.
7423         (echo_to_gi.list): Remove.
7424
7425 2008-07-14  Richard Guenther  <rguenther@suse.de>
7426
7427         * tree-ssa-sccvn.c (pre_info): Remove.
7428         (switch_to_PRE_table): Likewise.
7429         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
7430         (set_hashtable_value_ids): Do not create value-ids for the
7431         optimistic tables.
7432         (run_scc_vn): Remove double test.  Remove bogus special-case
7433         in value-number printing.
7434         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
7435         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
7436         SSA_NAME_VALUE.
7437         * tree-flow-inline.h (get_value_handle): Remove.
7438         * tree-flow.h (get_value_handle): Remove.
7439
7440 2008-07-14  Martin Jambor  <mjambor@suse.cz>
7441
7442         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
7443         in which we generate arithmetics is not a subrange.
7444
7445 2008-07-14  Martin Jambor  <mjambor@suse.cz>
7446
7447         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
7448
7449 2008-07-14  Richard Guenther  <rguenther@suse.de>
7450
7451         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
7452
7453 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
7454
7455         PR target/36745
7456         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
7457         reload for symbol refs moved to r0 with -fPIC.
7458         (legitimize_pic_address): Use the target register as temporary
7459         reg if possible.
7460         (emit_symbolic_move): Adjust comment.
7461         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
7462         New expanders.
7463
7464 2008-07-14  Ben Elliston  <bje@au.ibm.com>
7465
7466         * c-common.h (C_CPP_HASHNODE): New macro.
7467         * coretypes.h (struct cpp_token): Forward declare.
7468         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
7469         the context-sensitive keyword method.
7470         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
7471         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
7472         expand_bool_pixel): New.
7473         (altivec_categorize_keyword): New function.
7474         (init_vector_keywords): New function.
7475         (rs6000_macro_to_expand): Likewise.
7476         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
7477         compiling an ISO C dialect.
7478
7479 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
7480
7481         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
7482         (create_expression_by_pieces): Fix typo.
7483         (do_regular_insertion): Use debug counter here too.
7484
7485 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
7486
7487         PR target/35492.
7488         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
7489         CONST_OK_FOR_LETTER_P.  All port-local users changed.
7490         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
7491         implement Kp matching power-of-two.
7492         (CONSTRAINT_LEN): Define to match.
7493         * config/cris/cris.md: Replace all use of constraint K with Kc.
7494         ("*btst*): Use Kp for operand 0 of last alternative.
7495
7496 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7497
7498         PR testsuite/36440
7499         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
7500         and quad formats.
7501
7502 2008-07-13  Jan Hubicka  <jh@suse.cz>
7503
7504         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
7505         to be mangled too.
7506
7507 2008-07-13  Richard Guenther  <rguenther@suse.de>
7508
7509         PR middle-end/36811
7510         * langhooks.c (lhd_print_error_function): Deal with recursive
7511         BLOCK trees.
7512
7513 2008-07-12  Jan Hubicka  <jh@suse.cz>
7514
7515         * cgraph.c (assembler_name_hash): New static var.
7516         (hash_node_by_assembler_name, eq_assembler_name): New.
7517         (cgraph_node_for_asm): Use hashtable.
7518         (cgraph_remove_node): Maintain hashtable.
7519         (change_decl_assembler_name): Sanity check that names are not changing
7520         after aliasing was processed.
7521         * cgraph.h (varpoon_node): Add next GGC marker.
7522         * tree.c (decl_assembler_name_equal): Constify.
7523         (decl_assembler_name_hash): New.
7524         * tree.h (decl_assembler_name_equal): Constify.
7525         (decl_assembler_name_hash): Update.
7526
7527 2008-07-12  David Daney  <ddaney@avtrex.com>
7528
7529         * config/mips/driver-native.c (host_detect_local_cpu): Handle
7530         sb1 and r5000 cpus.
7531
7532 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
7533
7534         * doc/md.texi: Document the MIPS "v" constraint.
7535         * config/mips/mips.h (reg_class): Revert last change.
7536         (REG_CLASS_NAMES): Likewise.
7537         (REG_CLASS_CONTENTS): Likewise.
7538         * config/mips/mips.c (mips_regno_to_class): Likewise.
7539         * config/mips/constraints.md (v): Likewise, but add documentation.
7540         Add a comment to say that this constraint should not be used in
7541         gcc code.
7542
7543 2008-07-11  DJ Delorie  <dj@redhat.com>
7544
7545         * config/h8300/h8300.md (length): Fix branch offset limit.
7546
7547 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
7548
7549         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
7550         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
7551         (avr_hard_regno_scratch_ok): New function.
7552         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
7553         * config/avr/avr.md (all peepholes that request a scratch register):
7554         Remove avr_peep2_scratch_safe use.
7555
7556 2008-07-11  Tom Tromey  <tromey@redhat.com>
7557             Ian Lance Taylor  <iant@google.com>
7558
7559         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
7560         (struct c_common_resword): Define.
7561         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
7562         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
7563         (c_common_reswords, num_c_common_reswords): Declare.
7564         * c-common.c (c_common_reswords): New global const array.
7565         (num_c_common_reswords): New const int.
7566         * c-parser.c (struct resword, reswords): Don't define.
7567         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
7568         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
7569         than reswords.  If warning about C++ keywords, give them a special
7570         RID code.
7571         (c_lex_one_token): Warn about C++ keywords.  Call
7572         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
7573         (c_parser_external_declaration): Look for RID_xxx rather than
7574         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
7575         (c_parser_statement_after_labels): Likewise.
7576         (c_parser_objc_class_instance_variables): Likewise.
7577         (c_parser_objc_class_declaration): Likewise.
7578         (c_parser_objc_try_catch_statement): Likewise.
7579         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
7580         (declspecs_add_type): Likewise.
7581
7582 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
7583
7584         * ggc-page.c (alloc_page):
7585         Substituting xmalloc, xcalloc with
7586         XNEWVEC and XCNEWVAR macros which add the
7587         needed casts.
7588
7589 2008-07-11  Richard Guenther  <rguenther@suse.de>
7590
7591         PR tree-optimization/36765
7592         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
7593         aliases from HEAP vars to SMTs.
7594
7595 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7596
7597         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
7598         * configure.ac (loose_warn): Move -Wc++-compat from here...
7599         (strict_warn): ...to here.
7600         * configure: Regenerate.
7601
7602 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
7603
7604         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
7605         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
7606         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
7607         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
7608         excluding more specific h8300-*-* and sh-*-* targets.
7609
7610 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
7611
7612         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
7613         (eliminate): Ditto.
7614         (execute_pre): Call loop_optimizer_finalize in early exit.
7615
7616 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
7617
7618         PR middle-end/36790
7619         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
7620         uids in the bitmap, not just VAR_DECL uids.
7621
7622         PR rtl-optimization/36419
7623         * combine-stack-adj.c (adjust_frame_related_expr): New function.
7624         (combine_stack_adjustments_for_block): Call it if needed.  Delete
7625         correct insn.
7626         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
7627         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
7628         prologue sp adjustment.
7629
7630 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
7631
7632         PR other/28322
7633         * opts.c (print_ignored_options): Report postponed diagnostics for
7634         unknown -Wno-* options as warnings, not errors.
7635         (postpone_unknown_option_error): Renamed to...
7636         (postpone_unknown_option_warning): ... this.
7637
7638 2008-07-09  Doug Kwan  <dougkwan@google.com>
7639
7640         Revert:
7641         2008-07-08  Doug Kwan  <dougkwan@google.com>
7642
7643         * config/arm/arm.opt (mandroid): New option.
7644         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
7645         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
7646         (CC1_SPEC): Same.
7647         (CC1PLUS_SPEC): Same.
7648         (LIB_SPEC): Same.
7649         (STARTFILE_SPEC): Same.
7650         (ENDFILE_SPEC): Same.
7651         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
7652         used.
7653
7654 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
7655
7656         PR target/35802
7657         * config/mips/mips.h (reg_class): Remove V1_REG.
7658         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
7659         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
7660         instead of V1_REGS.
7661         (mips_get_tp): New function.
7662         (mips_legitimize_tls_address): Use it.
7663         * config/mips/constraints.md (v): Delete.
7664         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
7665         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
7666         After reload, split into a move and ...
7667         (*tls_get_tp_<mode>_split): ...this new instruction.
7668
7669 2008-07-09  David Daney  <ddaney@avtrex.com>
7670
7671         * config/mips/driver-native.c: Include coretypes.h and tm.h.
7672
7673 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
7674
7675         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
7676         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
7677         Add c argument.
7678         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
7679         htab_delete should be called.  Don't free c.
7680         (lookup_tmp_var): Create temp_htab lazily.
7681         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
7682         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
7683         callers.
7684         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
7685         lower_omp_ordered, lower_omp_critical, lower_omp_for,
7686         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
7687         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
7688         * tree-sra.c (generate_element_init): Likewise.
7689         * tree-mudflap.c (execute_mudflap_function_ops,
7690         execute_mudflap_function_decls): Likewise.
7691         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
7692         * tree-gimple.h (struct gimplify_ctx): New type.
7693         (push_gimplify_context): Adjust prototype.
7694
7695 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
7696
7697         * tree-ssa-pre.c (phi_translate_1): Update placement of
7698         add_to_value calls.
7699
7700 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
7701
7702         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
7703         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
7704         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
7705         * targhooks.c (default_hard_regno_scratch_ok): New function.
7706         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
7707         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
7708         * recog.c:  Include "target.h".
7709         (peep2_find_free_register): Add check for global regs. Add target
7710         specific check.
7711         * Makefile.in (recog.o): Depend on target.h.
7712
7713 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
7714
7715         * config/sh/sh.c (sh_canonical_va_list_type): New.
7716         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
7717
7718 2008-07-09  Raksit Ashok <raksit@google.com>
7719
7720         * doc/invoke.texi (Option Summary): Mention new option
7721         -Wdisallowed-function-list=...
7722         (Warning Options): Document -Wdisallowed-function-list=...
7723         * common.opt (Wdisallowed-function-list=): New flag.
7724         * flags.h (warn_disallowed_functions): External definition of new
7725         boolean warning flag.
7726         (warn_if_disallowed_function_p): Declare new function.
7727         * opts.c (warning_disallowed_functions): New static variable.
7728         (warn_disallowed_functions): New boolean warning flag.
7729         (warn_if_disallowed_function_p): New function.
7730         (add_comma_separated_to_vector): Rename
7731         add_instrument_functions_exclude_list to this.
7732         (common_handle_option): Handle new option. Rename calls to
7733         add_instrument_functions_exclude_list into calls to
7734         add_comma_separated_to_vector.
7735         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
7736         based on flag warn_disallowed_functions.
7737
7738 2008-07-09  Christian Bruel  <christian.bruel@st.com>
7739
7740         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
7741          instead of get_attr_length.
7742
7743 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7744
7745         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
7746         keywords.
7747         * genemit.c (gen_insn): Likewise.
7748         * gengtype.c (note_def_vec): Likewise.
7749         * gengtype.h (note_def_vec): Likewise.
7750         * genoutput.c (struct data, output_insn_data, process_template,
7751         gen_expand, gen_split, note_constraint): Likewise.
7752         * genrecog.c (new_decision, add_to_sequence, factor_tests,
7753         make_insn_sequence): Likewise.
7754         * gensupport.c (record_insn_name): Likewise.
7755
7756 2008-07-08  Doug Kwan  <dougkwan@google.com>
7757
7758         * config/arm/arm.opt (mandroid): New option.
7759         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
7760         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
7761         (CC1_SPEC): Same.
7762         (CC1PLUS_SPEC): Same.
7763         (LIB_SPEC): Same.
7764         (STARTFILE_SPEC): Same.
7765         (ENDFILE_SPEC): Same.
7766         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
7767         used.
7768
7769 2008-07-08  Raksit Ashok  <raksit@google.com>
7770
7771         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
7772         (set_storage_via_setmem): Fix expected_align parameter.
7773         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
7774         missing from the list.
7775         * doc/md.texi (movmem): Explicitly state that expected alignment is
7776         to be expressed in bytes.
7777         (setmem): Explicitly state that expected alignment is to be expressed
7778         in bytes.
7779
7780 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
7781
7782         * reload.c (find_reloads_subreg_address): Do not require validity
7783         of address in original mode before reloading address.
7784
7785 2008-07-07  Tianwei Sheng  <tianweis@google.com>
7786
7787         * df-core.c (df_remove_problem): Adjust the access to avoid out of
7788         bounds array access.
7789
7790 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
7791
7792         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
7793
7794 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
7795
7796         Fix PR tree-optimization/23455
7797         Fix PR tree-optimization/35286
7798         Fix PR tree-optimization/35287
7799         * Makefile.in (OBJS-common): Remove tree-vn.o.
7800         (tree-vn.o): Remove.
7801         * dbgcnt.def: Add treepre_insert debug counter.
7802         * gcc/tree-flow.h (add_to_value): Updated for other changes.
7803         (debug_value_expressions): Ditto.
7804         (print_value_expressions): Ditto.
7805         * tree-pretty-print.c (dump_generic_node): Updated for
7806         VALUE_HANDLE removal.
7807         * tree-ssa-dom.c (record_equality): Ditto.
7808         (cprop_operand): Ditto.
7809         (lookup_avail_expr): Ditto.
7810         * tree-ssa-threadedge.c
7811         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
7812         (simplify_control_stmt_condition): Ditto.
7813         * tree.c (tree_code_size): Ditto.
7814         (tree_node_structure): Ditto.
7815         (iterative_hash_expr): Ditto.
7816         * tree.def: Ditto.
7817         * tree.h (VALUE_HANDLE_ID): Ditto.
7818         (VALUE_HANDLE_EXPR_SET): Ditto.
7819         (struct tree_value_handle): Ditto.
7820         (union tree_node): Ditto.
7821         * treestruct.def: Ditto.
7822         * tree-vn.c: Removed.
7823         * tree-ssa-pre.c: Rewritten entirely.
7824         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
7825         (constant_value_ids): Ditto.
7826         (vn_nary_op_t): Moved to header.
7827         (vn_phi_t): Ditto.
7828         (vn_reference_op_t): Ditto
7829         (vn_reference_t): Ditto.
7830         (next_value_id): New variable.
7831         (VN_INFO): Add an assert.
7832         (vn_constant_eq): New function.
7833         (vn_constant_hash): Ditto.
7834         (get_or_alloc_constant_value_id): Ditto.
7835         (value_id_constant_p): Ditto.
7836         (vn_reference_compute_hash): De-staticify.
7837         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
7838         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
7839         (valueize_refs): Update opcode if it changes from ssa name to constant.
7840         (vn_reference_lookup_1): Add new argument.
7841         (vn_reference_lookup):  Ditto.
7842         (vn_reference_lookup_pieces): New function.
7843         (vn_reference_insert): Add return type. Modify to deal with value ids.
7844         (vn_reference_insert_pieces):  New function.
7845         (vn_nary_op_compute_hash): De-staticify.
7846         (vn_nary_op_eq): Ditto.
7847         (vn_nary_op_lookup_pieces): New function.
7848         (vn_nary_op_lookup): Add new argument.
7849         (vn_nary_op_insert_pieces): New function.
7850         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
7851         (vn_phi_insert): Ditto.
7852         (visit_unary_op): Update for callee changes.
7853         (visit_binary_op): Ditto.
7854         (visit_reference_op_load): Ditto.
7855         (visit_reference_op_store): Ditto.
7856         (init_scc_vn): Init next_value_id, constant_to_value_id and
7857         constant_value_ids.
7858         (free_scc_vn): Free them.
7859         (set_hashtable_value_ids): New function.
7860         (run_scc_vn): Use it.
7861         (get_max_value_id): New function.
7862         (get_next_value_id): Ditto.
7863         (expressions_equal_p): Moved from tree-vn.c
7864         (sort_vuses): Ditto.
7865         (sort_vuses_heap): Ditto.
7866         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
7867         above).
7868         * tree.c (iterative_hash_hashval_t): Made non-static
7869         * tree.h (iterative_hash_hashval_t): Declare it.
7870
7871 2008-07-08  Martin Jambor  <mjambor@suse.cz>
7872
7873         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
7874         instead of ipa_create_node_params.
7875         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
7876         ipa_check_create_edge_args, free them with
7877         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
7878
7879         * ipa-prop.c: Include flags.h and tree-inline.h.
7880         (ipa_node_params_vector): New variable.
7881         (ipa_edge_args_vector): New variable.
7882         (edge_removal_hook_holder): New variable.
7883         (node_removal_hook_holder): New variable.
7884         (edge_duplication_hook_holder): New variable.
7885         (node_duplication_hook_holder): New variable.
7886         (ipa_detect_param_modifications): Check for presence of modified flags.
7887         (ipa_compute_jump_functions): Check for presence of jump functions.
7888         (ipa_free_edge_args_substructures): New function.
7889         (ipa_create_node_params): Removed.
7890         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
7891         (ipa_free_node_params_substructures): New function.
7892         (ipa_free_all_node_params): Changed to deallocate the on-the-side
7893         vector.
7894         (ipa_edge_removal_hook): New function.
7895         (ipa_node_removal_hook): New function.
7896         (duplicate_array): New function.
7897         (ipa_edge_duplication_hook): New function.
7898         (ipa_node_duplication_hook): New function.
7899         (ipa_register_cgraph_hooks): New function.
7900         (ipa_unregister_cgraph_hooks): New function.
7901         (free_all_ipa_structures_after_ipa_cp): New function.
7902
7903         * ipa-prop.h: Include vec.h.
7904         (ipa_node_params_t): New typedef with vector types for it.
7905         (ipa_edge_args_t):  New typedef with vector types for it.
7906         (IPA_NODE_REF): Changed to access an on-the-side vector.
7907         (IPA_EDGE_REF): Changed to access an on-the-side vector.
7908         (ipa_check_create_node_params): New function.
7909         (ipa_check_create_edge_args): New function.
7910
7911         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
7912         all users.
7913
7914 2008-07-07  Tom Tromey  <tromey@redhat.com>
7915
7916         * configure, config.in: Rebuilt.
7917         * configure.ac: Don't check for scandir or alphasort.
7918
7919 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7920
7921         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
7922         types immediately after creating them.
7923
7924 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7925
7926         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
7927
7928 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
7929
7930         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
7931         dump_constraint_graph.
7932         (dump_constraint_edge): New function.
7933         (dump_constraint_graph): New function.
7934         (debug_constraint_graph): New function.
7935         (dump_constraint): Removed useless comparison.
7936         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
7937         (dump_constraint_graph): Declare.
7938         (debug_constraint_graph): Declare.
7939         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
7940
7941 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
7942
7943         * config/i386/i386.c (is_va_list_char_pointer): New.
7944         (ix86_va_start): Replace compare with ms_va_list_type_node
7945         by is_va_list_char_pointer.
7946         (ix86_gimplify_va_arg): Likewise.
7947
7948 2008-07-07  Martin Jambor  <mjambor@suse.cz>
7949
7950         * cgraph.c (cgraph_edge_max_uid): New variable.
7951         (struct cgraph_edge_hook_list): New type.
7952         (struct cgraph_node_hook_list): New type.
7953         (struct cgraph_2edge_hook_list): New type.
7954         (struct cgraph_2node_hook_list): New type.
7955         (first_cgraph_edge_removal_hook): New variable.
7956         (first_cgraph_node_removal_hook): New variable.
7957         (first_cgraph_edge_duplicated_hook): New variable.
7958         (first_cgraph_node_duplicated_hook): New variable.
7959         (cgraph_add_edge_removal_hook): New function.
7960         (cgraph_remove_edge_removal_hook): New function.
7961         (cgraph_call_edge_removal_hooks):  New function.
7962         (cgraph_add_node_removal_hook):  New function.
7963         (cgraph_remove_node_removal_hook):  New function.
7964         (cgraph_call_node_removal_hooks):  New function.
7965         (cgraph_add_edge_duplication_hook):  New function.
7966         (cgraph_remove_edge_duplication_hook):  New function.
7967         (cgraph_call_edge_duplication_hooks):  New function.
7968         (cgraph_add_node_duplication_hook):  New function.
7969         (cgraph_remove_node_duplication_hook):  New function.
7970         (cgraph_call_node_duplication_hooks):  New function.
7971         (cgraph_create_edge): Assign to edge uid.
7972         (cgraph_remove_edge): Call edge removal hooks.
7973         (cgraph_node_remove_callees): Call edge removal hooks.
7974         (cgraph_node_remove_callers): Call edge removal hooks.
7975         (cgraph_remove_node): Call node removal hooks.
7976         (cgraph_clone_edge): Call edge duplication hooks.
7977         (cgraph_clone_node): Call node duplication hooks.
7978
7979         * cgraph.h (cgraph_edge): New field uid.
7980         (cgraph_edge_hook): New type.
7981         (cgraph_node_hook): New type.
7982         (cgraph_2edge_hook): New type.
7983         (cgraph_2node_hook): New type.
7984
7985 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
7986
7987         * config.in: Regenerate.
7988
7989 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
7990
7991         * gcc.c (print_sysroot): New.
7992         (option_map, display_help, process_command): Handle the
7993         -print-sysroot option.
7994         (main): Print the sysroot if requested.
7995         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
7996
7997 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7998
7999         PR target/34780
8000         * unwind-pe.h (size_of_encoded_value): add attribute unused.
8001
8002 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
8003
8004         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
8005         (assign_parm_setup_block_p): Also check mode of entry_parm.
8006
8007 2008-07-07  Richard Guenther  <rguenther@suse.de>
8008
8009         * tree-ssa-structalias.h (set_used_smts): Remove.
8010         * tree-ssa-structalias.c (used_smts): Likewise.
8011         (set_used_smts): Likewise.
8012         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
8013         call to set_used_smts.
8014
8015 2008-07-07  Richard Guenther  <rguenther@suse.de>
8016
8017         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
8018         (new_var_info): Set it to false.
8019         (solution_set_add): Correctly handle pointers outside a var and
8020         inside a field.
8021         (type_safe): Treat variables with is_full_var properly.
8022         (do_sd_constraint): Likewise.
8023         (do_ds_constraint): Likewise.
8024         (process_constraint): Remove zeroing offset for !use_field_sensitive.
8025         (get_constraint_for_ptr_offset): New function.
8026         (get_constraint_for_component_ref): For addresses at least include
8027         the last field of the variable.  Handle is_full_vars properly.
8028         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
8029         (handle_ptr_arith): Remove.
8030         (find_func_aliases): Simplify assignment handling.
8031         (create_function_info_for): For parameter and result varinfos set
8032         is_full_var flag.
8033         (create_variable_info_for): Set is_full_var flag whenever we
8034         just created a single varinfo for a decl.
8035         (init_alias_vars): Initialize use_field_sensitive from
8036         max-fields-for-field-sensitive parameter.
8037
8038 2008-07-07  Richard Guenther  <rguenther@suse.de>
8039
8040         PR tree-optimization/36713
8041         * tree-flow-inline.h (is_call_used): New function.
8042         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
8043         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
8044         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
8045
8046 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
8047
8048         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
8049
8050 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
8051
8052         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
8053
8054 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
8055             Nathan Sidwell  <nathan@codesourcery.com>
8056
8057         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
8058         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
8059         tmake_file.
8060         * config/m68k/t-linux: New.
8061         * doc/install.texi: Document m68k-*-linux is now multilibbed by
8062         default.
8063
8064 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
8065
8066         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
8067         * config/m68k/m68k-devices.def: Remove multilibs that only differ
8068         by MAC/EMAC.
8069
8070 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8071
8072         * gcc.c (execute): Fix -Wc++-compat warning.
8073
8074 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
8075
8076         PR target/36720
8077         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
8078         constant for little endian.
8079
8080 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
8081
8082         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
8083         mips_base_mips16 instead of TARGET_MIPS16.
8084         (mips_base_mips16): Declare.
8085         * config/mips/mips.c (mips_base_mips16): Make global.
8086         (was_mips16_p): Remove GTY marker.
8087         (was_mips16_pch_p): New variable.
8088         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
8089         (mips_override_options): Force to non-MIPS16 mode initially.
8090         Do not complain about MIPS16 PIC incompatibilities here.
8091         Only allow -mgpopt if -mexplicit-relocs is in force for
8092         non-MIPS16 code.
8093
8094 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
8095
8096         * configure.ac: Check for caddr_t, define to char * if not defined.
8097         * configure: Regenerate.
8098         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
8099         (mmap_gt_pch_use_address): Likewise.
8100         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
8101
8102 2008-07-06  Richard Guenther  <rguenther@suse.de>
8103
8104         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
8105         (new_var_info): Deal with it.
8106         (solution_set_add): Likewise.
8107         (bitpos_of_field): Make signed, fix.
8108         (struct fieldoff): Remove type and decl fields.  Make size field
8109         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
8110         flags.
8111         (fieldoff_compare): Deal with it.
8112         (push_fields_onto_fieldstack): Remove has_union argument, glob
8113         adjacent non-pointer fields together.
8114         (create_function_info_for): Do not set has_union.
8115         (create_variable_info_for): Simplify.
8116
8117 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
8118
8119         * config.gcc (extra_headers): Add cross-stdarg.h for target
8120         x86_64-*-* and i?86-*-*.
8121         * config/i386/cross-stdarg.h: New.
8122         * builtins.c (std_fn_abi_va_list): New.
8123         (std_canonical_va_list_type): New.
8124         (stabilize_va_list): Replace va_list_type_node use by
8125         mtarget.canonical_va_list_type.
8126         (gimplify_va_arg_expr): Likewise.
8127         (expand_builtin_va_copy): Replace va_list_type_node use by
8128         mtarget.fn_abi_va_list.
8129         * tree-sra.c (is_va_list_type): New helper.
8130         (decl_can_be_decomposed_p): Replace
8131         va_list_type_node use by is_va_list_type.
8132         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
8133         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
8134         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
8135         * config/i386/i386-protos.h (ix86_get_valist_type): New.
8136         (ix86_enum_va_list): New.
8137         * config/i386/i386.c (sysv_va_list_type_node): New.
8138         (ms_va_list_type_node): New.
8139         (ix86_function_type_abi): Remove sorry.
8140         (ix86_build_builtin_va_list_abi): New.
8141         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
8142         for 64-bit targets.
8143         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
8144         (ix86_init_builtins_va_builtins_abi): New.
8145         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
8146         for 64-bit targets.
8147         (ix86_handle_abi_attribute): New.
8148         (attribute_spec): Add sysv_abi and ms_abi.
8149         (ix86_fn_abi_va_list): New.
8150         (ix86_canonical_va_list_type): New.
8151         (ix86_enum_va_list): New.
8152         (TARGET_FN_ABI_VA_LIST): New.
8153         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8154         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
8155         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
8156         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8157         (TARGET_ENUM_VA_LIST): New.
8158         * expr.h (std_fn_abi_va_list): New.
8159         (std_canonical_va_list_type): New.
8160         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
8161         (TARGET_CANONICAL_VA_LIST_TYPE): New.
8162         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
8163         TARGET_CANONICAL_VA_LIST_TYPE.
8164         * target.h (struct gcc_target): Add fn_abi_va_list hook
8165         and canonical_va_list_type hook.
8166
8167 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8168
8169         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
8170         integral and pointer types.
8171
8172 2008-07-04  Roger Sayle  <roger@eyesopen.com>
8173
8174         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
8175         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
8176
8177 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
8178
8179         PR target/36684
8180         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
8181
8182 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
8183
8184         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
8185         build_gimple_modify_stmt.
8186         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
8187         gimple operand.  Use fold_build* instead of build*.
8188
8189 2008-07-04  Richard Guenther  <rguenther@suse.de>
8190
8191         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
8192         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
8193         properly to compute the reachability set if we do field-sensitive PTA.
8194         * invoke.texi (max-fields-for-field-sensitive): Document default.
8195         * opts.c (decode_options): Set max-fields-for-field-sensitive to
8196         100 for optimize >= 2.
8197
8198 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8199
8200         * ggc-zone.c (lookup_page_table_if_allocated,
8201         set_page_table_entry, zone_find_object_size, alloc_small_page,
8202         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
8203         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
8204         -Wc++-compat and/or -Wcast-qual warnings.
8205
8206 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
8207
8208         PR target/36634
8209         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
8210         pic_offset_table_rtx to be marked as used here.
8211         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
8212         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
8213         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
8214         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
8215         !TARGET_SECURE_PLT.
8216
8217 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8218
8219         * alloc-pool.c (hash_descriptor, eq_descriptor,
8220         alloc_pool_descriptor): Fix -Wc++-compat warnings.
8221         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
8222         Likewise.
8223         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
8224         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
8225         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
8226         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
8227         Likewise.
8228
8229 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
8230
8231         * tree-flow.h (loop_only_exit_p): Declare.
8232         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
8233         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
8234         the number of iterations if it is constant.  Otherwise, if this is the
8235         only possible exit of the loop, use the conservative estimate on the
8236         number of iterations of the entire loop if available.
8237
8238 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
8239
8240         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
8241         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
8242         Add synchronization functions.
8243         * config/sync.c: New file.
8244         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
8245         (LIBGCC_SYNC_CFLAGS): Likewise.
8246
8247 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
8248
8249         PR target/36710
8250         * config/i386/i386.md (mode): Add TF to "mode" attribute.
8251         (*pushtf_sse): New insn pattern.
8252         (pushtf splitters): New splitters.
8253
8254 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
8255
8256         PR middle-end/35736
8257         * predict.c (build_predict_expr): Use void_type_node for the tree
8258         type, instead of NULL_TREE.
8259
8260 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
8261
8262         * config/i386/i386.c (contains_aligned_value_p): Return true
8263         for TCmode.
8264         (ix86_data_alignment): Align TCmode to 128bits.
8265         (ix86_local_alignment): Likewise.
8266
8267 2008-07-03  Andrew Haley  <aph@redhat.com>
8268
8269         PR bootstrap/33304
8270         * vec.h (VEC_TA): New.
8271         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
8272         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
8273         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
8274         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
8275         (C_COMMON_FIXED_TYPES): Remove first arg.
8276         (C_COMMON_FIXED_MODE_TYPES): Likewise.
8277         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
8278         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
8279         not to use empty macro arguments.
8280
8281 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
8282
8283         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
8284         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
8285         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
8286         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
8287         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
8288         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
8289         config/ia64/crtn.asm, config/m68hc11/larith.asm,
8290         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
8291         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
8292         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
8293         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
8294         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
8295         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
8296         config/rs6000/e500crtres64gpr.asm,
8297         config/rs6000/e500crtres64gprctr.asm,
8298         config/rs6000/e500crtrest32gpr.asm,
8299         config/rs6000/e500crtrest64gpr.asm,
8300         config/rs6000/e500crtresx32gpr.asm,
8301         config/rs6000/e500crtresx64gpr.asm,
8302         config/rs6000/e500crtsav32gpr.asm,
8303         config/rs6000/e500crtsav64gpr.asm,
8304         config/rs6000/e500crtsav64gprctr.asm,
8305         config/rs6000/e500crtsavg32gpr.asm,
8306         config/rs6000/e500crtsavg64gpr.asm,
8307         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
8308         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
8309         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
8310         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
8311         config/sparc/sol2-cn.asm: Remove .file directives.
8312
8313 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
8314
8315         * resource.c (mark_referenced_resources): Look inside
8316         UNSPEC_VOLATILEs and ASM_INPUTs.
8317
8318 2008-07-02  Ian Lance Taylor  <iant@google.com>
8319
8320         * rtlanal.c (add_reg_note): New function.
8321         * rtl.h (add_reg_note): Declare.
8322         * auto-inc-dec.c (attempt_change): Use add_reg_note.
8323         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
8324         * builtins.c (expand_builtin_longjmp): Likewise.
8325         (expand_builtin_nonlocal_goto): Likewise.
8326         * calls.c (emit_call_1, expand_call): Likewise.
8327         * cfgexpand.c (add_reg_br_prob_note): Likewise.
8328         * cfglayout.c (fixup_reorder_chain): Likewise.
8329         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
8330         (commit_one_edge_insertion): Likewise.
8331         * combine.c (move_deaths, distribute_notes): Likewise.
8332         * df-problems.c (df_set_note): Likewise.
8333         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
8334         (set_unique_reg_note): Likewise.
8335         (emit_copy_of_insn_after): Likewise.
8336         * expr.c (expand_expr_real): Likewise.
8337         * gcse.c (add_label_notes): Likewise.
8338         * haifa-sched.c (create_check_block_twin): Likewise.
8339         * jump.c (mark_jump_label_1): Likewise.
8340         * loop-doloop.c (add_test, doloop_modify): Likewise.
8341         * loop-unswitch.c (compare_and_jump_seq): Likewise.
8342         * lower-subreg.c (move_eh_region_note): Likewise.
8343         * optabs.c (emit_libcall_block): Likewise.
8344         * predict.c (predict_insn): Likewise.
8345         (combine_predictions_for_insn): Likewise.
8346         * recog.c (peephole2_optimize): Likewise.
8347         * regmove.c (try_auto_increment): Likewise.
8348         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
8349         * reload.c (find_reloads): Likewise.
8350         * reload1.c (fixup_eh_region_note): Likewise.
8351         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
8352         * reorg.c (delete_prior_computation): Likewise.
8353         (delete_computation, dbr_schedule): Likewise.
8354         * config/pa/pa.c (legitimize_pic_address): Likewise.
8355         * config/sh/sh.c (sh_reorg): Likewise.
8356
8357 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
8358
8359         PR target/36669
8360         * config/libgcc-glibc.ver: Add %exclude.
8361         * config/m32r/libgcc-glibc.ver: Likwise.
8362         * config/s390/libgcc-glibc.ver: Likwise.
8363         * config/sh/libgcc-glibc.ver: Likwise.
8364         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
8365
8366         * config/i386/libgcc-glibc.ver: New.
8367
8368         * config/i386/libgcc-x86_64-glibc.ver: Removed.
8369
8370 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
8371
8372         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
8373         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
8374         i[34567]86-*-linux*, x86_64-*-linux*.  Add
8375         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
8376         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
8377         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
8378         i[34567]86-*-linux*, x86_64-*-linux*.
8379
8380         * libgcc-std.ver: Add empty GCC_4.4.0.
8381
8382         * mkmap-symver.awk: Support multiple versions per symbol.
8383
8384         * config/i386/i386.c (ix86_init_builtins): Always define
8385         __builtin_fabsq and __builtin_copysignq with fallbacks.
8386         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
8387         and __builtin_copysignq if SSE2 isn't available.
8388
8389         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
8390         (LIBGCC2_TF_CEXT): Likwise.
8391         (TF_SIZE): Likwise.
8392
8393         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
8394
8395         * config/i386/sfp-machine.h: Moved to libgcc.
8396
8397         * config/i386/sfp-machine.h: New.
8398         * config/i386/t-linux: Likwise.
8399
8400         * config/i386/t-darwin: Remove softfp_wrap_start and
8401         softfp_wrap_end.
8402         * config/i386/t-darwin64: Likewise.
8403
8404         * config/i386/t-fprules-softfp64: Renamed to ...
8405         * config/i386/t-fprules-softfp: This.
8406
8407         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
8408         and softfp_wrap_end.
8409
8410 2008-07-02  Jason Merrill  <jason@redhat.com>
8411
8412         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
8413
8414         * tree.c (ctor_to_list): New fn.
8415         * tree.h: Declare it.
8416         (CONSTRUCTOR_ELT): New macro.
8417         (CONSTRUCTOR_NELTS): New macro.
8418
8419 2008-07-02  Richard Guenther  <rguenther@suse.de>
8420
8421         * tree-ssa-structalias.c (struct variable_info): Reorder
8422         to fill padding on 64bit hosts.  Make collapsed_to an int.
8423         (get_varinfo_fc): Deal with that.
8424         (new_var_info): Likewise.
8425         (collapse_rest_of_var): Likewise.
8426
8427 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
8428
8429         * doc/install.texi (--enable-java-home): Document.
8430         (--enable-aot-compile-rpm): Likewise.
8431         (--with-arch-directory): Likewise.
8432         (--with-os-directory): Likewise.
8433         (--with-origin-name): Likewise.
8434         (--with-arch-suffix): Likewise.
8435         (--with-jvm-root-dir): Likewise.
8436         (--with-jvm-jar-dir): Likewise.
8437         (--with-python-dir): Likewise.
8438
8439 2008-07-02  Richard Guenther  <rguenther@suse.de>
8440
8441         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
8442         from decls explicitly.  Merge operand checking from tuples.
8443
8444 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8445
8446         * tree-switch-conversion.c: Included timevar.h which I forgot before.
8447
8448 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8449
8450         * tree-switch-conversion.c: Included timevar.h
8451         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
8452
8453         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
8454
8455 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8456
8457         * tree-switch-conversion.c: Corrected various comments and
8458         whitespace issues
8459         (build_constructors): Fixed minor formatting mistakes.
8460
8461         * invoke.texi (Optimize Options): Corrected the
8462         switch-conversion-max-branch-ratio parameter.
8463
8464 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
8465
8466         * final.c (asm_insn_count): Return zero for an empty asm body.
8467
8468 2008-07-02  Richard Guenther  <rguenther@suse.de>
8469
8470         * bitmap.h (bitmap_set_bit): Return bool.
8471         (bitmap_clear_bit): Likewise.
8472         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
8473         write to the bitmap if it would.
8474         (bitmap_clear_bit): Likewise.
8475         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
8476         bitmap_set_bit return value.
8477         (add_pred_graph_edge): Likewise.
8478         (add_graph_edge): Likewise.
8479         (do_sd_constraint): Likewise.
8480         (do_ds_constraint): Likewise.
8481
8482 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8483
8484         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
8485         Fix -Wc++-compat and/or -Wcast-qual warnings.
8486         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
8487         gen_regparm_prefix): Likewise.
8488         * vmsdbgout.c (write_modbeg, lookup_filename,
8489         vmsdbgout_source_line, vmsdbgout_init): Likewise.
8490
8491 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
8492
8493         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
8494         defaults.h definition apply.
8495
8496 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8497
8498         * function.c (assign_parm_remove_parallels): New.
8499         (assign_parm_setup_block_p): Do not return true for non-BLKmode
8500         PARALLELs.
8501         (assign_parm_setup_block): Do not handle them.
8502         (assign_parm_setup_reg, assign_parm_setup_stack): Call
8503         assign_parm_remove_parallels.
8504
8505 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8506
8507         * c-typeck.c (convert_for_assignment): Use
8508         vector_targets_convertible_p.
8509         * c-common.c (vector_targets_convertible_p): New.
8510         * c-common.h (vector_targets_convertible_p): New prototype.
8511         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
8512         opaque_p_V2SI_type_node.
8513
8514 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
8515
8516         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
8517         RFmode constants.
8518
8519 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
8520
8521         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
8522         TFmode constants via two element DImode vector for hosts with
8523         HOST_BITS_PER_WIDE_INT < 64.
8524         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
8525         also for HOST_BITS_PER_WIDE_INT < 64.
8526
8527 2008-07-01  Richard Guenther  <rguenther@suse.de>
8528
8529         PR tree-optimization/36666
8530         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
8531         (get_constraint_exp_from_ssa_var): Split into ...
8532         (get_constraint_exp_for_temp): ... this ...
8533         (get_constraint_for_ssa_var): ... and that.
8534         Return constraint expressions for all touched sub-fields
8535         if the results address is not taken.
8536         (process_constraint): Remove assertion that aggregate
8537         assignments do not happen at this place.
8538         (get_constraint_for_component_ref): Add address_p argument.
8539         Return constraint expressions for all touched sub-fields
8540         if the results address is not taken.
8541         (do_deref): Use get_constraint_exp_for_temp.
8542         (get_constraint_for_1): Rename from ...
8543         (get_constraint_for): ... this.  Add the old function as wrapper.
8544         (do_structure_copy): Use get_constraint_for_1.
8545
8546 2008-07-01  Martin Jambor  <mjambor@suse.cz>
8547
8548         * Makefile.in (tree-switch-conversion.o): Add.
8549         (OBJS-common): Add tree-swtch-conversion.o.
8550         * passes.c (init_optimization_passes): Add pass_convert_switch.
8551         * tree-pass.h: (pass_convert_switch): Add.
8552         * tree-switch-conversion.c: New file.
8553         * gcc.dg/tree-ssa/cswtch.c: New testcase.
8554         * common.opt (ftree-cswtch): New option.
8555         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
8556         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
8557         * opts.c (decode_options): Set flag_tree_switch_conversion when
8558         optimization level is >= 2.
8559         * doc/invoke.texi (Optimize Options): Added description of
8560         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
8561
8562 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8563
8564         * config/darwin-driver.c (darwin_default_min_version): Fix
8565         -Wc++-compat warnings.
8566
8567 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
8568
8569         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
8570         of operand 0.
8571
8572 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8573
8574         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
8575
8576 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8577
8578         PR rtl-optimization/34744
8579         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
8580         (df_scan_free_internal): Free data structures not
8581         allocated in storage pools.
8582         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
8583         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
8584         df_scan_free_mws_vec.
8585         * dse.c (dse_step6): Free offset_map_p and offset_map_n
8586         unconditionally.
8587
8588 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
8589
8590         * config/i386/i386.c (contains_aligned_value_p): Return true
8591         for __float128.
8592         (ix86_function_arg_boundary): Return its natural boundary
8593         for __float128.
8594         (return_in_memory_32): Don't check TDmode.
8595         (ix86_split_to_parts): Support splitting into 4 parts and
8596         support TFmode for 32bit target.
8597         (ix86_split_long_move): Support splitting into 4 parts.
8598         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
8599         for SSE2.
8600         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
8601         (ix86_init_builtins): Here.
8602         (ix86_scalar_mode_supported_p): Always return true for TFmode.
8603         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
8604         'q' and 'w', respectively.
8605
8606         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
8607         TARGET_64BIT.
8608         (movtf_internal): Likewise.
8609         (<code>tf2): Likewise.
8610         (*absnegtf2_sse): Likewise.
8611         (copysign<mode>3): Likewise.
8612         (copysign<mode>3_const): Likewise.
8613         (copysign<mode>3_var): Likewise.
8614         (define_split UNSPEC_COPYSIGN): Likewise.
8615         * config/i386/sse.md (*nandtf3): Likewise.
8616         (<code>tf3): Likewise.
8617         (*<code>tf3): Likewise.
8618
8619 2008-06-30  Joey Ye  <joey.ye@intel.com>
8620             H.J. Lu  <hongjiu.lu@intel.com>
8621
8622         * global.c (compute_regsets): Set frame_pointer_needed here.
8623         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
8624
8625 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
8626
8627         * doc/install.texi (specific): Expand Windows build notes.
8628
8629 2008-06-30  Ira Rosen  <irar@il.ibm.com>
8630
8631         PR tree-optimization/36648
8632         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
8633         number of prolog iterations by step. Fix the comment.
8634
8635 2008-06-30  Richard Guenther  <rguenther@suse.de>
8636
8637         PR middle-end/36671
8638         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
8639         handle calls from ECF_MALLOC functions.
8640         (handle_pure_call): ECF_MALLOC functions do not return
8641         call-used memory.
8642         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
8643
8644 2008-06-29  Andreas Schwab  <schwab@suse.de>
8645
8646         * config/m68k/m68k.c (print_operand): Always print a float
8647         constant in hex.
8648         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
8649         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
8650         Remove macros.
8651
8652         * config/rs6000/x-linux64: Remove never used file.
8653
8654 2008-06-29  Richard Guenther  <rguenther@suse.de>
8655
8656         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
8657         prototype.
8658         (struct alias_info): Move ...
8659         * tree-ssa-alias.c: ... here.
8660         (update_alias_info): Declare.
8661         (compute_may_aliases): Call it.
8662         (update_alias_info): New function.
8663         * tree-ssa-structalias.c (update_alias_info): Move ...
8664         * tree-ssa-alias.c (update_alias_info_1): ... here.
8665         * tree-ssa-structalias.c (process_constraint_1): Remove
8666         unused from_call argument.  Rename to ...
8667         (process_constraint): ... this.  Delete old wrapper.
8668         (make_constraint_to): Adjust callers.
8669         (handle_const_call): Likewise.
8670         (handle_pure_call): Likewise.
8671         (init_base_vars): Likewise.
8672         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
8673         (find_func_aliases): We don't need structure copies for
8674         complex types.
8675         (make_constraint_from_anything): Remove.
8676         (create_variable_info_for): For globals make constraints
8677         from escaped, not from anything.
8678         (compute_points_to_sets): Do not call update_alias_info.
8679         (ipa_pta_execute): Use make_constraint_from.
8680
8681 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8682
8683         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
8684         (bitmap.o-warn, dominance.o-warn): New.
8685         * configure.ac (cxx_compat_warn): Delete.
8686         (loose_warn): Add -Wcast-qual and -Wc++-compat.
8687         * system.h: Remove #pragma diagnostic for -Wcast-qual and
8688         -Wc++-compat.
8689         * configure: Regenerate.
8690
8691         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
8692         warnings.
8693
8694 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8695
8696         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
8697         * df-scan.c (df_notes_rescan): Likewise.
8698         * ggc-page.c (set_page_table_entry): Likewise.
8699         * intl.c (gcc_gettext_width): Likewise.
8700         * varasm.c (get_unnamed_section, get_noswitch_section,
8701         get_section): Likewise.
8702
8703 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
8704
8705         * regrename.c (build_def_use): Don't copy RTX.
8706
8707 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
8708
8709         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
8710         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
8711         punctuation.  Use @ref instead of @xref.
8712         (Function Names): Remove stray @display/@end display.
8713         (C++ Attributes): Use @ref instead of @xref.
8714         (Deprecated Features): Fix punctuation around @xref.
8715         (Backwards Compatibility): Likewise.
8716         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
8717
8718 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
8719
8720         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
8721         constants for E500 double.
8722
8723 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8724
8725         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
8726         element type of const_vector.
8727
8728 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
8729
8730         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
8731         Remove FLAGS_REG clobber from expander pattern.
8732         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
8733         (anddi3, andsi3, andhi3, andqi3): Ditto.
8734         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
8735         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
8736         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
8737         (ashlsi3, ashlhi3, ashlqi3): Ditto.
8738         (ashrsi3, ashrhi3, ashrqi3): Ditto.
8739         (lshrsi3, lshrhi3, lshrqi3): Ditto.
8740         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
8741         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
8742
8743 2008-06-28  Richard Guenther  <rguenther@suse.de>
8744
8745         * tree-ssa-structalias.c (callused_id, var_callused,
8746         callused_tree): Add.
8747         (handle_pure_call): New function.
8748         (find_func_aliases): Call it.
8749         (find_what_p_points_to): Handle the call-used set.
8750         (clobber_what_escaped): Likewise.
8751         (compute_call_used_vars): New function.
8752         (init_base_vars): Init the call-used variable.
8753         (do_sd_constraint): Do not propagate the solution from CALLUSED
8754         but use CALLUSED as a placeholder.
8755         (solve_graph): Likewise.
8756         * tree-flow-inline.h (gimple_call_used_vars): New function.
8757         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
8758         (compute_call_used_vars): Declare.
8759         * tree-ssa-alias.c (set_initial_properties): Call
8760         compute_call_used_vars.
8761         (reset_alias_info): Clear call-used variables.
8762         (add_call_clobber_ops): Assert we are not called for const/pure
8763         functions.  Remove handling of them.
8764         (add_call_read_ops): Handle pure functions by adding the
8765         call-used set of variables as VUSEs.
8766         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
8767         (delete_tree_ssa): Free it.
8768         * tree-dfa.c (remove_referenced_var): Clear the var from the
8769         call-used bitmap.
8770
8771 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
8772
8773         * tree.c (build_varargs_function_type_list): New.
8774         (build_function_type_list_1): New.
8775         (build_function_type_list): Use build_function_type_list_1.
8776         * tree.h (build_varargs_function_type_list): New.
8777
8778 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8779
8780         PR target/34856
8781         * config/spu/spu.c (spu_builtin_splats): Do not generate
8782         invalid CONST_VECTOR expressions.
8783         (spu_expand_vector_init): Likewise.
8784
8785 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
8786
8787         * optabs.c (libfunc_decls): New variable.
8788         (libfunc_decl_hash, libfunc_decl_eq): New functions.
8789         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
8790         for the same function twice.
8791
8792 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
8793
8794         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
8795         ix86_expand_binary_operator directly.
8796         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
8797         for operand 2.
8798         (*ashrti3_1): Ditto.
8799         (*lshrti3_1): Ditto.
8800         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
8801         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
8802         using only one splitter.  Conditionaly execute splitter before or
8803         after peephole2 pass.
8804         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
8805         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
8806         Use only one alternative in asm template.
8807         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
8808         in asm template.
8809         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
8810         "J" operand constraint for operand 2.
8811         (*ashldi3_cconly_rex64): Ditto.
8812         (*ashrdi3_cmp_rex64): Ditto.
8813         (*ashrdi3_cconly_rex64): Ditto.
8814         (*lshrdi3_cmp_rex64): Ditto.
8815         (*lshrdi3_cconly_rex64): Ditto.
8816         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
8817         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
8818         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
8819         gen_x86_shrd_1.
8820
8821 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
8822
8823         * gimplify.c (omp_is_private): Don't return true if decl is not
8824         already private on #pragma omp for or #pragma omp parallel for.
8825
8826         PR debug/36617
8827         * tree-cfg.c (struct move_stmt_d): Replace block field with
8828         orig_block and new_block fields.
8829         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
8830         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
8831         (move_block_to_fn): Replace vars_map and new_label_map arguments
8832         with struct move_stmt_d pointer.
8833         (replace_block_vars_by_duplicates): New function.
8834         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
8835         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
8836         all subblocks of ORIG_BLOCK to the new function.  Call
8837         replace_block_vars_by_duplicates.
8838         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
8839         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
8840         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
8841         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
8842         (expand_omp): Temporarily set input_location to the location of
8843         region's controlling stmt.
8844         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
8845         BIND_EXPR, push ctx->block_vars and gimplification vars into
8846         the BIND_EXPR and its block's BLOCK_VARS instead of directly
8847         into dest function.
8848         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
8849         there are any BLOCK_VARS.
8850         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
8851         OMP_PARALLEL or OMP_TASK stmt.
8852         (lower_omp): Save and restore input_location around the lower_omp_1
8853         call.
8854
8855 2008-06-27  Richard Guenther  <rguenther@suse.de>
8856
8857         PR tree-optimization/36400
8858         PR tree-optimization/36373
8859         PR tree-optimization/36344
8860         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
8861         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
8862         (update_alias_info): Remove call clobbering code.
8863         (make_constraint_to): New helper function.
8864         (make_escape_constraint): Likewise.
8865         (handle_rhs_call): Use it on all pointer containing arguments.
8866         Also mark the static chain escaped.
8867         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
8868         instead of ANYTHING.
8869         (make_constraint_from): New helper split out from ...
8870         (make_constraint_from_anything): ... here.
8871         (find_func_aliases): Add constraints for escape sites.
8872         (intra_create_variable_infos): Make constraints from NONLOCAL
8873         for parameters.
8874         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
8875         as ANYTHING.
8876         (clobber_what_p_points_to): Remove.
8877         (clobber_what_escaped): New function.
8878         (init_base_vars): Init NONLOCAL and ESCAPED.
8879         (do_sd_constraint): Do not propagate the solution from ESCAPED
8880         but use ESCAPED as a placeholder.
8881         (solve_graph): Likewise.
8882         * tree-flow.h (clobber_what_p_points_to): Remove.
8883         (clobber_what_escaped): Declare.
8884         * tree-ssa-alias.c (set_initial_properties): Call it.
8885         Remove code clobbering escaped pointers.
8886
8887 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8888
8889         * function.c (allocate_struct_function): Only allocate a unique
8890         funcdef_no if the decl is nonzero.
8891
8892 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8893
8894         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
8895         * config/mips/mips.c (mips_split_const_insns): New function.
8896         * config/mips/mips.md (move_type): New attribute.
8897         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
8898         (dword_mode): New attribute.
8899         (type): Avoid long line.  Map "move_type"s to "type"s,
8900         choosing "multi" for doubleword moves if appropriate.
8901         Swap MTC/MFC comments to match their declaration order.
8902         (extended_mips16): Default to "yes" if "move_type" is "sll0",
8903         "type" is "branch" or "jal" is "direct".
8904         (length): Handle "extended_mips16" first.  Make the default
8905         "0" for "ghost" instructions.  Set the length from "move_type".
8906         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
8907         of "type", with "sll0" for the register alternative.  Remove the
8908         "extended_mips16" attribute.
8909         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
8910         of "type", with "shift_shift" for the register alternative.
8911         Remove the "length" attribute.
8912         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
8913         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
8914         of "type", with "andi" for the register alternative.
8915         (*zero_extendqihi2): Likewise.
8916         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
8917         of "andi" instead of a "type" of "arith".
8918         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
8919         instead of "type".
8920         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
8921         (mov_<store>r, *mov<mode>_ra): Likewise.
8922         (extendsidi2): Use "move_type" instead of "type", with "move"
8923         for the register alternative.
8924         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
8925         of "type", with "signext" for the register alternative.
8926         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
8927         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
8928         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
8929         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
8930         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
8931         (unnamed branch insn): Likewise.
8932         (*movdi_gp32_fp64): Fold into...
8933         (*movdi_32bit): ...here.
8934         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
8935         (*movdf_hardfloat): ...this new pattern.
8936         (*movdf_softfloat): Remove redundant FPR alternatives.
8937         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
8938         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
8939         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
8940         the "move" attribute.
8941         (*movdi_32bit): Use "move_type" instead of "type" and remove the
8942         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
8943         and "store" for COP loads and stores.
8944         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
8945         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
8946         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
8947         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
8948         (*movtf_mips16, *movv2sf): Likewise.
8949         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
8950         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
8951         (mfhc1<mode>): Use "move_type" instead of "move".
8952         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
8953         (loadgp_blockage): Remove the "length" attribute.
8954         (blockage, set_got_version, update_got_version): Likewise.
8955         (call_internal): Remove the "extended_mips16" attribute.
8956         (call_value_internal, call_value_multiple_internal): Likewise.
8957         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
8958         instead of "move".
8959         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
8960         the "length" attribute.
8961
8962 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8963
8964         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
8965         -Wcast-qual warnings.
8966         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
8967         handle_pragma_pop_macro): Likewise.
8968         * collect2.c (resolve_lib_name): Likewise.
8969         * config/arc/arc.c (arc_init): Likewise.
8970         * config/arm/arm.c (neon_builtin_compare,
8971         locate_neon_builtin_icode): Likewise.
8972         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
8973         * config/bfin/bfin.c (bfin_init_machine_status,
8974         bfin_optimize_loop): Likewise.
8975         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
8976         * config/cris/cris.c (cris_init_expanders): Likewise.
8977         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
8978         * config/darwin.c (machopic_indirection_eq,
8979         machopic_indirection_name, machopic_output_indirection): Likewise.
8980         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
8981         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
8982         frv_optimize_membar): Likewise.
8983         * config/i386/cygwin.h (mingw_scan,
8984         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
8985         * config/i386/cygwin1.c (mingw_scan): Likewise.
8986         * config/i386/i386.c (machopic_output_stub): Likewise.
8987         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
8988         i386_pe_unique_section): Likewise.
8989         * config/ia64/ia64.c (ia64_init_machine_status,
8990         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
8991         Likewise.
8992         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
8993         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
8994         * config/m68k/m68k.c (m68k_handle_option,
8995         m68k_sched_md_init_global): Likewise.
8996         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
8997         mcore_unique_section): Likewise.
8998         * config/mips/mips.c (mips_block_move_straight,
8999         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
9000         Likewise.
9001         * config/mmix/mmix.c (mmix_init_machine_status,
9002         mmix_encode_section_info): Likewise.
9003         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
9004         * config/rs6000/rs6000.c (rs6000_init_machine_status,
9005         print_operand_address, output_toc, redefine_groups,
9006         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
9007         * config/s390/s390.c (s390_init_machine_status): Likewise.
9008         * config/score/score.c (score_block_move_straight,
9009         score_block_move_loop_body): Likewise.
9010         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
9011         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
9012         * emit-rtl.c (find_auto_inc): Likewise.
9013         * gcc.c (translate_options, process_command): Likewise.
9014         * reorg.c (dbr_schedule): Likewise.
9015         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
9016         * xcoffout.c (xcoffout_declare_function): Likewise.
9017
9018 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
9019
9020         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
9021         ipa-pta working again.
9022
9023 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
9024
9025         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
9026         genautomata.
9027
9028 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
9029
9030         * config.gcc (powerpc*-*-*): Add new core e500mc.
9031         * config/rs6000/e500mc.md: New file.
9032         * config/rs6000/rs6000.c (processor_costs): Add new costs for
9033         e500mc.
9034         (rs6000_override_options): Add e500mc case to
9035         processor_target_table. Altivec and Spe options not allowed
9036         with e500mc. Add isel instruction to e500mc by
9037         default. Initialize rs6000_cost for e500mc.
9038         (rs6000_issue_rate): Set issue rate for e500mc.
9039         * config/rs6000/rs6000.h (processor_type): Add
9040         PROCESSOR_PPCE500MC.
9041         (ASM_CPU_SPEC): Add e500mc.
9042         Set TARGET_ISEL to rs6000_isel.
9043         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
9044         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
9045         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
9046         Include e500mc.md.
9047         * doc/invoke.texi: Add e500mc to list of cpus.
9048
9049 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
9050
9051         PR c/34867
9052         * c-lex.c (lex_charconst): Initialize unsignedp.
9053
9054 2008-06-27  Olivier Hainque  <hainque@adacore.com>
9055
9056         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
9057         documented assumptions.
9058
9059 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
9060
9061         * dwarf2out.c: Remove trailing white spaces.  Break long line
9062         in comments.
9063
9064 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
9065
9066         * libfuncs.h (LTI_synchronize): New libfunc_index.
9067         (synchronize_libfunc): Declare.
9068         * builtins.c (expand_builtin_synchronize): Consider using
9069         synchronize_libfunc before falling back on an asm blockage.
9070         * config/mips/mips.c: Include libfuncs.h
9071         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
9072
9073 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
9074
9075         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
9076         parameter.  Copy stack_reg to r11 where appropriate.
9077         (no_global_regs_above): Add gpr parameter.
9078         (rs6000_stack_info): Only add padding for SPE save area if we
9079         are saving SPE GPRs and CR.
9080         (saveres_routine_syms): New variable.
9081         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
9082         Define.
9083         (rs6000_savres_routine_sym): New function.
9084         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
9085         split out of...
9086         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
9087         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
9088         Tweak FPR out-of-line saving.
9089         (rs6000_make_savres_rtx): New function.
9090         (rs6000_use_multiple_p): New function.
9091         (rs6000_savres_strategy): New function.
9092         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
9093         out-of-line if appropriate.
9094         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
9095         if we are optimizing for size.
9096         (GP_SAVE_INLINE): Define.
9097         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
9098         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
9099         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
9100         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
9101         (*save_fpregs_<mode>): Add use of r11.
9102         (*restore_gpregs_<mode>): New insn.
9103         (*return_and_restore_gpregs_<mode>): New insn.
9104         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
9105         use r11.
9106         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
9107         (*restore_gpregs_spe): New insn.
9108         (*return_and_restore_gpregs_spe): New insn.
9109         * config/rs6000/predicates.md (save_world_operation): Fix check.
9110
9111 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9112
9113         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
9114         this point, so assert that.
9115
9116 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
9117
9118         * cfganal.c: Include vec.h and vecprim.h.
9119         (compute_idf): Import from...
9120         * tree-into-ssa (compute_idf): ...here.
9121         * basic-block.h (compute_idf): Export.
9122
9123 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
9124
9125         * c-decl.c (merge_decls): Use !current_function_decl to check for
9126         extern declaration of C99 inline function being at file scope.
9127
9128 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
9129
9130         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
9131
9132 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9133
9134         * alias.c (record_alias_subset, init_alias_analysis): Fix
9135         -Wc++-compat and/or -Wcast-qual warnings.
9136         * attribs.c (lookup_attribute_spec): Likewise.
9137         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
9138         copy_bb, connect_traces,
9139         find_rarely_executed_basic_blocks_and_cr): Likewise.
9140         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
9141         note_btr_set, migrate_btr_defs): Likewise.
9142         * builtins.c (result_vector, expand_builtin_memcpy,
9143         expand_builtin_mempcpy_args, expand_builtin_strncpy,
9144         builtin_memset_read_str, expand_builtin_printf,
9145         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
9146         Likewise.
9147         * caller-save.c (mark_set_regs): Likewise.
9148         * calls.c (expand_call, emit_library_call_value_1): Likewise.
9149         * cgraph.c (cgraph_edge): Likewise.
9150         * combine.c (likely_spilled_retval_1): Likewise.
9151         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
9152         htab_counts_entry_del, get_coverage_counts): Likewise.
9153         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
9154         new_cselib_val): Likewise.
9155         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
9156         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
9157         Likewise.
9158         * df-core.c (df_compact_blocks): Likewise.
9159         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
9160         * df-scan.c (df_grow_reg_info, df_ref_create,
9161         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
9162         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
9163         df_record_entry_block_defs, df_record_exit_block_uses,
9164         df_bb_verify): Likewise.
9165         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
9166         DF_REF_EXTRACT_MODE_CONST): New.
9167         * dominance.c (get_immediate_dominator, get_dominated_by,
9168         nearest_common_dominator, root_of_dom_tree,
9169         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
9170         -Wc++-compat and/or -Wcast-qual warnings.
9171         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
9172         record_store, replace_read, check_mem_read_rtx, scan_insn,
9173         dse_step1, dse_record_singleton_alias_set): Likewise.
9174         * dwarf2asm.c (dw2_force_const_mem): Likewise.
9175
9176 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9177
9178         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
9179         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
9180         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
9181         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
9182         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
9183         add_ranges_num, add_ranges_by_labels, file_info_cmp,
9184         file_name_acquire, output_file_names, add_const_value_attribute,
9185         premark_used_types_helper, file_table_eq, file_table_hash,
9186         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
9187         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
9188         -Wcast-qual warnings.
9189         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
9190         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
9191         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
9192         gen_reg_rtx, start_sequence, init_emit): Likewise.
9193         * et-forest.c (et_new_occ, et_new_tree): Likewise.
9194         * except.c (init_eh_for_function, gen_eh_region,
9195         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
9196         arh_to_landing_pad, arh_to_label, add_action_record,
9197         add_call_site, switch_to_exception_section): Likewise.
9198         * expmed.c (synth_mult): Likewise.
9199         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
9200         store_expr): Likewise.
9201         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
9202         Likewise.
9203         * function.c (assign_stack_temp_for_type,
9204         allocate_struct_function, match_asm_constraints_1): Likewise.
9205         * gcov-io.c (gcov_allocate): Likewise.
9206         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
9207         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
9208         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
9209         record_one_set, insert_expr_in_table, insert_set_in_table,
9210         dump_hash_table, compute_hash_table_work, alloc_hash_table,
9211         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
9212         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
9213         -Wcast-qual warnings.
9214
9215 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9216
9217         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
9218         -Wcast-qual warnings.
9219         * gcc.c (process_command): Likewise.
9220         * genattrtab.c (oballoc): Use XOBNEW.
9221         (oballocvec): Define.
9222         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
9223         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
9224         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
9225         -Wc++-compat and/or -Wcast-qual warnings.
9226         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
9227         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
9228         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
9229         gen_presence_absence_set, gen_automaton, gen_regexp_el,
9230         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
9231         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
9232         add_excls, process_presence_absence_names,
9233         process_presence_absence_patterns, add_presence_absence,
9234         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
9235         get_free_state, add_arc, get_free_automata_list_el,
9236         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
9237         transform_3, cache_presence, create_ainsns, create_automata,
9238         create_state_ainsn_table, dfa_insn_code_enlarge,
9239         output_trans_func, output_min_issue_delay_func,
9240         output_dead_lock_func, output_reset_func,
9241         output_get_cpu_unit_code_func, output_dfa_start_func,
9242         expand_automata): Likewise.
9243         * genextract.c (gen_insn): Likewise.
9244         * gengtype-lex.l: Likewise.
9245         * gengtype.c (read_input_list, adjust_field_type,
9246         process_gc_options): Likewise.
9247         * genoutput.c (note_constraint): Likewise.
9248         * genpreds.c (mangle, add_constraint): Likewise.
9249         * genrecog.c (process_define_predicate, new_decision,
9250         add_to_sequence): Likewise.
9251         * gensupport.c (record_insn_name): Likewise.
9252
9253 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9254
9255         * config/i386/driver-i386.c (detect_caches_amd,
9256         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
9257         and/or -Wcast-qual warnings.
9258         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
9259         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
9260         gt_pch_save): Likewise.
9261         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
9262         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
9263         * global.c (compute_regsets): Likewise.
9264         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
9265         finish_graph_dump_file): Likewise.
9266         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
9267         unlink_bb_notes): Likewise.
9268         * integrate.c (get_hard_reg_initial_val): Likewise.
9269         * ipa-prop.c (ipa_push_func_to_list): Likewise.
9270         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
9271         * local-alloc.c (update_equiv_regs): Likewise.
9272         * loop-invariant.c (check_invariant_table_size,
9273         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
9274         Likewise.
9275         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
9276         altered_reg_used, mark_altered): Likewise.
9277         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
9278         insert_var_expansion_initialization,
9279         combine_var_copies_in_loop_exit, apply_opt_in_copies,
9280         release_var_copies): Likewise.
9281         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
9282         analyze_matrix_decl, add_allocation_site, analyze_transpose,
9283         analyze_accesses_for_phi_node, check_var_notmodified_p,
9284         check_allocation_function, find_sites_in_func,
9285         record_all_accesses_in_func, transform_access_sites,
9286         transform_allocation_sites): Likewise.
9287         * omp-low.c (new_omp_region, create_omp_child_function_name,
9288         check_omp_nesting_restrictions, check_combined_parallel,
9289         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
9290         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
9291         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
9292         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
9293         Likewise.
9294         * opts-common.c (prune_options): Likewise.
9295         * opts.c (add_input_filename, print_filtered_help,
9296         get_option_state): Likewise.
9297         * params.c (add_params): Likewise.
9298         * passes.c (set_pass_for_id, next_pass_1,
9299         do_per_function_toporder, pass_fini_dump_file): Likewise.
9300         * postreload.c (reload_cse_simplify_operands): Likewise.
9301         * predict.c (tree_predicted_by_p, tree_predict_edge,
9302         clear_bb_predictions, combine_predictions_for_bb): Likewise.
9303
9304 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9305
9306         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
9307         warnings.
9308         * recog.c (check_asm_operands, validate_change_1): Likewise.
9309         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
9310         subst_asm_stack_regs): Likewise.
9311         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
9312         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
9313         * regmove.c (reg_is_remote_constant_p): Likewise.
9314         * regrename.c (regrename_optimize, scan_rtx_reg,
9315         kill_clobbered_value, kill_set_value, kill_autoinc_value):
9316         Likewise.
9317         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
9318         regstat_compute_calls_crossed): Likewise.
9319         * reload1.c (init_reload, new_insn_chain,
9320         has_nonexceptional_receiver, reload, copy_reloads,
9321         calculate_needs_all_insns, init_elim_table): Likewise.
9322         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
9323         * rtl.c (shallow_copy_rtx_stat): Likewise.
9324         * rtlanal.c (parms_set): Likewise.
9325         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
9326         sbitmap_resize, sbitmap_vector_alloc): Likewise.
9327         * sched-ebb.c (earliest_block_with_similiar_load,
9328         add_deps_for_risky_insns): Likewise.
9329         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
9330         schedule_region): Likewise.
9331         * see.c (eq_descriptor_pre_extension,
9332         hash_descriptor_pre_extension, hash_del_pre_extension,
9333         eq_descriptor_properties, hash_descriptor_properties,
9334         hash_del_properties, see_seek_pre_extension_expr,
9335         see_initialize_data_structures, see_print_register_properties,
9336         see_print_pre_extension_expr, see_delete_merged_def_extension,
9337         see_delete_unmerged_def_extension, see_emit_use_extension,
9338         see_pre_delete_extension, see_map_extension, see_commit_changes,
9339         see_analyze_merged_def_local_prop,
9340         see_analyze_merged_def_local_prop,
9341         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
9342         see_set_prop_merged_def, see_set_prop_unmerged_def,
9343         see_set_prop_unmerged_use, see_print_one_extension,
9344         see_merge_one_use_extension, see_merge_one_def_extension,
9345         see_store_reference_and_extension, see_update_uses_relevancy,
9346         see_update_defs_relevancy): Likewise.
9347         * statistics.c (hash_statistics_hash, hash_statistics_eq,
9348         hash_statistics_free, curr_statistics_hash): Likewise.
9349         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
9350         expand_asm_operands, expand_return, case_bit_test_cmp,
9351         expand_case): Likewise.
9352         * stor-layout.c (start_record_layout): Likewise.
9353         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
9354         gt_pch_save_stringpool): Likewise.
9355         * tree-data-ref.c (hash_stmt_vertex_info,
9356         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
9357         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
9358
9359 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
9360
9361         PR target/36627
9362         * config/i386/i386.md : Change constraints of HImode and QImode
9363         immediate operands from "i" to "n".  Change SImode "ni" constraint to
9364         "i" and SImode "rmi" constraint to "g".  Remove all constraints
9365         from const0_operand and const1_operand predicated operands.
9366         (i): Change QImode and HImode attribute from "i" to "n".
9367         (*subqi_2): Change HImode operands to QImode.
9368         (*subqi_3): Ditto.
9369
9370 2008-06-25  Olivier Hainque  <hainque@adacore.com>
9371
9372         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
9373         sed substitutions.
9374
9375 2008-06-25  Richard Guenther  <rguenther@suse.de>
9376
9377         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
9378         not overflow the result type.
9379
9380 2008-06-25  Richard Guenther  <rguenther@suse.de>
9381
9382         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
9383         (vn_lookup): Likewise.
9384
9385 2008-06-25  Richard Guenther  <rguenther@suse.de>
9386
9387         PR tree-optimization/35518
9388         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
9389         * tree-sra.c (instantiate_element): Use fold_build3 to build
9390         BIT_FIELD_REFs.
9391         (try_instantiate_multiple_fields): Likewise.
9392
9393 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9394
9395         * config/rs6000/rs6000.md: Change all string instruction's clobber to
9396         be early clobbers.
9397
9398 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9399
9400         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
9401         use_backchain_to_restore_sp to true
9402         if the offset of the link register save area would go over the 32k - 1
9403         offset limit of the load
9404         instructions.
9405
9406 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
9407
9408         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
9409         anchor for the type-punning blurb.  Cross-reference "Structures
9410         unions enumerations and bit-fields implementation".  Provide a
9411         cast-through-pointer example.  Make final sentence self-contained.
9412         * doc/implement-c.texi (Structures unions enumerations and
9413         bit-fields implementation): Cross-reference the type-punning blurb
9414         in the -fstrict-aliasing documentation.
9415
9416 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9417
9418         PR middle-end/36594
9419         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
9420         the memory instead of the memory itself for the save area.
9421
9422 2008-06-24  Olivier Hainque  <hainque@adacore.com>
9423             Nicolas Roche  <roche@adacore.com>
9424
9425         * gengtype.c (srcdir_len): size_t instead of int.
9426         (get_file_realbasename): New function.  For F a filename, the real
9427         basename of F, with all the path components stripped.
9428         (get_file_srcdir_relative_path): New function.  For F a filename, the
9429         relative path to F from $(srcdir).
9430         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
9431         get_file_realbasename.  Adjust the head comment.
9432         (get_prefix_langdir_index): New function. For F a filename, return the
9433         lang_dir_names[] relative index of the language directory that is
9434         a prefix in F.
9435         (get_file_langdir): For F a filename, return the name of the language
9436         directory where F is located.
9437         (get_file_gtfilename): New function. The gt- output file name for an
9438         input filename F.
9439         (get_output_file_with_visibility): Replace in-line computations with
9440         uses of get_file_gtfilename and get_prefix_langdir_index.
9441         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
9442
9443 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
9444
9445         PR tree-optimization/36504
9446         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
9447         references without base address.
9448
9449 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9450
9451         PR middle-end/36584
9452         * calls.c (expand_call): Increase alignment for recursive functions.
9453
9454 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
9455
9456         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
9457         (TARGET_FUNCTION_VALUE): New define.
9458         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
9459         * config/avr/avr.h (FUNCTION_VALUE): Remove.
9460
9461 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9462
9463         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
9464         (fmod<mode>3): Ditto.
9465         (remainderxf3): Ditto.
9466         (remainder<mode>3): Ditto.
9467
9468 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
9469
9470         PR target/36533
9471         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
9472         REG is a hard register.
9473
9474         PR tree-optimization/36508
9475         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
9476         499, don't check it at all in release compilers.
9477
9478 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9479
9480         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
9481         together with SSE_TARGET_MATH to disable insn pattern.
9482         (*fop_<MODEF:mode>_2_i387): Ditto.
9483         (*fop_<MODEF:mode>_3_i387): Ditto.
9484
9485 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
9486
9487         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
9488
9489 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
9490
9491         PR middle-end/34906
9492         * gimplify.c (gimplify_asm_expr): Check the return code of
9493         parse_output_constraint call, set function return and is_inout
9494         value if it failed.
9495
9496 2008-06-22  Ian Lance Taylor  <iant@google.com>
9497
9498         * c-lex.c (narrowest_unsigned_type): Change itk to int.
9499         (narrowest_signed_type): Likewise.
9500         * c-typeck.c (c_common_type): Change local variable mclass to enum
9501         mode_class, twice.
9502         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
9503         tcc_comparison, not the tree code itself.
9504         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
9505         (c_expand_expr): Cast modifier to enum expand_modifier.
9506         * c-common.h (C_RID_CODE): Add casts.
9507         (C_SET_RID_CODE): Define.
9508         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
9509         (c_lex_one_token): Add cast to avoid warning.
9510         (c_parser_objc_type_name): Rename local typename to type_name.
9511         (check_no_duplicate_clause): Change code parameter to enum
9512         omp_clause_code.
9513         (c_parser_omp_var_list_parens): Change kind parameter to enum
9514         omp_clause_code.
9515         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
9516         c_parser_omp_list_var_parens.
9517         (c_parser_omp_threadprivate): Likewise.
9518         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
9519         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
9520         * c-format.c (NO_FMT): Define.
9521         (printf_length_specs): Use NO_FMT.
9522         (asm_fprintf_length_specs): Likewise.
9523         (gcc_diag_length_specs): Likewise.
9524         (scanf_length_specs): Likewise.
9525         (strfmon_length_specs): Likewise.
9526         (gcc_gfc_length_specs): Likewise.
9527         (printf_flag_specs): Change 0 to STD_C89.
9528         (asm_fprintf_flag_specs): Likewise.
9529         (gcc_diag_flag_specs): Likewise.
9530         (gcc_cxxdiag_flag_specs): Likewise.
9531         (scanf_flag_specs): Likewise.
9532         (strftime_flag_specs): Likewise.
9533         (strfmon_flag_specs): Likewise.
9534         (print_char_table): Likewise.
9535         (asm_fprintf_char_table): Likewise.
9536         (gcc_diag_char_table): Likewise.
9537         (gcc_tdiag_char_table): Likewise.
9538         (gcc_cdiag_char_table): Likewise.
9539         (gcc_cxxdiag_char_table): Likewise.
9540         (gcc_gfc_char_table): Likewise.
9541         (scan_char_table): Likewise.
9542         (time_char_table): Likewis.
9543         (monetary_char_table): Likewise.
9544         * c-format.h (BADLEN): Likewise.
9545
9546 2008-06-21  Ian Lance Taylor  <iant@google.com>
9547
9548         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
9549         Define END_OF_BASE_TREE_CODES around inclusion.
9550         * tree.c (tree_code_type): New global array.
9551         (tree_code_length, tree_code_name): Likewise.
9552         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
9553         $(lang_tree_files).
9554         (all-tree.def, s-alltree): New targets.
9555         (gencheck.h, s-gencheck): Remove.
9556         (tree.o): Depend upon all-tree.def.
9557         (build/gencheck.o): Remove gencheck.h dependency.
9558         (mostlyclean): Don't remove gencheck.h.
9559         * c-common.h (enum c_tree_code): Remove.
9560         * c-lang.c (tree_code_type): Remove.
9561         (tree_code_length, tree_code_name): Remove.
9562         * gencheck.c (tree_codes): Include all-tree.def, rather than
9563         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
9564         after it is used.
9565         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
9566         than tree.def.
9567         * cp/cp-tree.h (enum cplus_tree_code): Remove.
9568         (operator_name_info): Size to MAX_TREE_CODES.
9569         (assignment_operator_name_info): Likewise.
9570         * cp/cp-lang.c (tree_code_type): Remove.
9571         (tree_code_length, tree_code_name): Remove.
9572         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
9573         (assignment_operator_name_info): Likewise.
9574         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
9575         MAX_TREE_CODES.
9576         * cp/mangle.c (write_expression): Likewise.
9577         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
9578         * fortran/f95-lang.c (tree_code_type): Remove.
9579         (tree_code_length, tree_code_name): Remove.
9580         * java/java-tree.h (enum java_tree_code): Remove.
9581         * java/lang.c (tree_code_type): Remove.
9582         (tree_code_length, tree_code_name): Remove.
9583         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
9584         * objc/objc-act.h (enum objc_tree_code): Remove.
9585         * objc/objc-lang.c (tree_code_type): Remove.
9586         (tree_code_length, tree_code_name): Remove.
9587         * objcp/objcp-lang.c (tree_code_type): Remove.
9588         (tree_code_length, tree_code_name): Remove.
9589         * ada/ada-tree.h (enum gnat_tree_code): Remove.
9590         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
9591         * ada/misc.c (tree_code_type): Remove.
9592         (tree_code_length, tree_code_name): Remove.
9593
9594 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
9595
9596         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
9597         the grand_bitmap_obstack.
9598
9599 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9600
9601         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
9602         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
9603         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
9604         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
9605         move_stmt_r, new_label_mapper): Likewise.
9606         * tree-complex.c (cvc_lookup): Likewise.
9607         * tree-dfa.c (create_function_ann): Likewise.
9608         * tree-dump.c (dump_register): Likewise.
9609         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
9610         find_phi_replacement_condition): Likewise.
9611         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
9612         tree_function_versioning): Likewise.
9613         * tree-into-ssa.c (cmp_dfsnum): Likewise.
9614         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
9615         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
9616         get_nonlocal_debug_decl, convert_nonlocal_reference,
9617         convert_nonlocal_omp_clauses, get_local_debug_decl,
9618         convert_local_reference, convert_local_omp_clauses,
9619         convert_nl_goto_reference, convert_nl_goto_receiver,
9620         convert_tramp_reference, convert_call_expr): Likewise.
9621         * tree-outof-ssa.c (contains_tree_r): Likewise.
9622         * tree-parloops.c (reduction_phi, initialize_reductions,
9623         eliminate_local_variables_1, add_field_for_reduction,
9624         add_field_for_name, create_phi_for_local_result,
9625         create_call_for_reduction_1, create_loads_for_reductions,
9626         create_stores_for_reduction, create_loads_and_stores_for_name):
9627         Likewise.
9628         * tree-phinodes.c (allocate_phi_node): Likewise.
9629         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
9630         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
9631         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
9632         * tree-ssa-coalesce.c (compare_pairs): Likewise.
9633         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
9634         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
9635         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
9636         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
9637         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
9638         vn_nary_op_insert): Likewise.
9639         * tree-ssa.c (redirect_edge_var_map_add,
9640         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
9641         * tree-vectorizer.c (vectorize_loops): Likewise.
9642         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
9643         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
9644         tree_cons_stat, build1_stat, build_variant_type_copy,
9645         decl_init_priority_lookup, decl_fini_priority_lookup,
9646         decl_priority_info, decl_restrict_base_lookup,
9647         decl_restrict_base_insert, decl_debug_expr_lookup,
9648         decl_debug_expr_insert, decl_value_expr_lookup,
9649         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
9650         type_hash_add, get_file_function_name, tree_check_failed,
9651         tree_not_check_failed, tree_range_check_failed,
9652         omp_clause_range_check_failed, build_omp_clause,
9653         build_vl_exp_stat): Likewise.
9654         * value-prof.c (gimple_histogram_value,
9655         gimple_duplicate_stmt_histograms): Likewise.
9656         * var-tracking.c (attrs_list_insert, attrs_list_copy,
9657         unshare_variable, variable_union_info_cmp_pos, variable_union,
9658         dataflow_set_different_1, dataflow_set_different_2,
9659         vt_find_locations, variable_was_changed, set_variable_part,
9660         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
9661         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
9662         section_entry_hash, object_block_entry_eq,
9663         object_block_entry_hash, create_block_symbol,
9664         initialize_cold_section_name, default_function_rodata_section,
9665         strip_reg_name, set_user_assembler_name, const_desc_eq,
9666         build_constant_desc, output_constant_def, lookup_constant_def,
9667         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
9668         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
9669         default_internal_label): Likewise.
9670         * varray.c (varray_init, varray_grow): Likewise.
9671         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
9672
9673 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
9674
9675         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
9676         operators for "test" insn.  Macroize insn using SWI mode macro.
9677         (*jcc_fused_2): Ditto.
9678         (*jcc_fused_3): Macroize insn using SWI mode macro.
9679         (*jcc_fused_4): Ditto.
9680
9681 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
9682
9683         * tree-ssa-pre.c: Fix typo in comment.
9684         (init_antic, fini_antic): Add explicit funtions for
9685         initializing and deinitializing ANTIC and AVAIL sets.
9686         (create_expression_by_pieces): Fix typo in comment.
9687         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
9688         (execute_pre): Eventually dump details about ANTIC_IN.
9689
9690 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9691
9692         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
9693         * gcc.c (translate_options, init_spec, store_arg, read_specs,
9694         add_to_obstack, file_at_path, find_a_file, execute,
9695         add_preprocessor_option, add_assembler_option, add_linker_option,
9696         process_command, insert_wrapper, do_option_spec, do_self_spec,
9697         spec_path, do_spec_1, is_directory, main, used_arg,
9698         getenv_spec_function): Likewise.
9699         * tlink.c (symbol_hash_lookup, file_hash_lookup,
9700         demangled_hash_lookup, symbol_push, file_push, frob_extension):
9701         Likewise.
9702
9703 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
9704
9705         * doc/rtl.texi: Updated subreg section.
9706
9707 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
9708
9709         PR c++/36523
9710         * cgraphunit.c (cgraph_process_new_functions): Don't clear
9711         node->needed and node->reachable.
9712         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
9713         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
9714         (expand_task_call): Don't call expand_task_copyfn.
9715         (expand_task_copyfn): Renamed to...
9716         (finalize_task_copyfn): ... this.
9717
9718 2008-06-19  Jan Hubicka  <jh@suse.cz>
9719
9720         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
9721         clobbering framepointer.
9722
9723 2008-06-19  Jan Hubicka  <jh@suse.cz>
9724
9725         * tree-optimize.c (execute_early_local_optimizations): Set
9726         cgraph_state only at first invocation.
9727
9728 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9729
9730         * system.h (-Wc++-compat): Activate as a warning, no an error.
9731
9732 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
9733
9734         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
9735         instead of "#" in insn asm template.
9736         (*jcc_fused_2): Ditto.
9737
9738 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
9739
9740         * config/i386/i386.h (ix86_tune_indices)
9741         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
9742         (TARGET_FUSE_CMP_AND_BRANCH): New define.
9743         * config/i386/i386.md (*jcc_fused_1): New insn pattern
9744         (*jcc_fused_2): Ditto.
9745         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
9746         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
9747         (print operand): Handle 'E' and 'e' code.
9748
9749 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
9750
9751         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
9752         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
9753         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9754
9755 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
9756
9757         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
9758         node->decl.
9759         (cgraph_expand_function): Use local copy of decl.
9760         (cgraph_expand_all_functions): Remove redundant initialization of
9761         order_pos.
9762         (cgraph_optimize): Reword internal_error message.
9763
9764 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
9765
9766         * arm-protos.h (arm_return_in_memory): Remove public
9767         arm_return_in_memory() prototype.
9768         * arm.c (arm_return_in_memory): Add static prototype, add target
9769         hook macro, change definition and comments.
9770         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
9771
9772 2008-06-19  Ben Elliston  <bje@au.ibm.com>
9773
9774         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
9775         real.c: Remove references to IEEE 754R.
9776         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
9777         * doc/libgcc.texi (Decimal float library routines): Likewise.
9778
9779 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9780
9781         * targhooks.h (struct gcc_target): New member unwind_word_mode.
9782         (default_unwind_word_mode): Add prototype.
9783         * targhooks.c (default_unwind_word_mode): New function.
9784         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
9785         instead of word_mode.
9786         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
9787         (TARGET_INITIALIZER): Use it.
9788
9789         * c-common.c (handle_mode_attribute): Support "unwind_word"
9790         mode attribute.
9791         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
9792
9793         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
9794         word_mode to access SjLj_Function_Context member "data".
9795         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
9796         conversion from targetm.eh_return_filter_mode () to
9797         targetm.unwind_word_mode () if they differ.
9798
9799         * builtin-types.def (BT_UNWINDWORD): New primitive type.
9800         (BT_FN_UNWINDWORD_PTR): New function type.
9801         (BT_FN_WORD_PTR): Remove.
9802         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
9803         * except.c (expand_builtin_extend_pointer): Convert pointer to
9804         targetm.unwind_word_mode () instead of word_mode.
9805
9806         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
9807         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
9808         (spu_unwind_word_mode): New function.
9809         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
9810         (TARGET_UNWIND_WORD_MODE): Define.
9811         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
9812
9813 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9814
9815         * config/spu/spu.c (reg_align): Remove.
9816         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
9817         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
9818         (spu_split_store): Likewise.
9819
9820 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
9821
9822         * gcc/tree-vn.c: Fix typo in comment.
9823
9824 2008-06-18  Jan Hubicka  <jh@suse.cz>
9825
9826         * cgraphunit.c (cgraph_optimize): Output debug info when doing
9827         toplevel reorder too.
9828
9829 2008-06-18  Jan Hubicka  <jh@suse.cz>
9830
9831         * c-opts.c (c_common_post_options): PCH is not compatible with
9832         no-unit-at-a-time.
9833         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
9834         -fno-toplevel-reorder by default now.
9835
9836 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9837
9838         PR documentation/30739
9839         * doc/install.texi (Prerequisites): Document dependency on awk.
9840
9841 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
9842             Ian Lance Taylor  <iant@google.com>
9843
9844         PR rtl-optimization/35604
9845         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
9846         only want to change jump destinations, not eventual label comparisons.
9847
9848 2008-06-16  Jan Hubicka  <jh@suse.cz>
9849
9850         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
9851         syntax errors.
9852         (cgraph_analyze_function): Likewise.
9853
9854 2008-06-16  Jan Hubicka  <jh@suse.cz>
9855
9856         * cgraph.h (cgraph_mark_if_needed): New function.
9857         * cgraphunit.c (cgraph_mark_if_needed): New function.
9858         * c-decl.c (duplicate_decl): Use it.
9859
9860 2008-06-16  Jan Hubicka  <jh@suse.cz>
9861
9862         * cgraph.c (cgraph_add_new_function): When in expansion state, do
9863         lowering.
9864
9865 2008-06-16  Jan Hubicka  <jh@suse.cz>
9866
9867         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
9868
9869 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
9870             Kazu Hirata  <kazu@codesourcery.com>
9871             Maxim Kuvyrkov  <maxim@codesourcery.com
9872
9873         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
9874         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
9875         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
9876         EXTRA_SPEC_FUNCTIONS.
9877         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
9878         (DRIVER_SELF_SPECS): Adjust.
9879         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
9880         * config/mips/st.h, config/mips/t-st: New.
9881         * config/mips/driver-native.c, config/mips/x-native: New.
9882         * doc/invoke.texi (MIPS): Document 'native' value for -march and
9883         -mtune options.
9884
9885 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
9886
9887         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
9888         from it.
9889         (ISA_HAS_FP_CONDMOVE): New macro.
9890         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
9891         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
9892         (ISA_HAS_NMADD3_NMSUB3): New macro.
9893         * config/mips/mips.c (mips_rtx_costs): Update.
9894         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
9895         compiling for ST Loongson 2E/2F.
9896         (madd<mode>): Rename to madd4<mode>.  Update.
9897         (madd3<mode>): New pattern.
9898         (msub<mode>): Rename to msub4<mode>.  Update.
9899         (msub3<mode>): New pattern.
9900         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
9901         (nmadd3<mode>): New pattern.
9902         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
9903         (nmadd3<mode>_fastmath): New pattern.
9904         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
9905         (nmsub3<mode>): New pattern.
9906         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
9907         (nmsub3<mode>_fastmath): New pattern.
9908         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
9909
9910 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
9911
9912         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
9913         (DF_REF_INSN_INFO): New.
9914         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
9915         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
9916         with a NULL DF_REF_INSN_INFO.
9917         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
9918         DF_INSN_SET.
9919         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
9920         DF_INSN_INFO_EQ_USES): New.
9921         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
9922         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
9923         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
9924         * df-core.c: Update comment for above changes.
9925         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
9926         DF_INSN_UID_* macros.
9927         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
9928         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
9929         insn rtx.  Update all callers.
9930         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
9931         df_ref_create_structure, df_insn_refs_collect): Likewise.
9932         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
9933         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
9934         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
9935         macros to access the insn refs.
9936         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
9937         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
9938         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
9939         for accessing the refs.
9940         (try_fwprop_subst): Likewise.
9941         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
9942         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
9943         for accessing the refs.
9944         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
9945         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
9946         to look at the insn refs.
9947         (record_uses): Likewise.
9948         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
9949         function anymore.
9950         (mark_artificial_uses): Don't mark_insn for artificial refs.
9951         (mark_reg_rependencies): Likewise.
9952
9953         * doc/rtl.texi: Remove documentation of ADDRESSOF.
9954
9955 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9956
9957         * configure: Regenerate.
9958
9959 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9960
9961         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
9962         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9963         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9964
9965 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9966
9967         * config/avr/avr.c (avr_mcu_t): Add attiny167.
9968         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9969         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9970
9971 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9972
9973         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
9974         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9975         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9976
9977 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9978
9979         * tree-ssa-sccvn.c: Fix format of comments.
9980
9981 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9982
9983         * cgraph.c: Remove unneeded forward declarations of eq_node()
9984         and hash_node().
9985
9986 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
9987
9988         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
9989         REG_RETVAL notes.
9990         (see_update_relevancy): Likewise.
9991         * fwprop.c (try_fwprop_subst): Likewise.
9992         * rtlanal.c (noop_move_p): Likewise.
9993         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
9994         notes to non-existing libcall blocks.
9995         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
9996         Remove orig_set.
9997         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
9998         (dead_libcall_p): Remove.
9999         (delete_trivially_dead_insns): Don't use it.
10000         * web.c (union_defs): Remove comment about keeping nops.
10001         * gcse.c (hash_scan_insn): Don't take libcall pointers.
10002         (compute_hash_table_work): Don't track libcall notes.
10003         (do_local_cprop): Don't take libcall pointers.  Don't update
10004         libcall notes.
10005         (adjust_libcall_notes): Deleted.
10006         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
10007         ever have existed in the first place).
10008         (replace_store_insn): Don't try to remove libcall notes.
10009         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
10010         (resolve_reg_notes): Don't call them.
10011         (resolve_simple_move): Likewise.
10012         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
10013         Don't remove REG_RETVAL notes.
10014         * emit-rtl.c (try_split): Don't update libcall notes.
10015         (emit_copy_of_insn_after): Dito.
10016         * cselib.c (cselib_current_insn_in_libcall): Remove.
10017         (cselib_process_insn): Don't set/clear it.
10018         (new_elt_loc_list): Don't record it.
10019         (cselib_init): Don't initialize it.
10020         * cselib.c (struct elt_loc_list): Remove in_libcall field.
10021         * loop-invariant.c (find_invariant_insn): Don't look for libcall
10022         notes.
10023         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
10024         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
10025         (init_deps): Don't initialize it.
10026         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
10027         * combine.c (delete_noop_moves): Don't update libcall notes.
10028         (can_combine_p): Remove now pointless #if 0 block.
10029         (try_combine): Remove another obsolete #if 0 block.
10030         (distribute_notes): Don't distribute libcall notes.
10031         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
10032         * dce.c (libcall_dead_p): Remove.
10033         (delete_unmarked_insns): Don't handle libcall blocks.
10034         (preserve_libcall_for_dce): Remove.
10035         (prescan_insns_for_dce): Don't special-case libcall block insns.
10036         * reload1 (reload): Don't handle libcall notes.
10037         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
10038         documentation.
10039
10040 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
10041
10042         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
10043         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10044         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10045
10046 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
10047
10048         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
10049         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
10050         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
10051
10052 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10053
10054         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
10055
10056 2008-06-16  Ira Rosen  <irar@il.ibm.com>
10057
10058         PR tree-optimization/36493
10059         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
10060         the arguments list. Use VECTYPE to create vector pointer.
10061         (vectorizable_store): Fail if accesses through a pointer to vectype
10062         do not alias the original memory reference operands.
10063         Call vect_create_data_ref_ptr without the removed argument.
10064         (vectorizable_load): Likewise.
10065         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
10066         removed argument.
10067
10068 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
10069
10070         PR target/36336
10071         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
10072         reg_equiv_constant.
10073
10074 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10075
10076         * config/mips/loongson2ef.md: New file.
10077         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
10078         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
10079         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
10080         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
10081         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
10082         and loongson_2f.
10083         (loongson2ef.md): New include.
10084         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
10085         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
10086         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
10087         (loongson_gt_<mode>, loongson_extract_halfword)
10088         (loongson_insert_halfword_0, loongson_insert_halfword_2)
10089         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
10090         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
10091         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
10092         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
10093         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
10094         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
10095         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
10096         (vec_interleave_low<mode>): Define type attribute.
10097         * config/mips/mips.c (mips_ls2): New static variable.
10098         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
10099         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
10100         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
10101         Implement target scheduling hooks.
10102         (mips_multipass_dfa_lookahead): Update to handle tuning for
10103         Loongson 2E/2F.
10104         (mips_sched_init): Initialize data for Loongson scheduling.
10105         (mips_ls2_variable_issue): New static function.
10106         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
10107         Add sanity check.
10108         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
10109         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
10110         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
10111         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
10112         Handle ST Loongson 2E/2F cores.
10113         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
10114
10115 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10116
10117         * omp-low.c (extract_omp_for_data): Fix comment typo.
10118         * c.opt: Fix typo.
10119
10120 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10121
10122         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
10123         FIXME note about gcc/config.guess.
10124         * doc/options.texi (Option file format): Remove non-ASCII bytes.
10125         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
10126         * doc/cppopts.texi: Likewise.
10127         * doc/extend.texi: Likewise.
10128         * doc/gcc.texi: Likewise.
10129         * doc/gccint.texi: Likewise.
10130         * doc/gcov.texi: Likewise.
10131         * doc/gty.texi: Likewise.
10132         * doc/hostconfig.texi: Likewise.
10133         * doc/install.texi: Likewise.
10134         * doc/invoke.texi: Likewise.
10135         * doc/loop.texi: Likewise.
10136         * doc/makefile.texi: Likewise.
10137         * doc/md.texi: Likewise.
10138         * doc/passes.texi: Likewise.
10139         * doc/tm.texi: Likewise.
10140         * doc/tree-ssa.texi: Likewise.
10141         * doc/trouble.texi: Likewise.
10142
10143 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
10144             Nathan Sidwell  <nathan@codesourcery.com>
10145             Maxim Kuvyrkov  <maxim@codesourcery.com>
10146             Richard Sandiford  <rdsandiford@googlemail.com>
10147
10148         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
10149         * config/mips/mips-protos.h (mips_expand_vector_init): New.
10150         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
10151         builtins.
10152         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
10153         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
10154         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
10155         V8QImode cases.
10156         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
10157         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
10158         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
10159         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
10160         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
10161         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
10162         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
10163         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
10164         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
10165         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
10166         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
10167         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
10168         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
10169         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
10170         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
10171         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
10172         (mips_builtins): Add Loongson builtins.
10173         (mips_loongson_2ef_bdesc): New.
10174         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
10175         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
10176         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
10177         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
10178         New.
10179         (mips_expand_vector_init): New.
10180         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
10181         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
10182         if appropriate.
10183         * config/mips/mips.md: Add unspec numbers for Loongson
10184         builtins.  Include loongson.md.
10185         (MOVE64): Include Loongson vector modes.
10186         (SPLITF): Include Loongson vector modes.
10187         (HALFMODE): Handle Loongson vector modes.
10188         * config/mips/loongson.md: New.
10189         * config/mips/loongson.h: New.
10190         * config.gcc: Add loongson.h header for mips*-*-* targets.
10191         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
10192
10193 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
10194
10195         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
10196         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
10197         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
10198         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
10199         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
10200         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
10201         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
10202         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
10203         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
10204         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
10205         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
10206         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
10207         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
10208         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
10209         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
10210         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
10211         Remove use_fixproto=yes.
10212         (ia64*-*-hpux*): Remove comment about using fixproto.
10213         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
10214
10215 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10216
10217         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
10218         library rebuilds.
10219         * configure: Regenerate.
10220
10221 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
10222
10223         PR middle-end/36520
10224         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
10225         before evaluating it.
10226
10227 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
10228
10229         PR c/36507
10230         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
10231         nested inline functions.
10232         (start_decl, start_function): Don't invert DECL_EXTERNAL
10233         for nested inline functions.
10234
10235 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10236
10237         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
10238         splits that must be made for correctness.
10239
10240 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10241
10242         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
10243         (AVAIL_NON_MIPS16): Likewise.
10244         (mips_builtin_description): Replace target_flags with a predicate.
10245         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
10246         (dspr2_32): New availability predicates.
10247         (MIPS_BUILTIN): New macro.
10248         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
10249         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
10250         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
10251         Replace the TARGET_FLAGS parameters with AVAIL parameters.
10252         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
10253         (mips_dsp_32only_bdesc): Merge into...
10254         (mips_builtins): ...this new array.
10255         (mips_bdesc_map, mips_bdesc_arrays): Delete.
10256         (mips_init_builtins): Update after above changes.
10257         (mips_expand_builtin_1): Merge into...
10258         (mips_expand_builtin): ...here and update after above changes.
10259
10260 2008-06-12  Paul Brook  <paul@codesourcery.com>
10261
10262         * longlong.h (__arm__): Define count_leading_zeros.
10263         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
10264         (clzsi2, clzdi2): New functions.
10265         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
10266         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
10267         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
10268         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
10269         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
10270         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
10271         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
10272         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
10273         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
10274         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
10275
10276 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
10277
10278         * config/m68k/m68k.c (m68k_tune_flags): New.
10279         (override_options): Compute m68k_tune_flags.
10280         (MULL_COST, MULW_COST): Update for various variants of CFV2.
10281         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
10282
10283 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
10284
10285         PR middle-end/36506
10286         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
10287
10288 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
10289
10290         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
10291         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
10292
10293 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
10294
10295         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
10296         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
10297
10298 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
10299
10300         PR middle-end/36506
10301         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
10302         reductions.
10303
10304 2008-06-12  Richard Guenther  <rguenther@suse.de>
10305
10306         PR tree-optimization/36345
10307         * tree-flow.h (struct ptr_info_def): Align escape_mask,
10308         add memory_tag_needed flag.
10309         (may_alias_p): Declare.
10310         * tree-ssa-alias.c (may_alias_p): Export.
10311         (set_initial_properties): Use memory_tag_needed flag.
10312         (update_reference_counts): Likewise.
10313         (reset_alias_info): Reset memory_tag_needed flag.
10314         (create_name_tags): Check memory_tag_needed flag.
10315         (dump_points_to_info_for): Dump it.
10316         * tree-ssa-structalias.c (struct variable_info): Remove
10317         directly_dereferenced flag.
10318         (new_var_info): Do not initialize it.
10319         (process_constraint_1): Do not set it.
10320         (update_alias_info): Set is_dereferenced flag.
10321         (set_uids_in_ptset): Use may_alias_p.
10322         (set_used_smts): Check memory_tag_needed flag.
10323         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
10324         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
10325         memory_tag_needed flag.
10326         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
10327         from broken design.
10328
10329 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
10330
10331         * config/i386/i386.c (ix86_compute_frame_layout): Disable
10332         red zone for w64 abi.
10333         (ix86_expand_prologue): Likewise.
10334         (ix86_force_to_memory): Likewise.
10335         (ix86_free_from_memory): Likewise.
10336
10337 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
10338
10339         PR target/36425
10340         * config/rs6000/rs6000.c (rs6000_override_options): Set
10341         rs6000_isel conditionally to the absence of comand line override.
10342         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
10343         Remove duplicate rs6000_isel setting.
10344         * config/rs6000/eabispe.h: Ditto.
10345
10346 2008-06-11  Richard Guenther  <rguenther@suse.de>
10347
10348         * alias.c (get_alias_set): Use the element alias-set for arrays.
10349         (record_component_aliases): For arrays and vectors do nothing.
10350         * c-common.c (strict_aliasing_warning): Handle the cases
10351         of alias set zero explicitly.
10352         * Makefile.in (dfp.o-warn): Add -Wno-error.
10353
10354 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
10355
10356         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
10357         tune_32 tune_64.
10358         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
10359         tune_32 tune_64 to supported_defaults.  Allow values not
10360         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
10361         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
10362         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
10363         with_cpu_64 to generic for 64-bit-supporting configurations, not
10364         with_cpu.  Remove FIXMEs.
10365         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
10366         --with-arch-64, --with-tune-32, --with-tune-64): Document.
10367         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
10368         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
10369         arch_32 and arch_64.
10370
10371 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
10372             Olivier Hainque  <hainque@adacore.com>
10373
10374         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
10375         Use DECL_SIZE_UNIT to retrieve the size of the field.
10376
10377 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
10378
10379         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
10380         with function calls after declarations.  Lay out
10381         neon_float_type_node before further use.
10382
10383 2008-06-11  Richard Guenther  <rguenther@suse.de>
10384
10385         * tree-flow.h (may_point_to_global_var): Declare.
10386         * tree-ssa-alias.c (may_point_to_global_var): New function.
10387         * tree-ssa-sink.c (is_hidden_global_store): Use it.
10388
10389 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
10390
10391         * configure.ac: Teach that fido supports .debug_line.
10392         * configure: Regenerate.
10393
10394 2008-06-10  Tom Tromey  <tromey@redhat.com>
10395
10396         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
10397         debug hook.
10398
10399 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
10400
10401         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
10402         (encode_decimal64, decode_decimal64, encode_decimal128,
10403         decode_decimal128): Reverse order of 32-bit parts of value if host
10404         and target endianness differ.
10405
10406 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
10407
10408         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
10409         Avoid division by 0.
10410         (tree_mod_pow2_value_transform): Likewise.
10411         (tree_ic_transform): Likewise.
10412         (tree_stringops_transform): Likewise.
10413         (tree_mod_subtract_transform): Likewise.
10414         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
10415         (copy_edges_for_bb): Likewise.
10416         (initialize_cfun): Likewise.
10417
10418 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
10419
10420         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
10421         nonmemory_operand. Add "N" operand constraint.
10422         (*btsi): Ditto.
10423         (*jcc_btdi_mask_rex64): New instruction and split pattern.
10424         (*jcc_btsi_mask): Ditto.
10425         (*jcc_btsi_mask_1): Ditto.
10426
10427 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
10428
10429         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
10430         TYPE_CANONICAL for copied element type.
10431
10432 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
10433
10434         PR target/36473
10435         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
10436         Add m_CORE2 and m_GENERIC.
10437         * config/i386/predicates.md (bt_comparison_operator): New predicate.
10438         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
10439         (*btsi): Ditto.
10440         (*jcc_btdi_rex64): New instruction and split pattern.
10441         (*jcc_btsi): Ditto.
10442         (*jcc_btsi_1): Ditto.
10443         (*btsq): Fix Intel asm dialect operand order.
10444         (*btrq): Ditto.
10445         (*btcq): Ditto.
10446
10447 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
10448
10449         PR middle-end/36447
10450         * simplify-rtx.c (simplify_subreg): Add check for shift count
10451         greater than size.
10452
10453 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
10454
10455         * doc/md.texi: Synchronize with later constraints.md change.
10456         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
10457         with a C implementation.
10458         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
10459         MFLO handling.
10460         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
10461         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
10462         when moving to and from MD_REGNUM.
10463         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
10464         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
10465         Handle byte and halfword moves.
10466         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
10467         separately.
10468         * config/mips/constraints.md (h): Turn into NO_REGS.
10469         (l, x): Update documentation.
10470         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
10471         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
10472         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
10473         (HILO): New mode iterator.
10474         (MOVE128): Add TI.
10475         (any_div): New code iterator.
10476         (u): Extend code attribute to div and udiv.
10477         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
10478         d_operand in the splitters.  Remove redundant CONST_INT checks.
10479         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
10480         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
10481         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
10482         accordingly, using normal moves instead of unspecs to move LO into
10483         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
10484         (<u>mulsidi3): Handle expansion in C code.
10485         (<u>mulsidi3_32bit_internal): Rename to...
10486         (<u>mulsidi3_32bit): ...this.
10487         (<u>mulsidi3_32bit_r4000): Fix insn separator.
10488         (*<u>mulsidi3_64bit): Rename to...
10489         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
10490         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
10491         to set LO and HI to the multiplication result.  Use a normal move
10492         for MFLO and an unspec for MFHI.
10493         (*<u>mulsidi3_64bit_parts): Replace with...
10494         (<u>mulsidi3_64bit_hilo): ...this new instruction.
10495         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
10496         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
10497         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
10498         instead of HI.  Split the instruction into a separate multiplication
10499         and MFHI if !TARGET_FIX_R4000.
10500         (<su>muldi3_highpart): Likewise.
10501         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
10502         and the "=h" clobber.
10503         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
10504         (<u>mulditi3): New expander.
10505         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
10506         (madsi): Remove "=h" clobber.
10507         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
10508         Force the modulus result to be a GPR and split the instruction into
10509         a division followed by an MFHI after reload.
10510         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
10511         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
10512         the MIPS16 HIGH define_split.
10513         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
10514         of acc<->gpr moves to "multi".
10515         (*movdi_64bit): Replace the single "x" alternative with
10516         alternatives for moving into and out of "a".
10517         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
10518         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
10519         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
10520         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
10521         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
10522         (movti): New expander.
10523         (*movti, *movti_mips16): New insns.
10524         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
10525         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
10526         (mthi<GPR:mode>_<HILO:mode>): Likewise.
10527         * config/mips/predicates.md (fpr_operand): Delete.
10528         (d_operand): New predicate.
10529
10530 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
10531
10532         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
10533         failure on some Bourne shells.
10534         (x86_64-*-*): Ditto.
10535
10536 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
10537
10538         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
10539
10540 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
10541
10542         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
10543         (sparc-sun-solaris2*): Likewise.
10544
10545 2008-06-09  Arnaud Charlet  <charlet@adacore.com
10546
10547         * doc/install.texi: Update requirements to build the Ada compiler.
10548
10549 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
10550
10551         * df-scan.c (struct df_scan_problem_data): Remove the
10552         mw_link_pool alloc pool.
10553         (df_scan_free_internal): Don't free it.
10554         (df_scan_alloc): Don't allocate it.
10555         * df.h (struct df_link): Update comment.
10556
10557 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
10558
10559         * except.h: Correct checks for when SJLJ exceptions must be used.
10560
10561 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10562
10563         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
10564         default.
10565
10566 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
10567
10568         PR tree-optimization/36218
10569         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
10570         configure for the build system.
10571         (BUILD_LDFLAGS): Define.
10572         * configure: Regenerate.
10573         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
10574
10575 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
10576
10577         PR target/36424
10578         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
10579         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
10580         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
10581
10582 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
10583
10584         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
10585
10586 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
10587
10588         * config.gcc (Obsolete configurations): Remove list of
10589         configurations.
10590         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
10591         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
10592         targets matched by those patterns.
10593         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
10594         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
10595         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
10596         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
10597         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
10598         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
10599         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
10600         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
10601         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
10602         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
10603         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
10604         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
10605         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
10606         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
10607         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
10608         Make code for Solaris 7 and greater unconditional for Solaris.
10609         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
10610         Remove --with-* handling.
10611         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
10612         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
10613         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
10614         LINK_OS_WINDISS_SPEC): Remove.
10615         * config/rs6000/sysv4.opt (mwindiss): Remove.
10616         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
10617         * configure: Regenerate.
10618         * doc/cpp.texi: Don't mention BeOS.
10619         * doc/extend.texi (interrupt): Don't mention MS1.
10620         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
10621         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
10622         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
10623         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
10624         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
10625         Remove.
10626         * doc/invoke.texi (MT Options): Remove.
10627         (-mwindiss): Remove.
10628         (CRIS Options): Remove cris-axis-aout references.
10629         (HPPA Options): Don't mention hppa1.1-*-pro.
10630         * doc/md.texi: (MorphoTech family): Remove.
10631         * libgcc2.c: Don't handle UWIN.
10632         * config/alpha/t-unicosmk: Remove.
10633         * config/alpha/unicosmk.h: Remove.
10634         * config/arm/kaos-arm.h: Remove.
10635         * config/arm/kaos-strongarm.h: Remove.
10636         * config/arm/strongarm-coff.h: Remove.
10637         * config/arm/strongarm-elf.h: Remove.
10638         * config/arm/strongarm-pe.h: Remove.
10639         * config/arm/t-strongarm-pe: Remove.
10640         * config/arm/t-xscale-coff: Remove.
10641         * config/arm/t-xscale-elf: Remove.
10642         * config/arm/xscale-coff.h: Remove.
10643         * config/arm/xscale-elf.h: Remove.
10644         * config/chorus.h: Remove.
10645         * config/cris/aout.h: Remove.
10646         * config/cris/aout.opt: Remove.
10647         * config/cris/t-aout: Remove.
10648         * config/i386/beos-elf.h: Remove.
10649         * config/i386/kaos-i386.h: Remove.
10650         * config/i386/ptx4-i.h: Remove.
10651         * config/i386/sco5.h: Remove.
10652         * config/i386/sco5.opt: Remove.
10653         * config/i386/sysv4-cpp.h: Remove.
10654         * config/i386/sysv5.h: Remove.
10655         * config/i386/t-beos: Remove.
10656         * config/i386/t-sco5: Remove.
10657         * config/i386/t-uwin: Remove.
10658         * config/i386/uwin.asm: Remove.
10659         * config/i386/uwin.h: Remove.
10660         * config/kaos.h: Remove.
10661         * config/mips/windiss.h: Remove.
10662         * config/mt: Remove directory.
10663         * config/pa/pa-osf.h: Remove.
10664         * config/pa/pa-pro-end.h: Remove.
10665         * config/pa/t-pro: Remove.
10666         * config/ptx4.h: Remove.
10667         * config/rs6000/beos.h: Remove.
10668         * config/rs6000/kaos-ppc.h: Remove.
10669         * config/rs6000/t-beos: Remove.
10670         * config/rs6000/windiss.h: Remove.
10671         * config/sh/kaos-sh.h: Remove.
10672         * config/sol2-6.h: Remove.
10673         * config/sparc/sol26-sld.h: Remove.
10674         * config/sparc/sysv4-only.h: Remove.
10675         * config/vax/bsd.h: Remove.
10676         * config/vax/t-memfuncs: Remove.
10677         * config/vax/ultrix.h: Remove.
10678         * config/vax/vaxv.h: Remove.
10679         * config/windiss.h: Remove.
10680
10681 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
10682
10683         PR rtl-optimization/36438
10684         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
10685         for vector shifts with constant scalar shift operands.
10686
10687 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
10688
10689         * doc/invoke.texi: Document -march=xlr.
10690         * config/mips/xlr.md: New file.
10691         * config/mips/mips.md: Include it.
10692         (cpu): Add "xlr".
10693         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
10694         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
10695         (mips_rtx_cost_data): Likewise.
10696
10697 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
10698
10699         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
10700         PRE_INC and PRE_DEC cases.
10701
10702 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
10703
10704         PR rtl-optimization/36419
10705         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
10706         the emitting jump insn.
10707
10708         PR target/36362
10709         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
10710         is not bool, boolify the whole *expr_p and convert to the desired type.
10711
10712 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
10713
10714         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
10715         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
10716         Add omp_private_outer_ref hook, add another argument to
10717         omp_clause_default_ctor hook.
10718         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
10719         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
10720         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
10721         hook_tree_tree_tree_tree_null.
10722         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
10723         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
10724         * hooks.c (hook_tree_tree_tree_tree_null): New function.
10725         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
10726         * tree.def (OMP_TASK): New tree code.
10727         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
10728         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
10729         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
10730         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
10731         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
10732         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
10733         OMP_CLAUSE_COLLAPSE_EXPR): Define.
10734         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
10735         (OMP_DIRECTIVE_P): Add OMP_TASK.
10736         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
10737         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
10738         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
10739         and OMP_CLAUSE_UNTIED entries.
10740         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
10741         num_ops to 2.
10742         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10743         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
10744         * tree-pretty-print.c (dump_omp_clause): Handle
10745         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
10746         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
10747         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
10748         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
10749         warning about unsigned iterators.  Change decl/init/cond/incr
10750         arguments to TREE_VECs, check arguments for all collapsed loops.
10751         (c_finish_omp_taskwait): New function.
10752         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
10753         ws_clauses.
10754         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
10755         default_function_array_conversion on init.  Add par_clauses argument.
10756         If decl is present in parallel's lastprivate clause, change it to
10757         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
10758         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
10759         collapse count in clauses.
10760         (c_parser_omp_for, c_parser_omp_parallel): Adjust
10761         c_parser_omp_for_loop callers.
10762         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
10763         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
10764         (c_parser_omp_clause_name): Handle collapse and untied clauses.
10765         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
10766         functions.
10767         (c_parser_omp_clause_schedule): Handle schedule(auto).
10768         Include correct location in the error message.
10769         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
10770         and PRAGMA_OMP_CLAUSE_UNTIED.
10771         (OMP_TASK_CLAUSE_MASK): Define.
10772         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
10773         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
10774         * tree-nested.c (convert_nonlocal_omp_clauses,
10775         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
10776         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
10777         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10778         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
10779         OMP_CLAUSE_DECL.
10780         (conver_nonlocal_reference, convert_local_reference,
10781         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
10782         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
10783         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
10784         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
10785         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
10786         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
10787         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
10788         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
10789         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
10790         OMP_CLAUSE_UNTIED.
10791         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
10792         * c-common.h (c_finish_omp_taskwait): New prototype.
10793         * gimple-low.c (lower_stmt): Handle OMP_TASK.
10794         * tree-parloops.c (create_parallel_loop): Create 1 entry
10795         vectors for OMP_FOR_{INIT,COND,INCR}.
10796         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
10797         (make_edges): Handle OMP_TASK.
10798         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
10799         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10800         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
10801         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
10802         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
10803         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
10804         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
10805         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
10806         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
10807         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
10808         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
10809         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
10810         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
10811         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
10812         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
10813         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
10814         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
10815         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
10816         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
10817         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
10818         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
10819         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
10820         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
10821         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
10822         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
10823         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
10824         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
10825         original iterator is present in lastprivate clause or if
10826         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
10827         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10828         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
10829         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
10830         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
10831         if it is set, lookup var in outer contexts too.  Handle
10832         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
10833         to be implicitly determined firstprivate for task regions.
10834         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
10835         if it is set, lookup var in outer contexts too.  Set
10836         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
10837         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
10838         OMP_CLAUSE_UNTIED.  Take region_type as last argument
10839         instead of in_parallel and in_combined_parallel.
10840         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
10841         Adjust callers.
10842         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
10843         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
10844         (new_omp_context): Set default_kind to
10845         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
10846         (omp_region_type): New enum.
10847         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
10848         fields, add region_type.
10849         (new_omp_context): Take region_type as argument instead of is_parallel
10850         and is_combined_parallel.
10851         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
10852         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
10853         ctx->is_combined_parallel checks.
10854         (gimplify_omp_task): New function.
10855         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
10856         OMP_CLAUSE_UNTIED.
10857         * omp-low.c (extract_omp_for_data): Use schedule(static)
10858         for schedule(auto).  Handle pointer and unsigned iterators.
10859         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
10860         Add loops argument.  Extract data for collapsed OMP_FOR loops.
10861         (expand_parallel_call): Assert sched_kind isn't auto,
10862         map runtime schedule to index 3.
10863         (struct omp_for_data_loop): New type.
10864         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
10865         Add loop, loops, collapse and iter_type fields.
10866         (workshare_safe_to_combine_p): Disallow combined for if
10867         iter_type is unsigned long long.  Don't combine collapse > 1 loops
10868         unless all bounds and steps are constant.  Adjust extract_omp_for_data
10869         caller.
10870         (expand_omp_for_generic): Handle pointer, unsigned and long long
10871         iterators.  Handle collapsed OMP_FOR loops.  Adjust
10872         for struct omp_for_data changes.  If libgomp function doesn't return
10873         boolean_type_node, add comparison of the return value with 0.
10874         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
10875         pointer, unsigned and long long iterators.  Adjust for struct
10876         omp_for_data changes.
10877         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
10878         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
10879         unsigned long long.  Allocate loops array, pass it to
10880         extract_omp_for_data.  For collapse > 1 loops use always
10881         expand_omp_for_generic.
10882         (omp_context): Add sfield_map and srecord_type fields.
10883         (is_task_ctx, lookup_sfield): New functions.
10884         (use_pointer_for_field): Use is_task_ctx helper.  Change first
10885         argument's type from const_tree to tree.  Clarify comment.
10886         In OMP_TASK disallow copy-in/out sharing.
10887         (build_sender_ref): Call lookup_sfield instead of lookup_field.
10888         (install_var_field): Add mask argument.  Populate both record_type
10889         and srecord_type if needed.
10890         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
10891         in srecord_type.
10892         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
10893         and DECL_FIELD_OFFSET.
10894         (scan_sharing_clauses): Adjust install_var_field callers.  For
10895         firstprivate clauses on explicit tasks allocate the var by value in
10896         record_type unconditionally, rather than by reference.
10897         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
10898         Use is_taskreg_ctx instead of is_parallel_ctx.
10899         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10900         (create_omp_child_function_name): Add task_copy argument, use
10901         *_omp_cpyfn* names if it is true.
10902         (create_omp_child_function): Add task_copy argument, if true create
10903         *_omp_cpyfn* helper function.
10904         (scan_omp_parallel): Adjust create_omp_child_function callers.
10905         Rename parallel_nesting_level to taskreg_nesting_level.
10906         (scan_omp_task): New function.
10907         (lower_rec_input_clauses): Don't run constructors for firstprivate
10908         explicit task vars which are initialized by *_omp_cpyfn*.
10909         Pass outer var ref to omp_clause_default_ctor hook if
10910         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
10911         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
10912         OMP_CLAUSE_REDUCTION_INIT.
10913         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
10914         avoid duplicate setting of fields.  Handle
10915         OMP_CLAUSE_PRIVATE_OUTER_REF.
10916         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
10917         copy-out if TREE_READONLY, only copy-in.
10918         (expand_task_copyfn): New function.
10919         (expand_task_call): New function.
10920         (struct omp_taskcopy_context): New type.
10921         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
10922         New functions.
10923         (lower_omp_parallel): Rename to...
10924         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10925         Call create_task_copyfn if srecord_type is needed.  Adjust
10926         sender_decl type.
10927         (task_shared_vars): New variable.
10928         (check_omp_nesting_restrictions): Warn if work-sharing,
10929         barrier, master or ordered region is closely nested inside OMP_TASK.
10930         Add warnings for barrier if closely nested inside of work-sharing,
10931         ordered, or master region.
10932         (scan_omp_1): Call check_omp_nesting_restrictions even for
10933         GOMP_barrier calls.  Rename parallel_nesting_level to
10934         taskreg_nesting_level.  Handle OMP_TASK.
10935         (lower_lastprivate_clauses): Even if some lastprivate is found on a
10936         work-sharing construct, continue looking for them on parent parallel
10937         construct.
10938         (lower_omp_for_lastprivate): Add lastprivate clauses
10939         to the beginning of dlist rather than end.  Adjust for struct
10940         omp_for_data changes.
10941         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
10942         not after it.  Handle collapsed OMP_FOR loops, adjust for
10943         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
10944         (get_ws_args_for): Adjust extract_omp_for_data caller.
10945         (scan_omp_for): Handle collapsed OMP_FOR
10946         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10947         (lower_omp_single_simple): If libgomp function doesn't return
10948         boolean_type_node, add comparison of the return value with 0.
10949         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
10950         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
10951         (parallel_nesting_level): Rename to...
10952         (taskreg_nesting_level): ... this.
10953         (is_taskreg_ctx): New function.
10954         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
10955         of is_parallel_ctx.
10956         (execute_lower_omp): Rename parallel_nesting_level to
10957         taskreg_nesting_level.
10958         (expand_omp_parallel): Rename to...
10959         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10960         Call omp_task_call for OMP_TASK regions.
10961         (expand_omp): Adjust caller, handle OMP_TASK.
10962         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
10963
10964         * bitmap.c (bitmap_default_obstack_depth): New variable.
10965         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
10966         if argument is NULL and bitmap_default_obstack is already initialized.
10967         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
10968         at the end.
10969         * matrix-reorg.c (matrix_reorg): Likewise.
10970
10971 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
10972
10973         * config/i386/i386.md (*indirect_jump): Macroize using P
10974         mode iterator.  Remove !TARGET_64BIT from insn constraints.
10975         (*tablejump_1): Ditto.
10976         (*indirect_jump_rex64): Remove insn pattern.
10977         (*tablejump_1_rex64): Ditto.
10978         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
10979         and eh_return_si insn patterns.
10980
10981 2008-06-06  Richard Guenther  <rguenther@suse.de>
10982
10983         * tree-ssa-structalias.c (merge_smts_into): Remove.
10984         (find_what_p_points_to): Do not bother to compute the
10985         points-to set for pt_anything pointers.
10986         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
10987         for pt_anything pointers is ok.
10988
10989 2008-06-06  Jan Hubicka  <jh@suse.cz>
10990
10991         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
10992
10993 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10994
10995         * cgraph.c: Fix typos in comments.
10996         (cgraph_availability_names): Fix string typo.
10997         * fold-const.c: Fix typos in comments.
10998         (fold_binary): Fix typo in warning.
10999         * genautomata.c: Fix typos in comments.
11000         (check_presence_pattern_sets): Fix typo in local variable.
11001         (output_description): Fix typo in output.
11002         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
11003         * hwint.h: Likewise.
11004         * matrix-reorg.c (check_allocation_function): Likewise.
11005         * omega.c (smooth_weird_equations): Likewise.
11006         * auto-inc-dec.c: Fix typos in comments.
11007         * bb-reorder.c: Likewise.
11008         * builtins.c: Likewise.
11009         * c-common.c: Likewise.
11010         * c-cppbuiltin.c: Likewise.
11011         * c-parser.c: Likewise.
11012         * c-pretty-print.c: Likewise.
11013         * cfgcleanup.c: Likewise.
11014         * cfgexpand.c: Likewise.
11015         * cfghooks.c: Likewise.
11016         * cfglayout.c: Likewise.
11017         * cfgloopmanip.c: Likewise.
11018         * cgraphunit.c: Likewise.
11019         * coverage.c: Likewise.
11020         * dbxout.c: Likewise.
11021         * df-byte-scan.c: Likewise.
11022         * df-core.c: Likewise.
11023         * df-problems.c: Likewise.
11024         * df-scan.c: Likewise.
11025         * dfp.c: Likewise.
11026         * dominance.c: Likewise.
11027         * domwalk.c: Likewise.
11028         * dse.c: Likewise.
11029         * dwarf2out.c: Likewise.
11030         * emit-rtl.c: Likewise.
11031         * et-forest.c: Likewise.
11032         * function.c: Likewise.
11033         * function.h: Likewise.
11034         * gcc.c: Likewise.
11035         * gcov-io.c: Likewise.
11036         * gcov.c: Likewise.
11037         * gcse.c: Likewise.
11038         * genattrtab.c: Likewise.
11039         * ggc-page.c: Likewise.
11040         * gimplify.c: Likewise.
11041         * gthr-lynx.h: Likewise.
11042         * haifa-sched.c: Likewise.
11043         * ipa-cp.c: Likewise.
11044         * ipa-inline.c: Likewise.
11045         * ipa-prop.h: Likewise.
11046         * ipa-pure-const.c: Likewise.
11047         * ipa-struct-reorg.c: Likewise.
11048         * ipa-struct-reorg.h: Likewise.
11049         * ipa-type-escape.c: Likewise.
11050         * ipa.c: Likewise.
11051         * loop-doloop.c: Likewise.
11052         * mips-tfile.c: Likewise.
11053         * mkmap-flat.awk: Likewise.
11054         * mkmap-symver.awk: Likewise.
11055         * modulo-sched.c: Likewise.
11056         * omp-low.c: Likewise.
11057         * optabs.c: Likewise.
11058         * optabs.h: Likewise.
11059         * opts.c: Likewise.
11060         * passes.c: Likewise.
11061         * postreload-gcse.c: Likewise.
11062         * postreload.c: Likewise.
11063         * predict.c: Likewise.
11064         * pretty-print.h: Likewise.
11065         * profile.c: Likewise.
11066         * protoize.c: Likewise.
11067         * ra-conflict.c: Likewise.
11068         * real.c: Likewise.
11069         * recog.c: Likewise.
11070         * regclass.c: Likewise.
11071         * regs.h: Likewise.
11072         * reload.c: Likewise.
11073         * rtl-error.c: Likewise.
11074         * rtlanal.c: Likewise.
11075         * scan.h: Likewise.
11076         * sched-rgn.c: Likewise.
11077         * see.c: Likewise.
11078         * stmt.c: Likewise.
11079         * target.h: Likewise.
11080         * tree-dfa.c: Likewise.
11081         * tree-eh.c: Likewise.
11082         * tree-flow-inline.h: Likewise.
11083         * tree-inline.c: Likewise.
11084         * tree-into-ssa.c: Likewise.
11085         * tree-loop-distribution.c: Likewise.
11086         * tree-nested.c: Likewise.
11087         * tree-parloops.c: Likewise.
11088         * tree-pass.h: Likewise.
11089         * tree-pretty-print.c: Likewise.
11090         * tree-profile.c: Likewise.
11091         * tree-scalar-evolution.c: Likewise.
11092         * tree-sra.c: Likewise.
11093         * tree-ssa-alias-warnings.c: Likewise.
11094         * tree-ssa-ccp.c: Likewise.
11095         * tree-ssa-coalesce.c: Likewise.
11096         * tree-ssa-dom.c: Likewise.
11097         * tree-ssa-dse.c: Likewise.
11098         * tree-ssa-forwprop.c: Likewise.
11099         * tree-ssa-live.c: Likewise.
11100         * tree-ssa-live.h: Likewise.
11101         * tree-ssa-loop-im.c: Likewise.
11102         * tree-ssa-loop-ivopts.c: Likewise.
11103         * tree-ssa-loop-niter.c: Likewise.
11104         * tree-ssa-loop-prefetch.c: Likewise.
11105         * tree-ssa-phiopt.c: Likewise.
11106         * tree-ssa-phiprop.c: Likewise.
11107         * tree-ssa-sccvn.c: Likewise.
11108         * tree-ssa-ter.c: Likewise.
11109         * tree-ssa-threadupdate.c: Likewise.
11110         * tree-ssa.c: Likewise.
11111         * tree-vect-analyze.c: Likewise.
11112         * tree-vect-transform.c: Likewise.
11113         * tree-vectorizer.c: Likewise.
11114         * tree-vn.c: Likewise.
11115         * tree-vrp.c: Likewise.
11116         * tree.c: Likewise.
11117         * tree.def: Likewise.
11118         * tree.h: Likewise.
11119         * unwind-dw2-fde.c: Likewise.
11120         * unwind.inc: Likewise.
11121         * value-prof.c: Likewise.
11122         * vmsdbgout.c: Likewise.
11123
11124 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
11125
11126         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
11127         always place FP constants in the TOC for TARGET_POWERPC64.
11128         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
11129
11130 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
11131
11132         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
11133         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
11134         enable for TARGET_E500_DOUBLE.
11135         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
11136         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
11137         floating-point modes like integer modes for E500 double.
11138         (rs6000_legitimate_offset_address_p): Likewise.
11139         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
11140         addressing for DDmode for E500 double.
11141         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
11142         modes as using 64-bits of registers for E500 double.
11143         (spe_build_register_parallel): Do not handle DDmode or TDmode.
11144         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
11145         specially for E500 double.
11146         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
11147         TDmode for E500 double.
11148         (rs6000_gimplify_va_arg): Only handle SDmode in registers
11149         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
11150         (rs6000_split_multireg_move): Do not handle TDmode specially for
11151         E500 double.
11152         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
11153         using 64-bit registers for E500 double.
11154         (emit_frame_save): Do not handle DDmode specially for E500 double.
11155         (gen_frame_mem_offset): Likewise.
11156         (rs6000_function_value): Do not call spe_build_register_parallel
11157         for DDmode or TDmode.
11158         (rs6000_libcall_value): Likewise.
11159         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
11160         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
11161         for E500 double.
11162
11163 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
11164
11165         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
11166         in comments.
11167
11168 2008-06-04  Junjie Gu <jgu@tensilica.com>
11169
11170         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
11171         comparison for frame pointers.
11172
11173 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
11174
11175         PR target/27386
11176         * config/avr/avr.h (PUSH_ROUNDING): Remove.
11177
11178 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
11179
11180         PR target/30243
11181         * builtins.c (expand_builtin_signbit): Don't take lowpart when
11182         register is already smaller or equal to required mode.
11183
11184 2008-06-04  Xinliang David Li  <davidxl@google.com>
11185
11186         * tree-call-cdce.c: New file.
11187         (cond_dead_built_in_calls): New static variable.
11188         (input_domain): New struct.
11189         (check_pow): New function.
11190         (check_builtin_call): Ditto.
11191         (check_target_format): Ditto.
11192         (is_call_dce_candidate): Ditto.
11193         (gen_one_condition): Ditto.
11194         (gen_conditions_for_domain): Ditto.
11195         (get_domain): Ditto.
11196         (gen_conditions_for_pow_cst_base): Ditto.
11197         (gen_conditions_for_pow_int_base): Ditto.
11198         (gen_conditions_for_pow): Ditto.
11199         (get_no_error_domain): Ditto.
11200         (gen_shrink_wrap_conditions): Ditto.
11201         (shrink_wrap_one_built_in_call): Ditto.
11202         (shink_wrap_conditional_dead_built_in_calls): Ditto.
11203         (tree_call_cdce): Ditto.
11204         (gate_call_cdce): Ditto.
11205         (pass_call_cdce): New gimple pass.
11206         * passes.c: (init_optimization_passes): New pass.
11207         * tree-pass.h: New pass declaration.
11208         * opts.c (decode_options): New flag setting.
11209         * common.opt: Add -ftree-builtin-call-dce flag.
11210         * Makefile.in: Add new source file.
11211         * tempvar.def: New tv_id.
11212         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
11213
11214 2008-06-04  Richard Guenther  <rguenther@suse.de>
11215
11216         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
11217         (is_call_clobbered): Always check var_ann->call_clobbered.
11218         (mark_call_clobbered): Always set var_ann->call_clobbered.
11219         (clear_call_clobbered): Always clear var_ann->call_clobbered.
11220         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
11221         (reset_alias_info): Clear call clobbering info on MTAGs and
11222         globals as well.
11223         (set_pt_anything): Set pt_global_mem.
11224         (create_tag_raw): Adjust comment.
11225         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
11226
11227 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
11228             Maxim Kuvyrkov  <maxim@codesourcery.com>
11229
11230         * config/m68k/m68k.opt (mxgot): New option.
11231         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
11232         (m68k_output_addr_const_extra): New.
11233         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
11234         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
11235         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
11236         * doc/invoke.texi (M680x0 Options): Document -mxgot.
11237
11238 2008-06-04  Richard Guenther  <rguenther@suse.de>
11239
11240         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
11241         negative or non-representable offsets.
11242
11243 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
11244
11245         * config/i386/i386.c (ix86_gen_leave): New.
11246         (ix86_gen_pop1): Likewise.
11247         (ix86_gen_add3): Likewise.
11248         (ix86_gen_sub3): Likewise.
11249         (ix86_gen_sub3_carry): Likewise.
11250         (ix86_gen_one_cmpl2): Likewise.
11251         (ix86_gen_monitor): Likewise.
11252         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
11253         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
11254         ix86_gen_one_cmpl2 and ix86_gen_monitor.
11255         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
11256         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
11257         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
11258         (ix86_expand_epilogue): Updated.
11259         (print_operand): Handle integer register operand for 'z'.
11260         (ix86_expand_strlensi_unroll_1): Likewise.
11261         (ix86_expand_strlen): Likewise.
11262         (ix86_expand_builtin): Likewise.
11263         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
11264         mov{q}/mov{l} and add{q}/add{l}.
11265
11266 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11267
11268         * config/i386/i386.md (P): New mode iterator.
11269         (SFmode push_operand splitter): Macroize DImode and SImode pushes
11270         using P mode iterator.
11271         (DFmode push_operand splitter): Ditto.
11272         (XFmode push_operand splitter): Ditto.
11273         (DFmode float_extend SFmode push_operand splitter): Ditto.
11274         (XFmode float_extend SFmode push_operand splitter): Do not generate
11275         SImode pushes for 64bit target.  Macroize Dimode and SImode
11276         pushes using P mode iterator.
11277         (XFmode float_extend DFmode push_operand splitter): Ditto.
11278
11279 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11280
11281         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
11282         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
11283         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
11284         return type to int.
11285         (ix86_call_abi_override): Remove check for call_used_regs.
11286
11287 2008-06-03  Richard Guenther  <rguenther@suse.de>
11288
11289         * tree-ssa-structalias.c (find_func_aliases): Add constraints
11290         for the lhs of calls if the return type contains pointers.
11291
11292 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11293
11294         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
11295         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
11296         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
11297         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
11298         of cfun and DEFAULT_ABI to deceide abi mode.
11299         (DEFAULT_ABI): New.
11300         (REG_PARM_STACK_SPACE): Removed.
11301         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
11302         (STACK_BOUNDARY): Use default target to deceide stack boundary.
11303         * config/i386/i386-protos.h (ix86_cfun_abi): New.
11304         (ix86_function_abi): Likewise.
11305         (ix86_function_type_abi): Likewise.
11306         (ix86_call_abi_override): Likewise.
11307         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
11308         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
11309         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
11310         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
11311         specific defines.
11312         (X86_64_REGPARM_MAX): New.
11313         (X86_64_SSE_REGPARM_MAX): New.
11314         (X64_REGPARM_MAX): New.
11315         (X64_SSE_REGPARM_MAX): New.
11316         (X86_32_REGPARM_MAX): New.
11317         (X86_32_SSE_REGPARM_MAX): New.
11318         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
11319         (ix86_function_regparm): Handle user calling abi.
11320         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
11321         by DEFAULT_ABI versus SYSV_ABI check.
11322         (ix86_reg_parm_stack_space): New.
11323         (ix86_function_type_abi): New.
11324         (ix86_call_abi_override): New.
11325         (ix86_function_abi): New.
11326         (ix86_cfun_abi): New.
11327         (init_cumulative_args): Call abi specific initialization.
11328         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
11329         (function_arg_64): Extend SSE_REGPARM_MAX check.
11330         (function_arg (): Remove TARGET_64BIT_MS_ABI.
11331         (ix86_pass_by_reference): Likewise.
11332         (ix86_function_value_regno_p): Likewise.
11333         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
11334         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
11335         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
11336         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
11337         (setup_incoming_varargs_64): Adjust regparm for call abi.
11338         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
11339         (ix86_va_start): Likewise.
11340         (ix86_gimplify_va_arg): Likewise.
11341         (ix86_expand_prologue): Likewise.
11342         (output_pic_addr_const): Likewise.
11343         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
11344         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
11345         (x86_output_mi_thunk): Likewise.
11346         (x86_function_profiler): Likewise.
11347         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
11348         (SYSV_ABI, MS_ABI): New constants.
11349         (DEFAULT_ABI): New.
11350         (init_regs): Add prototype of function in regclass.c file.
11351         (OVERRIDE_ABI_FORMAT): New.
11352         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
11353         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
11354         (OUTGOING_REG_PARM_STACK_SPACE): New.
11355         (ix86_reg_parm_stack_space): New prototype.
11356         (CUMULATIVE_ARGS): Add call_abi member.
11357         (machine_function): Add call_abi member.
11358         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
11359         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
11360
11361 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
11362
11363         PR target/34879
11364         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
11365         (avr_builtin_setjmp_frame_value): New function.
11366         * config/avr/avr.md (nonlocal_goto_receiver): Define.
11367         (nonlocal_goto): Define.
11368
11369 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
11370
11371         * config/mips/mips.c (mips_emit_loadgp): Return early if
11372         there is nothing do to, otherwise emit a blockage if
11373         !TARGET_EXPLICIT_RELOCS || crtl->profile.
11374         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
11375
11376 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11377
11378         * configure.ac: Drop unneeded backslash ending up in config.in.
11379         * acinclude.m4: Likewise.
11380         * config.in: Regenerate.
11381
11382 2008-05-26  Jan Hubicka  <jh@suse.cz>
11383
11384         * predict.c (maybe_hot_frequency_p): Break out of...
11385         (maybe_hot_bb_p): ... here.
11386         (maybe_hot_edge_p): New.
11387         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
11388         * basic-block.h (maybe_hot_edge_p): Declare.
11389
11390 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
11391
11392         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
11393         (*cmpfp_<mode>_cc): Ditto.
11394         (*fp_jcc_8<mode>_387): Ditto.
11395         (*fop_<MODEF:mode>_2_i387): Ditto.
11396         (*fop_<MODEF:mode>_3_i387): Ditto.
11397         (*fop_xf_2_i387): Ditto.
11398         (*fop_xf_3_i387): Ditto.
11399
11400 2008-06-02  Tomas Bily  <tbily@suse.cz>
11401
11402         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
11403
11404 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11405
11406         * config/mips/mips.c (mips_valid_offset_p): New function.
11407         (mips_valid_lo_sum_p): Likewise.
11408         (mips_classify_address): Use them.
11409         (mips_force_address): New function.
11410         (mips_legitimize_address): Use it.
11411         * config/mips/mips.md (MOVE128): New mode iterator.
11412         (movtf): Require TARGET_64BIT.  Remove empty strings.
11413         (*movtf_internal): Rename to...
11414         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
11415         of "R" and use {,fp}{load,store} attributes instead of "multi".
11416         Use a separate define_split.
11417         (*movtf_mips16): New pattern.
11418
11419 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11420
11421         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
11422         * config/mips/mips.c (mips_expand_before_return): New function.
11423         (mips_expand_epilogue): Call it.
11424         * config/mips/mips.md (return): Turn into a define_expand.
11425         (*return): New insn.
11426
11427 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11428
11429         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
11430         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
11431         functions.  Do not emit uses and clobbers of CONCATs; individually
11432         use and clobber their operands.
11433         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
11434         gen_clobber, emit_use and gen_use.
11435         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
11436         (expand_builtin_return): Likewise.
11437         * cfgbuild.c (count_basic_blocks): Likewise.
11438         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
11439         * explow.c (emit_stack_restore): Likewise.
11440         * expmed.c (extract_bit_field_1): Likewise.
11441         * expr.c (convert_move, emit_move_complex_parts): Likewise.
11442         (emit_move_multi_word, store_constructor): Likewise.
11443         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
11444         (thread_prologue_and_epilogue_insns): Likewise.
11445         * lower-subreg.c (resolve_simple_move): Likewise.
11446         * optabs.c (widen_operand, expand_binop): Likewise.
11447         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
11448         * reload.c (find_reloads): Likewise.
11449         * reload1.c (eliminate_regs_in_insn): Likewise.
11450         * stmt.c (expand_nl_goto_receiver): Likewise.
11451         * config/alpha/alpha.md (builtin_longjmp): Likewise.
11452         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
11453         * config/arm/arm.c (arm_load_pic_register): Likewise.
11454         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
11455         * config/arm/arm.md (untyped_return): Likewise.
11456         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
11457         * config/avr/avr.c (expand_prologue): Likewise.
11458         * config/bfin/bfin.c (do_unlink): Likewise.
11459         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
11460         * config/cris/cris.c (cris_expand_prologue): Likewise.
11461         * config/darwin.c (machopic_indirect_data_reference): Likewise.
11462         (machopic_legitimize_pic_address): Likewise.
11463         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
11464         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
11465         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
11466         (ix86_expand_convert_uns_didf_sse): Likewise.
11467         (ix86_expand_vector_init_general): Likewise.
11468         * config/ia64/ia64.md (eh_epilogue): Likewise.
11469         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
11470         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
11471         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
11472         (config/iq2000/iq2000.c): Likewise.
11473         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
11474         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
11475         (builtin_longjmp): Likewise.
11476         * config/mn10300/mn10300.md (call, call_value): Likewise.
11477         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
11478         * config/pdp11/pdp11.md (abshi2): Likewise.
11479         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
11480         * config/s390/s390.c (s390_emit_prologue): Likewise.
11481         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
11482         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
11483         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
11484         * config/sh/sh.c (prepare_move_operands): Likewise.
11485         (output_stack_adjust, sh_expand_epilogue): Likewise.
11486         (sh_set_return_address, sh_expand_t_scc): Likewise.
11487         * config/sparc/sparc.c (load_pic_register): Likewise.
11488         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
11489         * config/spu/spu.c (spu_expand_epilogue): Likewise.
11490         * config/v850/v850.c (expand_epilogue): Likewise.
11491
11492 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
11493
11494         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
11495         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
11496         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
11497         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
11498         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
11499         stack pointer register.
11500         (output_movhi): Remove code for interrupt specific writing to the
11501         stack pointer register.
11502
11503 2008-05-31  Richard Guenther  <rguenther@suse.de>
11504
11505         PR tree-optimization/34244
11506         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
11507         (tree_expr_nonzero_warnv_p): Likewise.
11508         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
11509         ssa_name_nonnegative_p.
11510         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
11511         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
11512         not tree_expr_nonzero_warnv_p.
11513
11514         PR tree-optimization/36262
11515         Revert
11516         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
11517
11518         PR tree-optimization/34244
11519         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
11520         (record_numbers_of_iterations): New function.
11521         (execute_vrp): Cache the numbers of iterations of loops.
11522         * tree-scalar-evolution.c (scev_reset_except_niters):
11523         New function.
11524         (scev_reset): Use scev_reset_except_niters.
11525         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
11526
11527 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
11528
11529         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
11530         __WORKAROUND_RETS when appropriate.
11531
11532 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
11533
11534         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
11535         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
11536         mode iterator.
11537         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
11538         *fop_df_comm_sse insn patterns using MODEF mode iterator.
11539         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
11540         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
11541         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
11542         *fop_df_1_mixed insn patterns using MODEF mode iterator.
11543         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
11544         *fop_df_1_sse insn patterns using MODEF mode iterator.
11545         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
11546         *fop_df_1_i387 insn patterns using MODEF mode iterator.
11547         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
11548         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
11549         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
11550         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
11551         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
11552         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
11553         (*fop_xf_4_i387): Use <MODE> for mode attribute.
11554         (*fop_xf_5_i387): Ditto.
11555         (*fop_xf_6_i387): Ditto.
11556
11557 2008-05-30  Richard Guenther  <rguenther@suse.de>
11558
11559         * builtins.c (build_string_literal): Avoid generating
11560         a non-gimple_val result.
11561
11562 2008-05-30  DJ Delorie  <dj@redhat.com>
11563
11564         * exec-tool.in: Use an environment variable (private) instead of a
11565         file (shared) as a semaphore, so as to not break parallel builds.
11566
11567 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
11568
11569         * optabs.c (maybe_encapsulate_block): Remove.
11570         (emit_libcall_block): Adjust accordingly.
11571         * optabs.h (maybe_encapsulate_block): Remove prototype.
11572
11573         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
11574         Don't use maybe_encapsulate_block.
11575
11576 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
11577
11578         * config/rs6000/rs6000.c (rs6000_legitimize_address,
11579         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
11580         rtx is a SYMBOL_REF before calling get_pool_constant.
11581
11582 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
11583
11584         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
11585
11586 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
11587
11588         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
11589         rather than OS names to choose INO_T_EQ definition.
11590         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
11591         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
11592
11593 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
11594
11595         PR target/36348
11596         * config/darwin-f.c: New.
11597         * config/t-darwin: Added rule to build darwin-f.o.
11598         * config.gcc: Defined new variable, fortran_target_objs.
11599         (*-*-darwin*): Set fortran_target_objs.
11600         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
11601         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
11602         * configure: Regenerated.
11603
11604 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
11605
11606         PR target/35771
11607         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
11608         canonical type if needed.
11609
11610 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
11611
11612         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
11613
11614 2008-05-29  Richard Guenther  <rguenther@suse.de>
11615
11616         PR tree-optimization/36343
11617         PR tree-optimization/36346
11618         PR tree-optimization/36347
11619         * tree-flow.h (clobber_what_p_points_to): Declare.
11620         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
11621         pointed-to variable is dereferenced is irrelevant to whether
11622         the pointer can access the pointed-to variable.
11623         (clobber_what_p_points_to): New function.
11624         * tree-ssa-alias.c (set_initial_properties): Use it.
11625         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
11626         call clobber check for NMTs.
11627
11628 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
11629
11630         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
11631         for printing gcov_type.
11632
11633 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
11634
11635         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
11636         and the eh region information.
11637         * value-prof.c (gimple_move_stmt_histograms): New function.
11638         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
11639
11640 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
11641
11642         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
11643
11644 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
11645
11646         * value-prof.c (tree_ic_transform): Print counts.
11647         * tree-profile.c (tree_gen_ic_func_profiler):
11648         Clear __gcov_indreict_call_callee variable to avoid misattribution
11649         of the profile.
11650
11651 2008-05-28  Rafael Espíndola  <espindola@google.com>
11652
11653         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
11654         invalid sharing.
11655
11656 2008-05-28  Richard Guenther  <rguenther@suse.de>
11657
11658         PR tree-optimization/36339
11659         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
11660         and clobbering code out of the loop.
11661
11662 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
11663
11664         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
11665         letters defined.
11666
11667         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
11668         s390_contiguous_bitmask_p, s390_symref_operand_p,
11669         s390_check_symref_alignment, s390_reload_larl_operand,
11670         s390_reload_symref_address): New functions.
11671         (s390_branch_condition_mnemonic): Support compare and branch
11672         instructions.
11673         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
11674         and 'W' constraints.
11675         (s390_secondary_reload): Add secondary reloads for unaligned
11676         symbol refs or symbol refs to floating point or QI/TI mode
11677         integer values.
11678         (legitimate_address_p): Accept symbol references as addresses.
11679         (s390_expand_insv): Use rotate and insert selected bits
11680         instruction for insv when building for z10.
11681         (print_operand_address): Handle symbol ref addresses.
11682         (print_operand): Output modifier 'c' added for signed byte values.
11683         (s390_encode_section_info): Mark symbol refs with
11684         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
11685
11686         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
11687         (length attribute): RRF, RRR have 4 byte length.
11688         (FPALL, INTALL): New mode iterators added.
11689         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
11690         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
11691         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
11692         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
11693         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
11694         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
11695         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
11696         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
11697         instructions.
11698         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
11699         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
11700         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
11701         reload<INTALL:mode><P:mode>_toreg_z10,
11702         reload<FPALL:mode><P:mode>_tomem_z10,
11703         reload<FPALL:mode><P:mode>_toreg_z10,
11704         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
11705         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
11706         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
11707         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
11708         definition.
11709         (movmem, clrmem, cmpmem): New splitters added.
11710
11711         * config/s390/predicates.md (larl_operand): Use
11712         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
11713         SYMBOL_REF_ALIGN1_P.
11714         (s390_signed_integer_comparison,
11715         s390_unsigned_integer_comparison): New predicates.
11716
11717         * config/s390/s390-protos.h (s390_check_symref_alignment,
11718         s390_contiguous_bitmask_p, s390_reload_larl_operand,
11719         s390_reload_symref_address,
11720         s390_compare_and_branch_condition_mask): Prototypes added.
11721
11722         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
11723         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
11724         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
11725
11726 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
11727
11728         * config/s390/s390.c (z10_cost): New cost function for z10.
11729         (s390_handle_arch_option, override_options): Support -march=z10 switch.
11730         (s390_issue_rate): Adjust issue rate for z10.
11731         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
11732         (processor_flags): Add PF_Z10.
11733         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
11734         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
11735         * gcc/config.gcc: Add z10.
11736
11737 2008-05-28  Richard Guenther  <rguenther@suse.de>
11738
11739         PR tree-optimization/36291
11740         * tree-flow. h (struct gimple_df): Remove var_anns member.
11741         * tree-flow-inline.h (gimple_var_anns): Remove.
11742         (var_ann): Simplify.
11743         * tree-dfa.c (create_var_ann): Simplify.
11744         (remove_referenced_var): Clear alias info from var_anns of globals.
11745         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
11746         (delete_tree_ssa): Clear alias info from var_anns of globals.
11747         Do not free var_anns.
11748         (var_ann_eq): Remove.
11749         (var_ann_hash): Likewise.
11750
11751 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
11752
11753         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
11754         and loongson2f entries.
11755         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
11756         * config/mips/mips.h (processor_type): Add Loongson-2E
11757         and Loongson-2F entries.
11758         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
11759         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
11760         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
11761         * doc/invoke.texi (MIPS Options): Document loongson2e
11762         and loongson2f processor names.
11763
11764 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11765
11766         PR target/35767
11767         PR target/35771
11768         * config/i386/i386.c (ix86_function_arg_boundary): Use
11769         alignment of canonical type.
11770         (ix86_expand_vector_move): Check unaligned memory access for
11771         all SSE modes.
11772
11773 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11774
11775         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
11776         Moved to the front of file.
11777
11778 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
11779             H.J. Lu  <hongjiu.lu@intel.com>
11780
11781         * dwarf2out.c (current_fde): New.
11782         (add_cfi): Use it.
11783         (lookup_cfa:): Likewise.
11784         (dwarf2out_end_epilogue): Likewise.
11785         (dwarf2out_note_section_used): Likewise.
11786
11787 2008-05-27  Michael Matz  <matz@suse.de>
11788
11789         PR c++/27975
11790         * c.opt (Wenum-compare): New warning option.
11791         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
11792
11793 2008-05-27  Michael Matz  <matz@suse.de>
11794
11795         PR middle-end/36326
11796         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
11797         non-BLKmode types.
11798         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
11799         into memory as tail calls.
11800
11801 2008-05-27  Richard Guenther  <rguenther@suse.de>
11802
11803         PR tree-optimization/36339
11804         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
11805         pointers cause all addressable variables to be call clobbered.
11806
11807 2008-05-27  Richard Guenther  <rguenther@suse.de>
11808
11809         PR tree-optimization/36245
11810         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
11811
11812 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11813
11814         * config/s390/s390.md: Replace all occurences of the 'm'
11815         constraint with 'RT'.
11816
11817 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11818
11819         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
11820         definitions added.
11821         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
11822         "*movdi_64".
11823         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
11824         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
11825         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
11826
11827 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11828
11829         * reload.c: (find_reloads): Skip alternatives according to the
11830         "enabled" attribute. Constify the constraint variable.
11831         * recog.c (get_attr_enabled): Add default implementation.
11832         (extract_insn): Set the alternative_enabled_p array
11833         in the recog_data struct.
11834         (preprocess_constraints, constrain_operands): Skip
11835         alternatives according to the "enabled" attribute
11836         * recog.h (struct recog_data): New field alternative_enabled_p.
11837         (skip_alternative): New inline function.
11838         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
11839         (record_reg_classes): Skip alternative according to the
11840         "enabled" attribute.
11841
11842         * doc/md.texi: Add documention for the "enabled" attribute.
11843
11844 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11845
11846         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
11847         * postreload.c (reload_cse_simplify_operands): Replace 'm'
11848         constraint with TARGET_MEM_CONSTRAINT.
11849         * recog.c (asm_operand_ok, preprocess_constraints,
11850         constrain_operands): Likewise.
11851         * regclass.c (record_reg_classes): Likewise.
11852         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
11853         * reload1.c (maybe_fix_stack_asms): Likewise.
11854         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
11855         * recog.h: Adjust comment.
11856         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
11857         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
11858         * doc/md.texi: Add a note to description of 'm' constraint.
11859         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
11860
11861 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
11862
11863         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
11864         that the bitfield is of integral type before testing its precision.
11865
11866 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11867             Sa Liu  <saliu@de.ibm.com>
11868
11869         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
11870         __modti3, __udivti3, __umodti3 and __udivmodti4.
11871         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
11872         that implement TImode mul and div functions.
11873         * config/spu/multi3.c: New. Implement __multi3.
11874         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
11875         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
11876         functions on SPU.
11877
11878 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
11879
11880         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
11881         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
11882         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
11883         tls_sysv_suffix): New mode and mode attribute iterators.
11884         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
11885         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
11886         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
11887         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
11888         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
11889         iterators.
11890
11891 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
11892
11893         PR tree-optimization/36329
11894         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
11895         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
11896         * cgraphbuild.c (initialize_inline_failed): Use the latter
11897         macro in lieu of the former.
11898         * ipa-inline.c (cgraph_mark_inline): Likewise.
11899         (cgraph_decide_inlining_of_small_function): Likewise.
11900         (cgraph_decide_inlining): Likewise.
11901         (cgraph_decide_inlining_incrementally): Likewise.
11902
11903 2008-05-26  Tristan Gingold  <gingold@adacore.com>
11904             Anatoly Sokolov  <aesok@post.ru>
11905
11906         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
11907         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
11908         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
11909         optimization for 'avr6' architecture.
11910
11911 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
11912
11913         PR target/34932
11914         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
11915
11916 2008-05-26  Richard Guenther  <rguenther@suse.de>
11917
11918         * tree-ssa-sccvn.c (expr_has_constants): Declare.
11919         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
11920
11921 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
11922
11923         PR middle-end/36253
11924         * caller-save.c (insert_restore): Verify alignment of spill space.
11925         (insert_save): Likewise.
11926         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
11927         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
11928         (STACK_SLOT_ALIGNMENT): Likewise.
11929         * function.c (LOCAL_ALIGNMENT): Removed.
11930         (get_stack_local_alignment): New.
11931         (assign_stack_local): Use it.  Set alignment on stack slot.
11932         (assign_stack_temp_for_type): Use get_stack_local_alignment.
11933         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
11934         (STACK_SLOT_ALIGNMENT): New.
11935         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
11936         stack slot in XFmode.
11937
11938         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
11939
11940 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
11941
11942         PR/36321
11943         * config/i386/i386.md (allocate_stack_worker_64): Make sure
11944         argument operand in rax isn't removed.
11945
11946 2008-05-26  Richard Guenther  <rguenther@suse.de>
11947
11948         PR middle-end/36300
11949         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
11950         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
11951
11952 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11953
11954         PR bootstrap/36331
11955         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
11956
11957 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
11958
11959         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
11960         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
11961
11962 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11963
11964         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
11965         build a trampoline if we don't want one.
11966         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
11967         return zero for nested functions if we don't want a trampoline.
11968
11969 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11970
11971         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
11972
11973 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11974
11975         PR fortran/18428
11976         * c.opt: Removed undocumented option '-lang-fortran'.
11977         * c-common.h: Removed global variable 'lang_fortran'.
11978         * c-opts.c (c_common_handle_option): Removed code to handle
11979         option '-lang-fortran'. Updated includes.
11980         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
11981         definition of '__GFORTRAN__'.
11982         (define__GNUC__): Reimplemented to use BASEVER and
11983         cpp_define_formatted.
11984         (builtin_define_with_value_n): Removed.
11985         * c-incpath.h: Renamed to ...
11986         * incpath.h: ... this.
11987         * c-incpath.c: Renamed to ...
11988         * incpath.c: ... this. Updated includes.
11989         * fix-header.c: Updated includes.
11990         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
11991         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
11992         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
11993
11994 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11995
11996         * tree.h: Update the table of flags used on tree nodes.
11997         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
11998         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
11999         (FORCED_LABEL): Add access check.
12000         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
12001         (ASM_INPUT_P): Likewise.
12002         (ASM_VOLATILE_P): Likewise.
12003         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
12004         (OMP_SECTION_LAST): Access private_flag directly.
12005         (OMP_RETURN_NOWAIT): Likewise.
12006         (OMP_PARALLEL_COMBINED): Likewise.
12007         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
12008         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
12009         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
12010         deprecated_flag directly.
12011
12012 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
12013
12014         * final.c (frame_pointer_needed): Removed.
12015         * flags.h (frame_pointer_needed): Likewise.
12016
12017         * function.h (rtl_data): Add frame_pointer_needed.
12018         (frame_pointer_needed): New.
12019
12020 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
12021
12022         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
12023
12024 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
12025
12026         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
12027         SRC is a REG.
12028
12029 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
12030
12031         * c-common.c (strip_array_types): Move function to..
12032         * tree.c: ..here.
12033         (get_inner_array_type): Delete.
12034         * c-common.h (strip_array_types): Move declaration to..
12035         * tree.h: ..here.
12036         (get_inner_array_type): Delete.
12037         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
12038         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
12039         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
12040         * config/pa/pa.c (emit_move_sequence): Likewise.
12041
12042 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
12043
12044         * config/i386/i386.md (*sse_prologue_save_insn): Set length
12045         attribute to 34.
12046
12047 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
12048
12049         * function.c: Include target hook for nonlocal_goto frame value.
12050
12051 2008-05-24  Richard Guenther  <rguenther@suse.de>
12052
12053         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
12054         variable can be only accessed through a pointer or a union.
12055
12056 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12057
12058         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
12059         * doc/extend.texi: Likewise.
12060
12061 2008-05-23  DJ Delorie  <dj@redhat.com>
12062
12063         * config/m32c/jump.md (untyped_call): Add.
12064
12065         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
12066         for A24 to PSImode.
12067         (m32c_address_cost): Detail costs for indirect offsets.
12068
12069 2008-05-23  Rafael Espíndola  <espindola@google.com>
12070
12071         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
12072         if a node is a SUBREG.
12073         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
12074         is a SUBREG.
12075
12076 2008-05-23  Paul Brook  <paul@codesourcery.com>
12077             Carlos O'Donell  <carlos@codesourcery.com>
12078
12079         * doc/extend.texi: Clarify use of __attribute__((naked)).
12080         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
12081         * target.h (gcc_target): Add allocate_stack_slots_for_args.
12082         * function.c (use_register_for_decl): Use
12083         targetm.calls.allocate_stack_slots_for_args.
12084         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
12085         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
12086         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
12087
12088 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
12089
12090         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
12091
12092 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
12093
12094         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
12095         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
12096         is only rounded once.
12097
12098 2008-05-23  Richard Guenther  <rguenther@suse.de>
12099
12100         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
12101
12102 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
12103             Jakub Jelinek  <jakub@redhat.com>
12104
12105         PR target/36079
12106         * configure.ac: Handle --enable-cld.
12107         * configure: Regenerated.
12108         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
12109         * config/i386/i386.h (struct machine_function): Add needs_cld field.
12110         (ix86_current_function_needs_cld): New define.
12111         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
12112         (cld): New isns pattern.
12113         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
12114         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
12115         * config/i386/i386.opt (mcld): New option.
12116         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
12117         TARGET_CLD and ix86_current_function_needs_cld.
12118         (override_options): Use -mcld by default for 32-bit code if
12119         USE_IX86_CLD.
12120
12121         * doc/install.texi (Options specification): Document --enable-cld.
12122         * doc/invoke.texi (Machine Dependent Options)
12123         [i386 and x86-64 Options]: Add -mcld option.
12124         (Intel 386 and AMD x86-64 Options): Document -mcld option.
12125
12126 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
12127         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
12128         (return_in_memory_64): Likewise.
12129         (return_in_memory_ms_64): Likewise.
12130
12131 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12132
12133         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
12134         * builtins.c (fold_builtin_fpclassify): New.
12135         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
12136         * builtins.def (BUILT_IN_FPCLASSIFY): New.
12137         * c-common.c (handle_type_generic_attribute): Adjust to accept
12138         fixed arguments before an elipsis.
12139         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
12140         * doc/extend.texi: Document __builtin_fpclassify.
12141
12142 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
12143
12144         * omp-low.c (gate_expand_omp_ssa): Remove.
12145         (pass_expand_omp_ssa): Remove.
12146         (gate_expand_omp): Do not check for flag_openmp_ssa.
12147         * common.opt (-fopenmp-ssa): Remove.
12148         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
12149
12150 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12151
12152         * config/sh/sh.opt (mfixed-range): New option.
12153         * config/sh/sh-protos.h (sh_fix_range): Declare.
12154         * config/sh/sh.c (sh_fix_range): New function.
12155         * config/sh/sh.h (sh_fixed_range_str): Declare.
12156         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
12157         is not empty.
12158         * doc/invoke.texi (SH Options): Document -mfixed-range.
12159
12160 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
12161
12162         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
12163         it before the redeclaration.
12164
12165 2008-05-22  Anatoly Sokolov <aesok@post.ru>
12166
12167         * config/avr/avr.c (get_sequence_length): Add new function.
12168         (expand_prologue, expand_epilogue): Remove duplicate code.
12169
12170 2008-05-22  Rafael Espíndola  <espindola@google.com>
12171
12172         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
12173         sharing.
12174
12175 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
12176
12177         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
12178         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
12179
12180         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
12181         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
12182         (vect_update_misalignment_for_peel): Likewise.
12183         (vector_alignment_reachable_p): Likewise.
12184         * tree-vect-transform.c (vectorizable_load): Likewise.
12185         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
12186         (get_vectype_for_scalar_type): Pass mode of scalar_type
12187         to UNITS_PER_SIMD_WORD.
12188
12189         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
12190         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
12191         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
12192         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
12193         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
12194
12195 2008-05-22  Ira Rosen  <irar@il.ibm.com>
12196
12197         PR tree-optimization/36293
12198         * tree-vect-transform.c (vect_transform_strided_load): Don't check
12199         if the first load must be skipped because of a gap.
12200
12201 2008-05-22  Richard Guenther  <rguenther@suse.de>
12202
12203         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
12204         more cases of offset disambiguation that is possible if
12205         strict-aliasing rules apply.
12206         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
12207         for basic offset and type-based disambiguation.
12208
12209 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12210
12211         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
12212         ix86_expand_vector_set on V16QImode for SSE4.1.
12213
12214 2008-05-21  Tom Tromey  <tromey@redhat.com>
12215
12216         * c.opt (Wimport): Mark as undocumented.
12217         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
12218         -Wno-import.
12219         (Warning Options): Likewise.
12220         * doc/cppopts.texi: Don't mention -Wimport.
12221
12222 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
12223
12224         PR tree-optimization/36287
12225         PR tree-optimization/36286
12226         * lambda-code.c (build_access_matrix): Do not use the loop->num
12227         for computing the number of induction variables: use the loop depth
12228         instead.
12229
12230 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
12231
12232         PR/36280
12233         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
12234         option -f(no-)leading-underscore.
12235
12236 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12237
12238         * config/i386/i386.c (ix86_expand_vector_init_general): Use
12239         GET_MODE_NUNITS (mode).
12240
12241 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
12242
12243         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
12244         (-mmulhw): Add 464 to description.
12245         (-mdlmzb): Likewise.
12246         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
12247         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
12248         464fp entries.
12249         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
12250         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
12251         * config/rs6000/rs6000.md: Update comments for 464.
12252
12253 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
12254
12255         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
12256
12257 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12258
12259         * config/i386/sse.md (vec_extractv4sf): Removed.
12260         (vec_extractv2df): Likewise.
12261         (vec_extractv2di): Likewise.
12262         (vec_extractv4si): Likewise.
12263         (vec_extractv8hi): Likewise.
12264         (vec_extractv16qi): Likewise.
12265         (vec_extract<mode>): New.
12266
12267 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12268
12269         * config/i386/sse.md (vec_setv4sf): Removed.
12270         (vec_setv2df): Likewise.
12271         (vec_setv2di): Likewise.
12272         (vec_setv4si): Likewise.
12273         (vec_setv8hi): Likewise.
12274         (vec_setv16qi): Likewise.
12275         (vec_set<mode>): New.
12276
12277 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12278
12279         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
12280         goto for vec_concat and vec_interleave.
12281
12282 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12283
12284         * config/i386/sse.md (vec_initv4sf): Removed.
12285         (vec_initv2df): Likewise.
12286         (vec_initv2di): Likewise.
12287         (vec_initv4si): Likewise.
12288         (vec_initv8hi): Likewise.
12289         (vec_initv16qi): Likewise.
12290         (vec_init<mode>): New.
12291
12292 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
12293
12294         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
12295
12296 2008-05-21  Tom Tromey  <tromey@redhat.com>
12297
12298         * ggc-zone.c (lookup_page_table_if_allocated): New function.
12299         (zone_find_object_offset): Likewise.
12300         (gt_ggc_m_S): Likewise.
12301         (highest_bit): Likewise.
12302         * ggc-page.c (gt_ggc_m_S): New function.
12303         * stringpool.c (string_stack): Remove.
12304         (init_stringpool): Update.
12305         (ggc_alloc_string): Use ggc_alloc.
12306         (maybe_delete_ident): New function.
12307         (ggc_purge_stringpool): Likewise.
12308         (gt_ggc_m_S): Remove.
12309         * ggc-common.c (ggc_protect_identifiers): New global.
12310         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
12311         ggc_protect_identifiers.
12312         * ggc.h (ggc_protect_identifiers): Declare.
12313         (gt_ggc_m_S): Update.
12314         (ggc_purge_stringpool): Declare.
12315         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
12316         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
12317         special case.
12318         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
12319
12320 2008-05-21  David S. Miller  <davem@davemloft.net>
12321
12322         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
12323         tmake_file.
12324
12325 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
12326
12327         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
12328         once finished.
12329
12330 2008-05-20  David Daney  <ddaney@avtrex.com>
12331
12332         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
12333         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
12334         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
12335         UNSPEC_UPDATE_GOT_VERSION): Renumber.
12336         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
12337         (atomic_hiqi_op): New define_code_iterator.
12338         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
12339         mips_expand_compare_and_swap_12.
12340         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
12341         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
12342         (sync_<optab><mode>, sync_old_<optab><mode>,
12343         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12344         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
12345         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
12346         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
12347         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
12348         (test_and_set_12): New insn.
12349         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
12350         sync_new_<optab><mode>, sync_old_nand<mode>,
12351         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
12352         clobber to operand 0 for SI and DI mode insns.
12353         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
12354         mips_gen_fn_4): New typedefs.
12355         (mips_gen_fn_ptrs): Define new union type.
12356         (mips_expand_compare_and_swap_12): Remove declaration.
12357         (mips_expand_atomic_qihi): Declare function.
12358         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
12359         (mips_expand_atomic_qihi): ... this.  Use new generator function
12360         parameter.
12361         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
12362         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
12363         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
12364         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
12365         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
12366         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
12367         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
12368         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
12369         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
12370         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
12371         New macros.
12372
12373 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
12374
12375         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
12376         the missing break.
12377
12378 2008-05-20  Anatoly Sokolov <aesok@post.ru>
12379
12380         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
12381         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
12382         (avr_attribute_table): Add 'OS_main' function attribute.
12383         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
12384         functions with 'OS_main' attribute.
12385
12386 2008-05-20  Richard Guenther  <rguenther@suse.de>
12387
12388         PR tree-optimization/35204
12389         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
12390         helper, split out from ...
12391         (DFS): ... here.  Make the DFS walk non-recursive.
12392
12393 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
12394             Jan Sjodin  <jan.sjodin@amd.com>
12395
12396         PR tree-optimization/36181
12397         * tree-parloops.c (loop_has_vector_phi_nodes): New.
12398         (parallelize_loops): Don't parallelize when the loop has vector
12399         phi nodes.
12400
12401 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12402             Sebastian Pop  <sebastian.pop@amd.com>
12403
12404         * tree-loop-linear.c (gather_interchange_stats): Look in the access
12405         matrix, and never look at the tree representation of the memory
12406         accesses.
12407         (linear_transform_loops): Computes parameters and access matrices.
12408         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
12409         when fails.
12410         (access_matrix_get_index_for_parameter): New.
12411         * tree-data-ref.h (struct access_matrix): New.
12412         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
12413         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
12414         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
12415         am_vector_index_for_loop): New.
12416         (struct data_reference): Add field access_matrix.
12417         (DR_ACCESS_MATRIX): New.
12418         (compute_data_dependences_for_loop): Update declaration.
12419         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
12420         * lambda.h (lambda_vector_vec_p): Declared.
12421         * lambda-code.c: Depend on pointer-set.h.
12422         (lambda_collect_parameters_from_af, lambda_collect_parameters,
12423         av_for_af_base, av_for_af, build_access_matrix,
12424         lambda_compute_access_matrices): New.
12425         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
12426
12427 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
12428
12429         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
12430         $SOURCEDIR/include.
12431
12432 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12433             Sebastian Pop  <sebastian.pop@amd.com>
12434
12435         PR tree-optimization/36206
12436         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
12437         FOLD_CONVERSIONS.
12438         (instantiate_scev_1): Rename flags to fold_conversions.
12439         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
12440         outeside instantiation_loop.
12441         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
12442         (evolution_function_is_affine_or_constant_p): Removed.
12443         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
12444         instantiate_scev.
12445         (analyze_siv_subscript): Pass in the loop nest number.
12446         Call evolution_function_is_affine_in_loop instead of
12447         evolution_function_is_affine_p.
12448         (analyze_overlapping_iterations): Pass in the loop nest number.
12449
12450 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12451             Sebastian Pop  <sebastian.pop@amd.com>
12452
12453         PR tree-optimization/36206
12454         * tree-chrec.h (chrec_fold_op): New.
12455         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
12456         and other trees.
12457
12458 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
12459
12460         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
12461         (DIRS_EQ): New.
12462         (remove_duplicates): Do not set inode on non-inode systems.
12463         Use DIRS_EQ.
12464
12465 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
12466
12467         * config.gcc (tm_file): Update comments about relative pathnames.
12468
12469 2008-05-20  Richard Guenther  <rguenther@suse.de>
12470
12471         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
12472         * tree-ssa-sccvn.c (process_scc): Likewise.
12473         * tree-ssa-sink.c (execute_sink_code): Likewise.
12474         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
12475         * tree-vrp.c (process_assert_insertions): Likewise.
12476         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
12477         (perform_tree_ssa_dce): Likewise.
12478         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
12479         (dump_dominator_optimization_stats): Likewise.
12480         * tree-vectorizer.c (vectorize_loops): Likewise.
12481
12482 2008-05-20  Richard Guenther  <rguenther@suse.de>
12483
12484         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
12485
12486 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
12487
12488         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
12489         (ix86_i386elf_return_in_memory): Likewise.
12490         (ix86_i386interix_return_in_memory): Likewise.
12491         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
12492         (SUBTARGET_RETURN_IN_MEMORY): New.
12493         * config/i386/i386elf.h: Likewise.
12494         * config/i386/ptx4-i.h: Likewise.
12495         * config/i386/sol2-10.h: Likewise.
12496         * config/i386/sysv4.h: Likewise.
12497         * config/i386/vx-common.h: Likewise.
12498         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
12499         * config/i386/i386.c (ix86_return_in_memory): Made static and
12500         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
12501         (ix86_i386elf_return_in_memory): Removed.
12502         (ix86_i386interix_return_in_memory): Removed.
12503         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
12504         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
12505
12506 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
12507
12508         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
12509
12510 2008-05-19  Xinliang David Li  <davidxl@google.com>
12511
12512         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
12513         * opts.c: Ditto.
12514         * common.opt: Ditto.
12515         * doc/invoke.texi: Ditto.
12516
12517 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
12518
12519         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
12520         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
12521
12522 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
12523
12524         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
12525         sizes of operand array from 8/4 to 4/2.
12526         (ix86_expand_vector_init_general): Change size of operand array
12527         from 32 to 16.  Remove op0, op1 and half_mode.
12528
12529 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
12530
12531         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
12532         (ix86_expand_vector_init_interleave): Likewise.
12533         (ix86_expand_vector_init_general): Use them.  Assert
12534         word_mode == SImode when n_words == 4.
12535
12536 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
12537
12538         * config/i386/i386.c (ix86_secondary_reload): New static function.
12539         (TARGET_SECONDARY_RELOAD): New define.
12540         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
12541         * config/i386/i386.md (reload_outqi): Remove.
12542
12543 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12544
12545         PR middle-end/35509
12546         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
12547         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
12548         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
12549         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
12550         (fold_builtin_1): Likewise.
12551         * builtins.def (BUILT_IN_ISINF_SIGN): New.
12552         c-common.c (check_builtin_function_arguments): Handle
12553         BUILT_IN_ISINF_SIGN.
12554         * doc/extend.texi: Document __builtin_isinf_sign.
12555         * fold-const.c (operand_equal_p): Handle COND_EXPR.
12556
12557 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
12558
12559         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
12560         EH cleanup at the end of the pass, search for those that have been
12561         turned into forwarder blocks and do the cleanup on their successor.
12562
12563 2008-05-18  Richard Guenther  <rguenther@suse.de>
12564
12565         * tree-cfg.c (verify_gimple_expr): Allow conversions from
12566         pointers to sizetype and vice versa.
12567
12568 2008-05-18 Xinliang David Li   <davidxl@google.com>
12569
12570         * gcc/tree-ssa-dce.c: Coding style fix.
12571         (check_pow): Documentation comment.
12572         (check_log): Documenation comment. Coding style fix.
12573         (is_unnecessary_except_errno_call): Ditto.
12574         (gen_conditions_for_pow): Ditto.
12575         (gen_conditions_for_log): Ditto.
12576         (gen_shrink_wrap_conditions): Ditto.
12577         (shrink_wrap_one_built_in_calls): Ditto.
12578         * gcc/doc/invoke.texi: Better documentation string.
12579         * ChangeLog: Fix wrong change log entries from
12580         May 17 checkin on function call DCE.
12581
12582 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
12583
12584         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
12585
12586 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
12587
12588         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
12589         * df-problems.c (simulation routines): Fixed block comment to
12590         properly say how to add forwards scanning functions.
12591
12592 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
12593
12594         * tree-inline.c (setup_one_parameter): Remove dead code.
12595
12596 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
12597
12598         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
12599         a BIT_AND_EXPR only for an INTEGER_TYPE.
12600
12601 2008-05-17 Xinliang David Li   <davidxl@google.com>
12602
12603         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
12604         (check_pow, check_log, is_unnecessary_except_errno_call): New
12605         functions to check for eliminating math functions that are pure
12606         except for setting errno.
12607         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
12608         general condition expressions for shrink-wrapping pow/log calls.
12609         (gen_shrink_wrap_conditions): Ditto.
12610         (shrink_wrap_one_built_in_call): Ditto.
12611         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
12612         (mark_operand_necessary): If debugging, output if OP is necessary.
12613         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
12614         unnecessary.
12615         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
12616         opt level >= 2.
12617         * gcc/common.opt: New user flag -ftree-builtin-dce.
12618         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
12619
12620 2008-05-16  David S. Miller  <davem@davemloft.net>
12621
12622         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
12623         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
12624
12625 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
12626
12627         PR target/36246
12628         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
12629
12630 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12631
12632         * ifcvt.c (dead_or_predicable): Rename
12633         df_simulate_one_insn_backwards to df_simulate_one_insn.
12634         * recog.c (peephole2_optimize): Ditto.
12635         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
12636         Ditto.
12637         * df.h: Rename df_simulate_one_insn_backwards to
12638         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
12639         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
12640         scanning of defs and uses.
12641         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
12642         (df_simulate_one_insn_forwards): Removed.
12643
12644 2008-05-16  Doug Kwan  <dougkwan@google.com>
12645
12646         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
12647         QNaN & SNaN.
12648         (real_from_string): Handle NaNs and Inf as approriate.
12649
12650 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
12651
12652         * doc/gty.texi (Source Files Containing Type Information): Note
12653         that headers should appear first in the gtfiles list.
12654
12655 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12656
12657         * tree.def (COND_EXEC): Properly documented this code.
12658
12659 2008-05-16  Diego Novillo  <dnovillo@google.com>
12660
12661         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
12662         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
12663         the new field.
12664
12665 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12666
12667         * tree-ssa-dse (max_stmt_uid): Removed.
12668         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
12669         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
12670         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
12671         * function.h (cfun.last_stmt_uid): New field.
12672         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
12673         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
12674         New functions.
12675         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
12676         (create_stmt_ann): Initialize the ann->uid field.
12677         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
12678         with new calls.
12679         * tree-flow.h (renumber_gimple_stmt_uids): New function.
12680
12681 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
12682
12683         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
12684         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
12685         (init_empty_tree_cfg): Call it.
12686
12687 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12688
12689         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
12690         Update all users.
12691
12692 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12693
12694         * doc/invoke.text (-fdump-tree-*-verbose): New option.
12695         * tree-dump.c (dump_options): New verbose option.
12696         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
12697         Add verbose dump.
12698         * tree-pass.h (TDF_VERBOSE): New dump flag.
12699         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
12700         (tree-flow.h): Added include.
12701         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
12702
12703 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
12704
12705         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
12706
12707         From Jie Zhang  <jie.zhang@analog.com>
12708         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12709         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
12710         mcpu=bf561-none and mcpu=bf561-0.2.
12711         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12712         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
12713         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12714         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
12715         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
12716         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
12717         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
12718         option.
12719         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
12720         (cputype_selected): Remove.
12721         (bfin_handle_option): Don't use cputype_selected.
12722         (override_options): When no mcpu option, enable all workarounds.
12723         Don't use bfin_workarounds.
12724         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
12725         processor type.
12726         (DEFAULT_CPU_TYPE): Don't define.
12727
12728 2008-05-16  Richard Guenther  <rguenther@suse.de>
12729
12730         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
12731         on deletion of the last stmt.
12732
12733 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
12734
12735         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
12736         V8HImode for SSE2 and V16QImode for SSE4.1.
12737
12738 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
12739
12740         * cgraph.h (compute_inline_parameters): Made public.
12741         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
12742         variable_generate_summary, function_write_summary,
12743         variable_write_summary, variable_read_summary.  Added generate_summary,
12744         write_summary, read_summary.
12745         * cgraphunit.c (cgraph_process_new_functions): Changed call from
12746         pass_ipa_inline.function_generate_summary, to
12747         compute_inline_parameters.
12748         * ipa-inline.c (compute_inline_parameters): Made public and added
12749         node parameter.
12750         (compute_inline_parameters_for_current): New function.
12751         (pass_inline_param): Now calls compute_inline_parameters_for_current.
12752         (inline_generate_summary): Removed parameter and made to loop over
12753         all cgraph nodes.
12754         (pass_ipa_inline): Updated for new IPA_PASS structure.
12755         * passes.c (execute_ipa_summary_passes): Now is called once per
12756         pass rather than once per node*pass.
12757
12758 2008-05-15  Anatoly Sokolov <aesok@post.ru>
12759
12760         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
12761         avr_have_mul_p, avr_asm_only_p): Remove variables.
12762         (avr_override_options): Remove initialization of removed variables.
12763         (avr_file_start):  Convert removed variables to fields of
12764         'struct base_arch_s *avr_current_arch'.
12765         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
12766         (AVR_HAVE_MUL): (Ditto.).
12767         (AVR_HAVE_MOVW): (Ditto.).
12768         (AVR_HAVE_LPMX): (Ditto.).
12769         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
12770         avr_asm_only_p): Remove declaration.
12771
12772 2008-05-15  Diego Novillo  <dnovillo@google.com>
12773
12774         * config/arm/arm.c (arm_return_in_memory): Fix return type.
12775         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
12776
12777 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
12778
12779         PR middle-end/36194
12780         * combine.c (check_conversion): Rename back to check_promoted_subreg.
12781         Don't call record_truncated_value from here.
12782         (record_truncated_value): Turn it into a for_each_rtx callback.
12783         (record_truncated_values): New function.
12784         (combine_instructions): Call note_uses with record_truncated_values.
12785         Change name of check_conversion to check_promoted_subreg.
12786
12787 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
12788
12789         * doc/sourcebuild.texi: Document support for torture tests.
12790
12791 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
12792
12793         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
12794         to alternative 4 of operand 2.
12795
12796 2008-05-15  Richard Guenther  <rguenther@suse.de>
12797
12798         * tree-pass.h (current_pass): Declare.
12799         (get_pass_for_id): Likewise.
12800         * passes.c (passes_by_id, passes_by_id_size): New globals.
12801         (set_pass_for_id): New function.
12802         (get_pass_for_id): Likewise.
12803         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
12804         (execute_function_todo): Flush per function statistics.
12805         * toplev.c (compile_file): Init statistics.
12806         (general_init): Do early statistics initialization.
12807         (finalize): Finish statistics.
12808         * statistics.h (statistics_early_init): Declare.
12809         (statistics_init): Likewise.
12810         (statistics_fini): Likewise.
12811         (statistics_fini_pass): Likewise.
12812         (statistics_counter_event): Likewise.
12813         (statistics_histogram_event): Likewise.
12814         * statistics.c: New file.
12815         * Makefile.in (OBJS-common): Add statistics.o.
12816         (statistics.o): Add dependencies.
12817         * doc/invoke.texi (-fdump-statistics): Document.
12818
12819         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
12820         (insert): Likewise.
12821         (execute_pre): Use statistics_counter_event.
12822         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
12823         (substitute_and_fold): Increment it.  Use statistics_counter_event.
12824
12825 2008-05-15  Diego Novillo  <dnovillo@google.com>
12826
12827         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
12828
12829         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
12830         * tree-ssa-alias.c (new_type_alias): Remove references to
12831         sub-variables from comment.
12832         * tree-ssa-operands.c (swap_tree_operands): Likewise.
12833
12834 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
12835
12836         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
12837         attribute to 1 only for insertps alternative.
12838
12839 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
12840
12841         * config/bfin/bfin.md (loadbytes): New pattern.
12842         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
12843         (bfin_init_builtins): Initialize it.
12844         (bdesc_1arg): Add it.
12845
12846 2008-05-15  Sa Liu  <saliu@de.ibm.com>
12847
12848         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
12849         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
12850         * testsuite/lib/target-supports.exp: Add
12851         check_effective_target_fortran_integer_16.
12852
12853 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
12854
12855         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
12856         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
12857         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
12858         (TARGET_RETURN_IN_MEMORY): Define.
12859
12860 2008-05-15  Richard Guenther  <rguenther@suse.de>
12861
12862         PR middle-end/36244
12863         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
12864         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
12865         represent unmodifiable vars.
12866
12867 2008-05-15  Richard Guenther  <rguenther@suse.de>
12868
12869         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
12870         INDIRECT_REF and TARGET_MEM_REF.
12871         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
12872         TARGET_MEM_REF.
12873
12874 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
12875             H.J. Lu  <hongjiu.lu@intel.com>
12876
12877         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
12878         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
12879         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
12880         insn alternatives.  Add missing alternatives.
12881         (*vec_concatv2di_rex64_sse4_1): Likewise.
12882         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
12883         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
12884         Require TARGET_SSE.
12885
12886 2008-05-15  Richard Guenther  <rguenther@suse.de>
12887
12888         PR tree-optimization/36009
12889         PR tree-optimization/36204
12890         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
12891         (determine_invariantness_stmt): Record the loop a store is
12892         always executed in.
12893         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
12894         dependency.
12895
12896 2008-05-15  Richard Guenther  <rguenther@suse.de>
12897
12898         PR tree-optimization/34330
12899         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
12900         through the pointer will alias the SMT.
12901
12902 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
12903
12904         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
12905
12906 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
12907
12908         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
12909
12910 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12911             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12912
12913         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
12914         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
12915         (vashl_optab): New optab for vector/vector shifts.
12916         (vashr_optab): Ditto.
12917         (vlshr_optab): Ditto.
12918         (vrotl_optab): Ditto.
12919         (vrotr_optab): Ditto.
12920         (optab_subtype): New enum for optab_for_tree_code call.
12921         (optab_for_tree_code): Add enum optab_subtype argument.
12922
12923         * optabs.c (optab_for_tree_code): Take an additional argument to
12924         distinguish between a vector shift by a scalar and vector shift by
12925         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
12926         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
12927         vector shift by a vector.
12928         (expand_widen_pattern_expr): Pass additional argument to
12929         optab_for_tree_code.
12930
12931         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
12932         vrotl_optab, vrotr_optab.
12933
12934         * expr.c (expand_expr_real_1): Update calls to
12935         optab_for_tree_code to distinguish between vector shifted by a
12936         scalar and vector shifted by a vector.
12937         * tree-vectorizer.c (supportable_widening_operation): Ditto.
12938         (supportable_narrowing_operation): Ditto.
12939         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
12940         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
12941         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
12942         (vect_create_epilog_for_reduction): Ditto.
12943         (vectorizable_reduction): Ditto.
12944         (vectorizable_operation): Ditto.
12945         (vect_strided_store_supported): Ditto.
12946         (vect_strided_load_supported): Ditto.
12947         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12948         * expmed.c (expand_shift): Ditto.
12949
12950         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
12951         scalar type.
12952         (ashr@var{m}3): Ditto.
12953         (vashl@var{m}3): Document new vector/vector shift standard name.
12954         (vashr@var{m}3): Ditto.
12955         (vlshr@var{m}3): Ditto.
12956         (vrotl@var{m}3): Ditto.
12957         (vrotr@var{m}3): Ditto.
12958
12959         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
12960         (PPERM_INVERT): Ditto.
12961         (PPERM_REVERSE): Ditto.
12962         (PPERM_REV_INV): Ditto.
12963         (PPERM_ZERO): Ditto.
12964         (PPERM_ONES): Ditto.
12965         (PPERM_SIGN): Ditto.
12966         (PPERM_INV_SIGN): Ditto.
12967         (PPERM_SRC1): Ditto.
12968         (PPERM_SRC2): Ditto.
12969
12970         * config/i386/sse.md (mulv2di3): Add SSE5 support.
12971         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
12972         allows a memory operand to be the value being added, and split it
12973         to improve vectorization.
12974         (sse5_pmacsdqh_mem): Ditto.
12975         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
12976         (sse5_mulv2div2di3_high): Ditto.
12977         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
12978         (vec_pack_trunc_v4si): Ditto.
12979         (vec_pack_trunc_v2di): Ditto.
12980         (sse5_pcmov_<mode>): Remove code that tried to use use
12981         andps/andnps instead of pcmov.
12982         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
12983         pmacsdqh instructions.
12984         (vec_widen_smult_lo_v4si): Ditto.
12985
12986         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
12987         (PPERM_INVERT): Ditto.
12988         (PPERM_REVERSE): Ditto.
12989         (PPERM_REV_INV): Ditto.
12990         (PPERM_ZERO): Ditto.
12991         (PPERM_ONES): Ditto.
12992         (PPERM_SIGN): Ditto.
12993         (PPERM_INV_SIGN): Ditto.
12994         (PPERM_SRC1): Ditto.
12995         (PPERM_SRC2): Ditto.
12996         (ix86_expand_sse_movcc): Move the SSE5 test after the if
12997         true/false tests.
12998         (ix86_expand_int_vcond): If SSE5 generate all possible integer
12999         comparisons.
13000         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
13001         says ignore whether the last reference is a memory operand.
13002
13003 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
13004             Paolo Bonzini <bonzini at gnu dot org>
13005
13006         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
13007         shift patterns.
13008
13009         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
13010         (vlshr<mode>3): Rename from vlshr<mode>3.
13011         (vashr<mode>3): Rename from vashr<mode>3.
13012         (mulv4sf3): Change the names of vector shift patterns.
13013         (mulv4si3): Ditto.
13014         (negv4sf2): Ditt.
13015
13016         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
13017         shift insns.
13018
13019         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
13020         (SI_SHLHI): Ditto.
13021         (SI_SHL): Ditto.
13022         (SI_SHLI): Ditto.
13023         (SI_ROTH): Ditto.
13024         (SI_ROTHI): Ditto.
13025         (SI_ROT): Ditto.
13026         (SI_ROTI): Ditto.
13027         (SPU_RL_0): Ditto.
13028         (SPU_RL_1): Ditto.
13029         (SPU_RL_2): Ditto.
13030         (SPU_RL_3): Ditto.
13031         (SPU_RL_4): Ditto.
13032         (SPU_RL_5): Ditto.
13033         (SPU_RL_6): Ditto.
13034         (SPU_RL_7): Ditto.
13035         (SPU_SL_0): Ditto.
13036         (SPU_SL_1): Ditto.
13037         (SPU_SL_2): Ditto.
13038         (SPU_SL_3): Ditto.
13039         (SPU_SL_4): Ditto.
13040         (SPU_SL_5): Ditto.
13041         (SPU_SL_6): Ditto.
13042         (SPU_SL_7): Ditto.
13043
13044         * config/spu/spu.md (v): New iterator macro to add v for vector types.
13045         (floatunssidf2_internal): Change vector/vector shift names.
13046         (floatunsdidf2_internal): Ditto.
13047         (mulv8hi3): Ditto.
13048         (ashrdi3): Ditto.
13049         (ashrti3): Ditto.
13050         (cgt_df): Ditto.
13051         (cgt_v2df): Ditto.
13052         (dftsv): Ditto.
13053         (vashl<mode>3): Rename from ashl<mode>3.
13054         (vashr<mode>3): Rename from ashr<mode>3.
13055         (vlshr<mode>3): Rename from lshr<mode>3.
13056         (vrotl<mode>3): Rename from rotl<mode>3.
13057
13058 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
13059
13060         PR target/36224
13061         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
13062         multiply gives the wrong value when doing widening multiplies.
13063         (vec_widen_smult_lo_v4si): Ditto.
13064
13065 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
13066
13067         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
13068         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
13069         emit_library_call_value.
13070         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
13071         * tree.h (ECF_LIBCALL_BLOCK): Removed.
13072         * calls.c (initialize_argument_information, precompute_arguments,
13073         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
13074         (precompute_arguments): Removed flags parameter.
13075         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
13076
13077 2008-05-14  Richard Guenther  <rguenther@suse.de>
13078
13079         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
13080         Make sure to register the store if the use is a PHI_NODE.
13081
13082 2008-05-14  Olivier Hainque  <hainque@adacore.com>
13083
13084         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
13085         memory if the component is to be referenced in BLKmode according
13086         to get_inner_reference.
13087
13088 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
13089
13090         * calls.c (emit_library_call_value_1): Restore code clearing
13091         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
13092
13093 2008-05-14  Olivier Hainque  <hainque@adacore.com>
13094             Nicolas Roche  <roche@adacore.com>
13095
13096         * configure.ac: Add support for a "gcc_subdir" variable in
13097         config-lang.in, to denote a subdirectory where the language/GCC
13098         integration files are to be found.
13099         * configure: Regenerate.
13100
13101 2008-05-14  Ira Rosen  <irar@il.ibm.com>
13102
13103         PR tree-optimization/36098
13104         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
13105         value for the first load in the group in case of a gap.
13106         (vect_build_slp_tree): Check that there are no gaps in loads.
13107
13108 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
13109
13110         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
13111         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
13112         expand_copysign_bit, ): Change call to emit_no_conflict_block to
13113         emit_insn and remove unneeded code to construct extra args.
13114         (emit_no_conflict_block): Removed.
13115         * optabls.h: (emit_no_conflict_block): Removed.
13116         * cse.c (cse_extended_basic_block): Remove search for
13117         REG_NO_CONFLICT note.
13118         * global.c: Removed incorrect comment added in revision 117.
13119         * expr.c (convert_move): Change call to emit_no_conflict_block to
13120         emit_insn.
13121         * recog.c: Change comments so that they do not mention
13122         REG_NO_CONFLICT.
13123         * local_alloc.c (combine_regs): Removed last parameter.
13124         (no_conflict_p): Removed.
13125         (block_alloc): Removed note, no_conflict_combined_regno and set
13126         local vars. Removed all code to process REG_NO_CONFLICT blocks.
13127         (combine_regs): Removed already_dead and code to look for
13128         REG_NO_CONFLICT notes.
13129         * lower_subreg (remove_retval_note): Removed code to look for
13130         REG_NO_CONFLICT block.
13131         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
13132         (resolve_clobber): Remove code to process libcalls that have
13133         REG_NO_CONFLICT notes.
13134         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
13135         case.
13136         * combine.c (can_combine_p, distribute_notes):  Removed
13137         REG_NO_CONFLICT case.
13138         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
13139         to emit_insns.
13140         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
13141         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
13142         Ditto.
13143         * reg-notes.def (NO_CONFLICT): Removed.
13144
13145 2008-05-14  David S. Miller  <davem@davemloft.net>
13146
13147         * config/sparc/sparc.c (sparc_profile_hook): If
13148         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
13149         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
13150         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
13151
13152 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
13153
13154         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
13155
13156 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
13157
13158         PR target/36222
13159         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
13160         and op1 expansion before vector concat to have less live pseudos.
13161
13162 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
13163
13164         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
13165         ix86_expand_vector_set if supported.
13166
13167 2008-05-13  Diego Novillo  <dnovillo@google.com>
13168             Kenneth Zadeck  <zadeck@naturalbridge.com>
13169
13170         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
13171
13172         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
13173         phinodes_print_statistics, init_ssanames, fini_ssanames,
13174         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
13175         release_ssa_name, release_defs, replace_ssa_name_symbol,
13176         ssanames_print_statistics): Move ...
13177         * tree-flow.h: ... here.
13178         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
13179         Use FN instead of cfun.
13180         (make_ssa_name_fn): Rename from make_ssa_name.
13181         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
13182         * tree-flow-inline.h (make_ssa_name): Move from
13183         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
13184         * omp-low.c (expand_omp_parallel):
13185         * tree-flow-inline.h (redirect_edge_var_map_result):
13186         * tree-ssa.c (init_tree_ssa): Add argument FN.
13187         Use it instead of cfun.  Update all users.
13188
13189 2008-05-13  Tom Tromey  <tromey@redhat.com>
13190
13191         PR preprocessor/22168:
13192         * doc/cpp.texi (Top): Update menu.
13193         (Alternatives to Wrapper #ifndef): New node.
13194         (Other Directives): Document deprecation.
13195         (Obsolete Features): Remove menu.
13196         (Assertions): Merge node into Obsolete Features.
13197         (Obsolete once-only headers): Move earlier; rename to Alternatives
13198         to Wrapper #ifndef.
13199         * doc/cppopts.texi: Update.
13200         * c.opt (Wdeprecated): Enable for C and ObjC.
13201         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
13202         (C++ Dialect Options): Move -Wno-deprecated from here to...
13203         (Warning Options): ... here.
13204
13205 2008-05-13  Richard Guenther  <rguenther@suse.de>
13206
13207         PR middle-end/36227
13208         * fold-const.c (fold_sign_changed_comparison): Do not allow
13209         changes in pointer-ness.
13210
13211 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13212
13213         PR target/24713
13214         * config/sh/sh.c (sh_expand_prologue): Don't clear
13215         RTX_FRAME_RELATED_P for push insns.
13216
13217 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
13218
13219         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
13220
13221 2008-05-12  Anatoly Sokolov <aesok@post.ru>
13222
13223         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
13224         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
13225         Use 'machine->is_leaf' instead of 'leaf_func_p'.
13226
13227 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
13228
13229         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
13230         (*vec_concatv4sf_sse): This.
13231         (*sse2_concatv2si): Renamed to ...
13232         (*vec_concatv2si_sse2): This.
13233         (*sse1_concatv2si): Renamed to ...
13234         (*vec_concatv2si_sse): This.
13235         (*vec_concatv2di_rex): Renamed to ...
13236         (*vec_concatv2di_rex64): This.
13237         (*vec_concatv2si_sse4_1): New.
13238         (*vec_concatv2di_rex64_sse4_1): Likewise.
13239
13240 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
13241
13242         PR rtl-optimization/36111
13243         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
13244         that was created for swappable operands.
13245
13246 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
13247
13248         PR ada/36001
13249         * Makefile.in: Substitute GNATMAKE and GNATBIND.
13250         * configure.ac: Add call to ACX_PROG_GNAT.
13251
13252 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
13253
13254         * optc-gen.awk: Fix comment typo.
13255
13256 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
13257
13258         * pretty-print.c (pp_integer_with_precision): Use
13259         HOST_LONG_LONG_FORMAT.
13260
13261 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
13262
13263         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
13264
13265 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
13266
13267         * config/i386/i386.c (bdesc_ptest): Removed.
13268         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
13269         (bdesc_args): Add __builtin_ia32_ptestz128,
13270         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
13271         (ix86_init_mmx_sse_builtins): Updated.
13272         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
13273         (ix86_expand_builtin): Updated.
13274
13275 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
13276
13277         * tree-cfg.c (valid_fixed_convert_types_p): New function.
13278         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
13279
13280 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
13281
13282         * value-prof.c (interesting_stringop_to_profile): Do not
13283         return early for BUILT_IN_MEMPCPY.
13284
13285 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
13286
13287         * calls.c (expand_call): Don't use callgraph to increase
13288         preferred_stack_boundary.
13289
13290         * cgraph.h (cgraph_rtl_info): Use unsigned on
13291         preferred_incoming_stack_boundary.
13292
13293         * final.c (rest_of_clean_state): Use unsigned on
13294         preferred_stack_boundary.
13295
13296 2008-05-09  Tom Tromey  <tromey@redhat.com>
13297
13298         PR preprocessor/22231:
13299         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
13300         proceeding.
13301
13302 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
13303
13304         PR tree-optimization/36129
13305         * tree-ssa-ccp.c: Include value-prof.h.
13306         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
13307         built-in function was folded to a constant.
13308         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
13309
13310 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
13311             Sebastian Pop  <sebastian.pop@amd.com>
13312
13313         * tree-scalar-evolution.c: Document instantiate_scev.
13314         (instantiate_parameters_1): Renamed instantiate_scev_1.
13315         Don't use the same loop for instantiation_loop and evolution_loop.
13316         (instantiate_scev): New.
13317         (instantiate_parameters): Moved...
13318         (resolve_mixers): Update call to instantiate_scev_1 to pass the
13319         same loop twice.  Maintains the semantics for this function.
13320         * tree-scalar-evolution.h (instantiate_scev): Declare.
13321         (instantiate_parameters): ...here.  Now static inline.
13322         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
13323         instead of resolve_mixers.
13324
13325 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13326
13327         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
13328
13329 2008-05-09  Tomas Bily  <tbily@suse.cz>
13330
13331         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
13332         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
13333         * tree-ssa-structalias.c (get_constraint_for): Likewise.
13334         * c-common.c (c_common_truthvalue_conversion): Likewise.
13335         * tree-object-size.c (compute_object_offset): Likewise.
13336         * tree-inline.c (estimate_num_insns_1): Likewise.
13337         * varasm.c (const_hash_1, compare_constant, copy_constant)
13338         (compute_reloc_for_constant, output_addressed_constants)
13339         (initializer_constant_valid_p): Likewise.
13340         * c-omp.c (check_omp_for_incr_expr): Likewise.
13341         * gimplify.c (gimplify_expr): Likewise.
13342         * c-typeck.c (c_finish_return): Likewise.
13343         * tree-vectorizer.c (supportable_widening_operation)
13344         (supportable_narrowing_operation): Likewise.
13345         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
13346         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
13347         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
13348         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
13349         (descr_info_loc): Likewise.
13350         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
13351         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
13352         (fold_unary): Likewise.
13353         * builtins.c (get_pointer_alignment): Likewise.
13354         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
13355         (instantiate_parameters_1): Likewise.
13356         * tree.c (expr_align, stabilize_reference): Likewise.
13357         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
13358         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
13359         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
13360         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
13361         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
13362         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
13363         Likewise.
13364         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
13365         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
13366         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
13367         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
13368         (forward_propagate_comparison)
13369         (tree_ssa_forward_propagate_single_use_vars): Likewise.
13370         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
13371         * emit-rtl.c (component_ref_for_mem_expr)
13372         (set_mem_attributes_minus_bitpos): Likewise.
13373         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
13374         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
13375         Likewise.
13376         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
13377         (build_function_call, pointer_diff, build_compound_expr)
13378         (c_finish_return): Likewise.
13379         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
13380         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
13381         Likewise.
13382         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
13383         * expr.c (is_aligning_offset): Likewise.
13384         * tree-ssa-alias.c (is_escape_site): Likewise.
13385         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
13386         (check_all_va_list_escapes): Likewise.
13387         * tree-ssa-loop-ivopts.c (determine_base_object)
13388         (determine_common_wider_type): Likewise.
13389         * dojump.c (do_jump): Likewise.
13390         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
13391         * tree-gimple.c (is_gimple_cast): Likewise.
13392         * fold-const.c (decode_field_reference, )
13393         (fold_sign_changed_comparison, fold_unary, fold_comparison)
13394         (fold_binary): Likewise.
13395         * tree-ssa-alias-warnings.c (find_alias_site_helper)
13396         (already_warned_in_frontend_p): Likewise.
13397         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
13398         * tree.c (really_constant_p, get_unwidened): Likewise.
13399         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
13400         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
13401         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
13402         Likewise.
13403         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
13404         CONVERT_EXPR_P.
13405         (CONVERT_EXPR_P): Define.
13406         (CASE_CONVERT): Define.
13407
13408 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
13409
13410         PR middle-end/36117
13411         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
13412         (delete_unmarked_insns): When deleting a call, call
13413         delete_unreachable_blocks.
13414         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
13415         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
13416
13417 2008-05-08  Richard Guenther  <rguenther@suse.de>
13418
13419         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
13420         (-ftree-salias): Likewise.
13421         (salias-max-implicit-fields): Remove param documentation.
13422         (salias-max-array-elements): Likewise.
13423         * tree-pass.h (pass_create_structure_vars): Remove.
13424         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
13425         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
13426         * tree-ssa-alias.c (create_structure_vars): Remove.
13427         (gate_structure_vars): Likewise.
13428         (pass_create_structure_vars): Likewise.
13429         (gate_build_alias): Likewise.
13430         (pass_build_alias): Adjust to run always and dump the function.
13431         * common.opt (ftree-salias): Hide.
13432         * passes.c (init_optimization_passes): Remove
13433         pass_create_structure_vars, adjust comment.
13434         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
13435         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
13436         * opts.c (decode_options): Do not set flag_tree_salias.
13437         (common_handle_option): Add OPT_ftree_salias to the backward
13438         compatibility section.
13439
13440 2008-05-08  Richard Guenther  <rguenther@suse.de>
13441
13442         * tree-flow-inline.h (var_can_have_subvars): Move ...
13443         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
13444         * tree-flow.h (var_can_have_subvars): Remove.
13445         (push_fields_onto_fieldstack): Remove.
13446         (sort_fieldstack): Likewise.
13447         (struct fieldoff): Move ...
13448         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
13449         alias_set and base_for_components fields.
13450         (sort_fieldstack): Make static.
13451         (push_fields_onto_fieldstack): Likewise.  Remove code that
13452         handles anything but RECORD_TYPEs.  Remove alias_set and
13453         base_for_components handling.
13454         (create_variable_info_for): Adjust.
13455
13456 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
13457
13458         * common.opt (Wframe-larger-than=): Shorten the help message
13459         to one line.
13460         * doc/invoke.texi (Wframe-larger-than=): Add more description.
13461
13462 2008-05-08  Rafael Espíndola  <espindola@google.com>
13463
13464         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
13465         trap.
13466         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
13467         trap and that both operands are gimple values.
13468         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
13469         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
13470         is a fp operation.
13471
13472 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
13473
13474         * read-rtl.c (join_c_conditions): Return the first string if the
13475         two strings are equal.
13476
13477 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
13478
13479         * gensupport.h (pred_data): Add a "num_codes" field.
13480         (add_predicate_code): Declare.
13481         * gensupport.c (add_predicate_code): New function.
13482         (std_pred_table): Add an "allows_const_p" field.
13483         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
13484         Remove the (incomplete) list of such codes from the codes field.
13485         (init_predicate_table): Use add_predicate_code.  Add all
13486         RTX_CONST_OBJs if allows_const_p is true.
13487         * genrecog.c (process_define_predicate): Use add_predicate_code.
13488
13489 2008-05-08  David Daney  <ddaney@avtrex.com>
13490             Richard Sandiford  <rsandifo@nildram.co.uk>
13491
13492         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
13493         special case of constant zero operands.
13494         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
13495         old and new values.  Special case constant zero values.
13496         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
13497         fails.
13498         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
13499         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
13500
13501 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
13502
13503         PR target/36090
13504         * simplify-rtx.c (simplify_plus_minus): Create CONST of
13505         similar RTX_CONST_OBJ before CONST_INT.
13506
13507 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
13508
13509         * stmt.c (expand_stack_restore): Change sa mode if needed.
13510
13511 2008-05-08  Richard Guenther  <rguenther@suse.de>
13512
13513         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
13514         return type to bool.
13515         (ix86_sol10_return_in_memory): Likewise.
13516         (ix86_i386elf_return_in_memory): Likewise.
13517         (ix86_i386interix_return_in_memory): Likewise.
13518         * config/i386/i386.c (ix86_return_in_memory): Likewise.
13519         (ix86_sol10_return_in_memory): Likewise.
13520         (ix86_i386elf_return_in_memory): Likewise.
13521         (ix86_i386interix_return_in_memory): Likewise.
13522
13523 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
13524
13525         PR bootstrap/36180
13526         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
13527         fndecl argument.
13528         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
13529         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
13530         declared in front.
13531
13532 2008-05-08  Richard Guenther  <rguenther@suse.de>
13533
13534         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
13535         * tree-data-ref.h (struct dr_alias): Remove subvars field.
13536         (DR_SUBVARS): Remove.
13537         * tree-dfa.c (dump_subvars_for): Remove.
13538         (debug_subvars_for): Likewise.
13539         (dump_variable): Do not dump subvars.
13540         (remove_referenced_var): Do not remove subvars.
13541         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
13542         (lookup_subvars_for_var): Remove.
13543         (get_subvars_for_var): Likewise.
13544         (get_subvars_at): Likewise.
13545         (get_first_overlapping_subvar): Likewise.
13546         (overlap_subvar): Likewise.
13547         * tree-flow.h (subvar_t): Remove.
13548         (struct var_ann_d): Remove subvars field.
13549         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
13550         argument.  Remove special handling of SFTs.
13551         (compute_tag_properties): Likewise.
13552         (set_initial_properties): Likewise.
13553         (compute_call_clobbered): Likewise.
13554         (count_mem_refs): Likewise.
13555         (compute_memory_partitions): Likewise.
13556         (compute_flow_insensitive_aliasing): Likewise.
13557         (setup_pointers_and_addressables): Likewise.
13558         (new_type_alias): Likewise.
13559         (struct used_part): Remove.
13560         (used_portions): Likewise.
13561         (struct used_part_map): Likewise.
13562         (used_part_map_eq): Likewise.
13563         (used_part_map_hash): Likewise.
13564         (free_used_part_map): Likewise.
13565         (up_lookup): Likewise.
13566         (up_insert): Likewise.
13567         (get_or_create_used_part_for): Likewise.
13568         (create_sft): Likewise.
13569         (create_overlap_variables_for): Likewise.
13570         (find_used_portions): Likewise.
13571         (create_structure_vars): Likewise.
13572         * tree.def (STRUCT_FIELD_TAG): Remove.
13573         * tree.h (MTAG_P): Adjust.
13574         (struct tree_memory_tag): Remove base_for_components and
13575         unpartitionable flags.
13576         (struct tree_struct_field_tag): Remove.
13577         (SFT_PARENT_VAR): Likewise.
13578         (SFT_OFFSET): Likewise.
13579         (SFT_SIZE): Likewise.
13580         (SFT_NONADDRESSABLE_P): Likewise.
13581         (SFT_ALIAS_SET): Likewise.
13582         (SFT_UNPARTITIONABLE_P): Likewise.
13583         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
13584         (union tree_node): Remove sft field.
13585         * alias.c (get_alias_set): Remove special handling of SFTs.
13586         * print-tree.c (print_node): Remove handling of SFTs.
13587         * tree-dump.c (dequeue_and_dump): Likewise.
13588         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
13589         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
13590         * tree-predcom.c (set_alias_info): Do not set subvars.
13591         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
13592         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
13593         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
13594         (add_vars_for_offset): Remove.
13595         (add_virtual_operand): Remove special handling of SFTs.
13596         (add_call_clobber_ops): Likewise.
13597         (add_call_read_ops): Likewise.
13598         (get_asm_expr_operands): Likewise.
13599         (get_modify_stmt_operands): Likewise.
13600         (get_expr_operands): Likewise.
13601         (add_to_addressable_set): Likewise.
13602         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
13603         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
13604         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
13605         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
13606         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
13607         (tree_node_structure): Likewise.
13608         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
13609         handling of SFTs.
13610         (find_what_p_points_to): Likewise.
13611
13612 2008-05-08  Sa Liu  <saliu@de.ibm.com>
13613
13614         * config/spu/spu.md: Fixed subti3 pattern.
13615
13616 2008-05-08  Richard Guenther  <rguenther@suse.de>
13617
13618         PR middle-end/36154
13619         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
13620         sure to create a representative for trailing arrays for PTA.
13621
13622 2008-05-08  Richard Guenther  <rguenther@suse.de>
13623
13624         PR middle-end/36172
13625         * fold-const.c (operand_equal_p): Two objects which types
13626         differ in pointerness are not equal.
13627
13628 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
13629
13630         * calls.c (compute_argument_block_size): Add argument tree fndecl.
13631         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
13632         (emit_library_call_value_1): Add new variable fndecl initialized by
13633         NULL_TREE. It should be the decl type of orgfun, but this information
13634         seems not to be available here, so it uses the default calling abi.
13635         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
13636         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
13637         by TARGET_RETURN_IN_MEMORY.
13638         * config/i386/i386-interix.h: Likewise.
13639         * config/i386/i386.h: Likewise.
13640         * config/i386/i386elf.h: Likewise.
13641         * config/i386/ptx4-i.h: Likewise.
13642         * config/i386/sol2-10.h: Likewise.
13643         * config/i386/sysv4.h: Likewise.
13644         * config/i386/vx-common.h: Likewise.
13645         * config/cris/cris.h: Removed #if 0 clause.
13646         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
13647         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
13648         argument.
13649         (ix86_sol10_return_in_memory): Likewise.
13650         (ix86_i386elf_return_in_memory): New.
13651         (ix86_i386interix_return_in_memory): New.
13652         * config/mt/mt-protos.h (mt_return_in_memory): New.
13653         * config/mt/mt.c: Likewise.
13654         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
13655         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
13656         * config/bfin/bfin.h: Likewise.
13657         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
13658         argument.
13659         * config/bfin/bfin.c: Likewise.
13660         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
13661         * config/alpha/unicosmk.h: Likewise.
13662         * config/i386/cygming.h: Likewise.
13663         * config/iq2000/iq2000.h: Likewise.
13664         * config/mips/mips.h: Likewise.
13665         * config/mn10300/mn10300.h: Likewise.
13666         * config/rs6000/rs6000.h: Likewise.
13667         * config/score/score.h: Likewise.
13668         * config/spu/spu.h: Likewise.
13669         * config/v850/v850.h: Likewise.
13670         * defaults.h: Likewise.
13671         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
13672         * expr.c (emit_block_move): Adjust use of
13673         OUTGOING_REG_PARM_STACK_SPACE.
13674         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
13675         OUTGOING_REG_PARM_STACK_SPACE.
13676         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
13677
13678 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
13679
13680         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
13681         on OMP_RETURN for OMP_FOR.
13682
13683         PR debug/35896
13684         * dwarf2out.c (dw_expand_expr, common_check): Removed.
13685         (fortran_common): New function.
13686         (gen_variable_die): Call fortran_common instead of common_check,
13687         adjust for it returning tree instead of rtx.  Formatting.
13688
13689 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
13690
13691         PR rtl/7335
13692         PR rtl/33826
13693         * see.c (see_copy_insn): Copy new pure const attributes for new call.
13694         * c-decl.c (merge_decls): Ditto.
13695         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
13696         to RTL_CONST_OR_PURE_CALL_P.
13697         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
13698         Initialized DECL_LOOPING_CONST_PURE.
13699         (process_call_operands): Set tree_side_effects properly.
13700         * tree.h (TREE_READONLY_DECL_P): Removed.
13701         (DECL_IS_PURE): Renamed to DECL_PURE_P.
13702         (DECL_LOOPING_OR_CONST_P): New macro.
13703         (struct tree_function_decl): Added looping_const_or_pure_p.
13704         (ECF_*) Renumbered.
13705         (ECF_LOOPING_OR_CONST_P): New macro.
13706         * rtlanal.c (pure_const_p): Removed.
13707         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
13708         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
13709         to RTL_CONST_CALL_P.
13710         * ipa-pure-const.c (pure_const_state_e): Added looping field.
13711         (check_decl, check_tree, check_call, scan_function): Initialize
13712         looping.
13713         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
13714         (static_execute): Set looping true for recursive functions.
13715         Undo setting state to IPA_NEITHER for recursive functions.
13716         * cse.c (cse_insn):
13717         * ifcvt.c (noce_can_store_speculate_p): Changed
13718         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
13719         RTL_CONST_OR_PURE_CALL_P.
13720         * dse.c (scan_insn): Ditto.
13721         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
13722         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
13723         RTL_CONST_OR_PURE_CALL_P.
13724         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
13725         pure_call_p to RTL_CONST_CALL_P.
13726         * gimplify.c (gimplify_call_expr): Clear side effects for
13727         non-looping pure and constant calls.
13728         * calls.c (emit_call_1): Set rtl flags from ecf flags.
13729         (flags_from_decl_or_type): Set ecf flags from decl flags.
13730         (initialize_argument_information): Turn off
13731         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
13732         Change const to pure if callee_copies is true rather than just
13733         turning off const.
13734         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
13735         way of marking pure calls.
13736         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
13737         Remove hack that was supposed to fix pr7335 and remove old
13738         way of marking pure calls.
13739         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
13740         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
13741         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
13742         RTL_CONST_OR_PURE_CALL_P.
13743         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
13744         * loop-invariant.c (find_exits, find_invariant_bb): Changed
13745         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
13746         * sched-deps.c (schedule_analyze): Ditto.
13747         * rtl.h (struct rtx_def): Use call field, unchanging field, and
13748         return_val field of calls to represent pure and const function info.
13749         (CONST_OR_PURE_CALL_P): Deleted macro.
13750         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
13751         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
13752         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
13753         TREE_READONLY.
13754         * tree-optimize.c (execute_fixup_cfg): Added test for
13755         ECF_LOOPING_CONST_OR_PURE.
13756         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
13757         DECL_PURE_P.
13758         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
13759         effects for looping pure or const calls.
13760         (verify_gimple_expr): Added verification code.
13761         * config/alpha/alpha.c (alpha_legitimize_address,
13762         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
13763         RTL_CONST_CALL_P.
13764         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
13765         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
13766         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
13767         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
13768         RTL_CONST_OR_PURE_CALL_P.
13769         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
13770         and const calls to be deleted.
13771
13772 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
13773
13774         PR target/35714
13775         * config/i386/mmx.md (mmx_subv2sf3): New expander.
13776         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
13777         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
13778         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13779         to handle nonimmediate operands.
13780         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
13781         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
13782         to handle nonimmediate operands.
13783         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
13784         (mmx_pmulhrwv4hi3): New expander.  Use
13785         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13786         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
13787         (sse2_umulv1siv1di3): New expander.  Use
13788         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13789         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
13790         (mmx_eq<mode>3): New expander.  Use
13791         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13792         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
13793         (mmx_uavgv8qi3): New expander.  Use
13794         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13795         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
13796         (mmx_uavgv4hi3): New expander.  Use
13797         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13798
13799         * config/i386/sse.md
13800         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
13801         to handle nonimmediate operands.
13802         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
13803         to handle nonimmediate operands.
13804         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
13805         to handle nonimmediate operands.
13806         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
13807         to handle nonimmediate operands.
13808         (sse2_unpckhpd_exp): New expander.  Use
13809         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13810         (sse2_unpcklpd_exp): New expander.  Use
13811         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13812         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
13813         to handle nonimmediate operands.
13814         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
13815         to handle nonimmediate operands.
13816         (*sse2_<plusminus_insn><mode>3): Rename from
13817         sse2_<plusminus_insn><mode>3 insn pattern.
13818         (sse2_<plusminus_insn><mode>3): New expander.  Use
13819         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13820         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
13821         (sse2_umulv2siv2di3): New expander.  Use
13822         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13823         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
13824         (sse4_1_mulv2siv2di3): New expander.  Use
13825         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13826         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
13827         (sse2_pmaddwd): New expander.  Use
13828         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13829         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
13830         (sse2_eq<mode>3): New expander.  Use
13831         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13832         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
13833         (sse4_1_eqv2di3): New expander.  Use
13834         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13835         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
13836         (sse2_uavgv16qi3): New expander.  Use
13837         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13838         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
13839         (sse2_uavgv16qi3): New expander.  Use
13840         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13841         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
13842         (sse2_uavgv8hi3): New expander.  Use
13843         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13844         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
13845         (ssse3_pmulhrswv8hi3): New expander.  Use
13846         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13847         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
13848         (ssse3_pmulhrswv4hi3): New expander.  Use
13849         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13850
13851         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
13852         (<sse>_vmmul<mode>3): Ditto.
13853         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
13854         (divv2df3): Ditto.
13855         (ssse3_pmaddubsw128): Use register_operand for operand 1.
13856         (ssse3_pmaddubsw): Ditto.
13857
13858         * config/i386/i386.c (struct_builtin_description)
13859         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
13860         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
13861         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
13862         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
13863         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
13864         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
13865         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
13866         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
13867         (ix86_fixup_binary_operands): Assert that src1
13868         and src2 must have the same mode when swapped.
13869         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
13870         and ix86_binary_operator_ok.  Do not force operands in registers
13871         when optimizing.
13872
13873 2008-05-07  Jan Hubicka  <jh@suse.cz>
13874
13875         * cgraph.c (dump_cgraph_node): Update.
13876         * cgraph.h (cgraph_local_info): Break out inline summary.
13877         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
13878         hook.
13879         * ipa-inline (inline_summary): New accestor function.
13880         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
13881         cgraph_decide_inlining, compute_inline_parameters): Update.
13882         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
13883
13884 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13885
13886         Cleanup ColdFire scheduling support and add V4 pipeline model.
13887
13888         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
13889         (define_attr cpu): Add cfv4 value.
13890         (define_attr type, define_attr type1): Merge into a single 'type'
13891         attribute.  Update all uses.
13892         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
13893         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
13894         Update all uses.
13895         (define_attr opx_mem, define_attr opy_mem): Remove.
13896         (define_attr op_mem): Clean up, update comment.
13897         (define_attr size): Use specific values instead of general int.
13898         (define_attr guess, define_attr split): Remove.  Update all uses.
13899         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
13900         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
13901         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
13902         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
13903         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
13904         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
13905         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
13906         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
13907         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
13908         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
13909         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
13910         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
13911         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
13912         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
13913         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
13914         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
13915         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
13916         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
13917         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
13918         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
13919         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
13920         Update or set attributes.
13921         (stack_tie): New fake instruction.
13922
13923         * config/m68k/m68k.h (TUNE_CFV4): New macro.
13924         (m68k_sched_attr_size): Update declaration.
13925         (m68k_sched_attr_type2): Remove.
13926         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
13927         Declare new bypass predicates.
13928
13929         * config/m68k/m68k.c (m68k_sched_issue_rate,
13930         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
13931         implementations.
13932         (TARGET_SCHED_ISSUE_RATE,
13933         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
13934         (override_options): Handle scheduling for ColdFire V4 core.
13935         (m68k_expand_prologue): Emit stack_tie.
13936         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
13937         'OP_TYPE_FPN'.  Update all uses.
13938         (sched_guess_p): Remove.
13939         (sched_address_type): Handle symbolic addresses.
13940         (sched_get_operand): New static function.
13941         (sched_operand_type): Merge into sched_attr_op_type.
13942         (sched_attr_op_type): Handle FP registers, handle quick constants,
13943         update.
13944         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
13945         (m68k_sched_attr_size): Update.  Move logic to ...
13946         (sched_get_attr_size_int): New static function.
13947         (sched_get_opxy_mem_type): New static function.
13948         (m68k_sched_attr_op_mem): Update.
13949         (m68k_sched_attr_type2): Remove.
13950         (sched_cfv4_bypass_data): New static variable.
13951         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
13952         (m68k_sched_issue_rate): Implement scheduler hook.
13953         (struct _sched_ib: enabled_p): New field.
13954         (m68k_sched_variable_issue): Update.  Handle V4.
13955         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
13956         sched_dump_class_func_t, sched_dump_split_class,
13957         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
13958         sched_dump_dfa_class, m68k_sched_dump): Remove.
13959         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
13960         hook.
13961         (m68k_sched_init_global): Remove statisctics dumping, introduce
13962         sanity check that all instructions have pipeline reservations.  Handle
13963         ColdFire V4 core.
13964         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
13965         Handle ColdFire V4 core.
13966         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
13967         New static functions.
13968         (m68k_sched_address_bypass_p): New bypass predicate.
13969         (sched_get_indexed_address_scale): New static function.
13970         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
13971
13972         * cf.md: Update comments.
13973         (define_attr type2): Remove.  Use 'type' attribute instead.
13974         Update all uses.
13975         (cf_ib): Rename to cfv123_ib.  Update all uses.
13976         (cf_oep): Rename to cfv123_oep.  Update all uses.
13977         (cf_chr): Rename to cfv123_chr.  Update all uses.
13978         (cf_mem): Rename to cfv123_mem.  Update all uses.
13979         (cf_mac): Move to more appropriate place.
13980         (cfv123_guess): New automaton and cpu_unit.
13981         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
13982         Update uses of 'size' attribute.  Handle before reload scheduling.
13983         (cfv123_guess): New dummy reservation for unhandled instructions.
13984         (cfv4_*): Pipeline description of ColdFire V4 core.
13985         (ignore): New reservation to handle 'ignore' type.
13986
13987 2008-05-07  Ian Lance Taylor  <iant@google.com>
13988
13989         PR middle-end/36013
13990         * gimplify.c (find_single_pointer_decl_1): Don't look through
13991         indirections.
13992         (find_single_pointer_decl): Adjust comments.
13993
13994 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
13995
13996         PR middle-end/36137
13997         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
13998         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
13999
14000         PR middle-end/36106
14001         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
14002         integral type rather than floating point, then VIEW_CONVERT_EXPR
14003         to the floating point type.
14004
14005 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
14006
14007         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
14008         TFmode op0 to register.
14009
14010 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
14011
14012         * c-decl.c (grokdeclarator): Comment typo.
14013
14014 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
14015
14016         * tree-flow.h: Remove prototype for computed_goto_p.
14017         * tree-cfg.c (computed_goto_p): Make static.
14018
14019 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
14020
14021         PR target/35657
14022         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
14023         (contains_aligned_value_p): This.  Handle _Decimal128.
14024         (ix86_function_arg_boundary): Only align _Decimal128 to its
14025         natural boundary and handle it properly.
14026
14027 2008-05-06  Martin Jambor  <mjambor@suse.cz>
14028
14029         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
14030         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
14031         (ipcp_method_set_orig_node): Removed.
14032         (ipcp_cval_get_cvalue_type): Removed.
14033         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
14034         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
14035         (ipcp_cval_set_cvalue_type): Removed.
14036         (ipcp_cval_get_cvalue): Removed.
14037         (ipcp_cval_set_cvalue): Removed.
14038         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
14039         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
14040         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
14041         (ipcp_cval_meet): Renamed to ipa_lattice_meet
14042         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
14043         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
14044         (ipcp_get_ith_lattice): Changed parameters.
14045         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
14046         (ipcp_lattice_from_jfunc): Changed parameters.
14047         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
14048         (ipcp_method_cval_print): Added temporary variable info.
14049         (ipcp_redirect): Removed already unused local variable caller.
14050         (ipcp_redirect): New temporary variable orig_callee_info
14051         (ipcp_redirect): Removed newly unused local variable callee.
14052         (ipcp_redirect): Removed (a bit confusing) local variable type.
14053         (ipcp_insert_stage): Added local variable info.
14054         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
14055         renamed too
14056         (ipcp_formal_create): Removed.
14057         (ipcp_method_cval_set): Removed.
14058         (ipcp_propagate_stage): Renamed lattice variables.
14059         (ipcp_method_cval_set_cvalue_type): Removed.
14060         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
14061         (ipcp_print_all_lattices): Changed printed strings to refer to
14062         lattices rather than cvals.
14063         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
14064         (ipcp_propagate_const): Changed formal parameters.
14065         (build_const_val): Changed formal parameters.
14066         (ipcp_insert_stage): Removed useless variable cvalue
14067         (build_const_val): Changed formal parameters.
14068         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
14069         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
14070         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
14071         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
14072         (ipcp_print_func_profile_counts): Changed string from "method" to
14073         "function"
14074         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
14075         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
14076         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
14077         (ipcp_structures_print): Renamed to ipcp_print_all_structures
14078         (ipcp_profile_print): Renamed to ipcp_print_profile_data
14079         (ipcp_lat_is_const): Changed parameters and made inline.
14080         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
14081         (ipcp_redirect): Renamed to ipcp_need_redirect_p
14082         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
14083         the predicate condition directly
14084         (ipcp_propagate_stage): Added local variable args. Removed local
14085         variable callee.  (Both are mere code simplifications.)
14086         (ipcp_method_dont_insert_const): Renamed to
14087         ipcp_node_not_modifiable_p.
14088         (ipcp_node_not_modifiable_p): Made inline.
14089         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
14090         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
14091         (ipcp_print_all_lattices): Removed variable cvalue
14092         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
14093         Updated comments.
14094
14095 2008-05-06  Olivier Hainque  <hainque@adacore.com>
14096
14097         * tree-sra.c (try_instantiate_multiple_fields): Early return
14098         if field has POINTER_TYPE.
14099
14100 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
14101
14102         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
14103         by using 'q' specifier for instruction.
14104         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
14105
14106 2008-05-06  Anatoly Sokolov <aesok@post.ru>
14107
14108         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
14109         Change mode of zero_extract from QImode to HImode.
14110         (sign bit tests peepholes): (Ditto.).
14111
14112 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
14113
14114         * config/i386/mmx.md: Remove double backslashes from asm templates.
14115         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
14116         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
14117         to handle nonimmediate operands.
14118         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
14119         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
14120         to handle nonimmediate operands.
14121         (*mmx_<code>v2sf3_finite): New insn pattern.
14122         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
14123         (mmx_<code>v2sf3): New expander.  Use
14124         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14125         (mmx_<plusminus_insn><mode>3): New expander.  Use
14126         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14127         (*mmx_<plusminus_insn><mode>3): New insn pattern.
14128         (mmx_add<mode>3): Removed.
14129         (mmx_ssadd<mode>3): Ditto.
14130         (mmx_usadd<mode>3): Ditto.
14131         (mmx_sub<mode>3): Ditto.
14132         (mmx_sssub<mode>3): Ditto.
14133         (mmx_ussub<mode>3): Ditto.
14134         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
14135         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
14136         to handle nonimmediate operands.
14137         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
14138         insn pattern.
14139         (mmx_smulv4hi3_highpart): New expander.  Use
14140         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14141         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
14142         insn pattern.
14143         (mmx_umulv4hi3_highpart): New expander.  Use
14144         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14145         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
14146         (mmx_<code>v4hi3): New expander.  Use
14147         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14148         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
14149         (mmx_<code>v8qi3): New expander.  Use
14150         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14151         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
14152         (mmx_<code><mode>3): New expander.  Use
14153         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
14154
14155 2008-05-05  Jan Hubicka  <jh@suse.cz>
14156
14157         PR tree-optimization/36118
14158         * passes.c (pass_init_dump_file): Fix dump header.
14159
14160 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14161
14162         PR middle-end/36141
14163         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
14164         VCE for function decls.
14165
14166 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
14167
14168         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
14169
14170 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
14171
14172         * config/i386/i386.md (sat_plusminus): New.
14173         (plusminus_insn): Likewise.
14174         (plusminus_mnemonic): Likewise.
14175         (addsub): Removed.
14176         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
14177         (*<addsub><mode>3_cc_overflow): Renamed to ...
14178         (*<plusminus_insn><mode>3_cc_overflow): This.
14179         (*<addsub>si3_zext_cc_overflow): Renamed to ...
14180         (*<plusminus_insn>si3_zext_cc_overflow): This.
14181
14182         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
14183         (<plusminus_insn><mode>3): This.
14184         (*<addsub><mode>3): Renamed to ...
14185         (*<plusminus_insn><mode>3): This.
14186         (<sse>_vm<addsub><mode>3): Renamed to ...
14187         (<sse>_vm<plusminus_insn><mode>3): This.
14188         (sse3_h<addsub>v4sf3): Renamed to ...
14189         (sse3_h<plusminus_insn>v4sf3): This.
14190         (sse3_h<addsub>v2df3): Renamed to ...
14191         (sse3_h<plusminus_insn>v2df3): This.
14192         (<plusminus_insn><mode>3): New.
14193         (*<plusminus_insn><mode>3): Likewise.
14194         (sse2_<plusminus_insn><mode>3): Likewise.
14195         (add<mode>): Removed.
14196         (*add<mode>3): Likewise.
14197         (sse2_ssadd<mode>3): Likewise.
14198         (sse2_usadd<mode>3): Likewise.
14199         (sub<mode>3): Likewise.
14200         (*sub<mode>3): Likewise.
14201         (sse2_sssub<mode>3): Likewise.
14202         (sse2_ussub<mode>3): Likewise.
14203
14204 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
14205
14206         * gthr-single.h: Add in required interface elements as per gthr.h.
14207         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
14208         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
14209         Generalize UNUSED macro.
14210         (__gthread_once): Add.
14211         (__gthread_key_create): Add.
14212         (__gthread_key_delete): Add.
14213         (__gthread_getspecific): Add.
14214         (__gthread_setspecific): Add.
14215
14216 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
14217
14218         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
14219         the same size types for the indirect reference on the rhs, then
14220         create a VCE.
14221
14222 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
14223
14224         * config/i386/i386.md
14225         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
14226         one insn template instead of template series.
14227         (*xordi_1_rex64): Ditto.
14228         (*xordi_2_rex64): Ditto.
14229
14230 2008-05-05  Ira Rosen  <irar@il.ibm.com>
14231
14232         PR tree-optimization/36119
14233         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
14234         in case of SLP.
14235
14236 2008-06-04  Jan Hubicka  <jh@suse.cz>
14237
14238         tree-optimization/36100
14239         * tree-pass.h (pass_O0_always_inline): Declare.
14240         * ipa-inline.c (inline_transform): Remove dead code.
14241         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
14242         pass_O0_always_inline): New.
14243         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
14244
14245 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
14246
14247         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
14248         mnemonic in this_param move for TARGET_64BIT.
14249
14250 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
14251
14252         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
14253         (*strmovsi_rex_1): Ditto.
14254         (*strsetsi_1): Ditto.
14255         (*strsetsi_rex_1): Ditto.
14256
14257         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
14258         adddicc expanders using SWI mode iterator.
14259
14260 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
14261
14262         PR target/36121
14263         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
14264         argument handling.
14265
14266 2008-05-04  David S. Miller  <davem@davemloft.net>
14267
14268         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
14269         (sparc*-*-linux*): Use linux.h in tm_file.
14270         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
14271         compiler defaulting to 32-bit.
14272         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
14273         no longer needed.
14274         * config/sparc/linux.h: Remove definitions now obtained
14275         properly from linux.h
14276         * config/sparc/linux64.h: Likewise.
14277         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
14278         don't want this setting for 32-bit builds in a biarch compiler.
14279         * doc/install.texi: Add sparc-linux to list of targets
14280         supporting --enable-targets=all.
14281
14282 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
14283
14284         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
14285
14286 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
14287
14288         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
14289         after V4SI_FTYPE_V8HI.
14290         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
14291         case V4SI_FTYPE_V2DF.
14292
14293 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
14294
14295         * doc/invoke.texi (max-flow-memory-locations): Removed.
14296         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
14297
14298 2008-05-03  Richard Guenther  <rguenther@suse.de>
14299
14300         PR middle-end/34973
14301         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
14302
14303 2008-05-02  David S. Miller  <davem@davemloft.net>
14304
14305         * config.gcc (need_64bit_hwint): Document libcpp dependency.
14306
14307 2008-05-02  Simon Baldwin <simonb@google.com>
14308
14309         PR bootstrap/36108
14310         * c-common.h (warn_array_subscript_range): Removed.
14311         * c-common.c (warn_array_subscript_range): Ditto.
14312         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
14313         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
14314
14315 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
14316
14317         * config/i386/i386.c (ix86_special_builtin_type): New.
14318         (bdesc_special_args): Likewise.
14319         (ix86_expand_special_args_builtin): Likewise.
14320         (ix86_init_mmx_sse_builtins): Updated.
14321         (ix86_expand_builtin): Updated.
14322         (ix86_expand_store_builtin): Removed.
14323         (ix86_expand_unop_builtin): Likewise.
14324
14325         * config/i386/mm3dnow.h (__v2sf): Moved to ...
14326         * config/i386/mmintrin.h (__v2sf): Here.
14327
14328         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
14329         const __v2sf.
14330         (_mm_loadl_pi): Likewise.
14331         (_mm_storeh_pi): Replace __v2si with __v2sf.
14332         (_mm_storel_pi): Likewise.
14333
14334         * doc/extend.texi: Correct __builtin_ia32_loadhps,
14335         __builtin_ia32_loadlps, __builtin_ia32_storehps,
14336         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
14337         __builtin_ia32_loadlpd.
14338
14339 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
14340
14341         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
14342         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
14343         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
14344         (ix86_init_mmx_sse_builtins): Updated.
14345         (ix86_expand_args_builtin): Likewise.
14346         (ix86_expand_builtin): Likewise.
14347         (ix86_expand_unop1_builtin): Renamed to ...
14348         (ix86_expand_unop_vec_merge_builtin): This.
14349
14350 2008-05-01  Jan Hubicka  <jh@suse.cz>
14351
14352         PR bootstrap/36100
14353         * ipa-inline.c (inline_generate_summary): Make static.
14354         (inline_transform): Do not call inlining at -O0; make static.
14355         * passes.c (execute_todo): Add sanity check.
14356         (execute_one_ipa_transform_pass): Execute proper flags.
14357
14358 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
14359
14360         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
14361         (DECL_NONADDRESSABLE_P): Likewise.
14362         * alias.c (record_component_aliases): Fix comment.
14363
14364 2008-05-01  Simon Baldwin <simonb@google.com>
14365
14366         * c-common.h (warn_array_subscript_range): New function.
14367         * c-common.c (warn_array_subscript_range): Ditto.
14368         * tree-vrp.c (check_array_ref): Corrected code to agree with
14369         comment, ignoring only arrays of size 0 or size 1.
14370         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
14371
14372 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14373
14374         * config/i386/i386.c (ix86_builtin_type): Replace
14375         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
14376         (bdesc_args): Updated.
14377         (ix86_init_mmx_sse_builtins): Likewise.
14378         (ix86_expand_args_builtin): Likewise.
14379
14380         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
14381         with __v1di.
14382
14383         * doc/extend.texi: Correct __builtin_ia32_palignr.
14384
14385 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14386
14387         PR target/36095
14388         * config/i386/i386.c (bdesc_crc32): Removed.
14389         (ix86_expand_crc32): Likewise.
14390         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
14391         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
14392         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
14393         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
14394         UINT_FTYPE_UINT_UCHAR.
14395         (bdesc_args): Updated. Add crc32 builtins.
14396         (ix86_init_mmx_sse_builtins): Updated.
14397         (ix86_expand_args_builtin): Updated to support subreg.
14398
14399         * doc/extend.texi: Correct __builtin_ia32_crc32di.
14400
14401 2008-05-01  Jan Hubicka  <jh@suse.cz>
14402
14403         * tree-pass.h (opt_pass): Add IPA_PASS.
14404         (varpool_node, cgraph_node): Forward declare.
14405         (ipa_opt_pass): Define.
14406         (pass_ipa_inline): Turn into ipa_opt_pass.
14407         (pass_apply_inline): Remove.
14408         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
14409         (apply_inline): Turn into ....
14410         (inline_transform): ... this one.
14411         (inline_generate_summary): New function.
14412         (pass_apply_inline): Remove.
14413         * function.h (ipa_opt_pass): Forward declare structure; typedef;
14414         vector.
14415         (struct function): Add ipa_transforms_to_apply.
14416         * passes.c (register_one_dump_file): Work on IPA_PASS.
14417         (init_optimization_passes): Remove pass_inline_parameters and
14418         pass_apply_inline.
14419         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
14420         (execute_one_pass) ... here; apply transforms when possible.
14421         (add_ipa_transform_pass, execute_ipa_summary_asses,
14422         execute_one_ipa_transform_pass): New.
14423         (execute_ipa_pass_list): Update for IPA_PASS type.
14424
14425 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14426
14427         * config/i386/i386.c (ix86_builtin_type): Add
14428         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
14429         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
14430         (bdesc_args): Add SSE4a builtins.
14431         (ix86_init_mmx_sse_builtins): Updated.
14432         (ix86_expand_args_builtin): Likewise.
14433         (ix86_expand_builtin): Likewise.
14434
14435 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14436
14437         * config/i386/i386.c (ix86_builtin_type): Add
14438         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
14439         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
14440         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
14441         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
14442         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
14443         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
14444         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
14445         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
14446         and DI_FTYPE_DI_DI_INT.
14447         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
14448         (ix86_init_mmx_sse_builtins): Updated.
14449         (ix86_expand_args_builtin): Likewise.
14450         (ix86_expand_builtin): Likewise.
14451         (ix86_expand_binop_imm_builtin): Removed.
14452
14453         * doc/extend.texi: Correct __builtin_ia32_palignr128.
14454
14455 2008-04-30  Richard Guenther  <rguenther@suse.de>
14456
14457         PR tree-optimization/32921
14458         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
14459
14460 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
14461
14462         * config/arm/arm.c (arm_unwind_emit): Use
14463         crtl->all_throwers_are_sibcalls instead of
14464         cfun->all_throwers_are_sibcalls.
14465         (arm_output_fn_unwind): Likewise.
14466         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
14467         instead of cfun->uses_pic_offset_table.
14468         (frv_expand_prologue): Likewise.
14469         (frv_frame_pointer_required): Likewise.
14470         (frv_expand_fdpic_call): Likewise.
14471         (frv_emit_movsi): Likewise.
14472         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
14473         cfun->returns_pcc_struct instead of
14474         current_function_returns_pcc_struct.
14475         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
14476         instead of cfun->calls_eh_return.
14477         (m32c_pushm_popm): Likewise.
14478         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
14479         "extern" declaration.
14480
14481 2008-04-30  Richard Guenther  <rguenther@suse.de>
14482
14483         PR tree-optimization/21636
14484         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
14485         constant address.
14486         (evaluate_stmt): Print the likely value.
14487         (ccp_visit_stmt): Avoid excessive vertical spacing.
14488
14489 2008-04-30  Rafael Espíndola  <espindola@google.com>
14490
14491         * builtins.c (fold_call_expr): Return realret.
14492         * tree-ssa-threadedge.c
14493         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
14494         __builtin_object_size.
14495
14496 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
14497
14498         * gcc.c (wrapper_string): New variable.
14499         (insert_wrapper): New function.
14500         (execute): New option -wrapper.
14501         * doc/invoke.texi (Overall Options): New driver option -wrapper.
14502
14503 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
14504
14505         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
14506         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
14507         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
14508         from...
14509         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
14510         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
14511         config/rs6000/e500crtres64gprctr.asm,
14512         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
14513         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
14514         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
14515         config/rs6000/e500crtsav64gprctr.asm,
14516         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
14517         config/rs6000/e500crtsavg64gprctr.asm: New files.
14518         * config/rs6000/t-ppccomm: Add build rules for new files.
14519         (LIB2FUNCS_STATIC_EXTRA): Add new files.
14520         * config/rs6000/t-netbsd: Add build rules for new files.
14521         (LIB2FUNCS_STATIC_EXTRA): New variable.
14522         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
14523         (CRTSAVRES_DEFAULT_SPEC): Likewise.
14524         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
14525
14526 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
14527
14528         * config/i386/i386.c (ix86_builtin_type): Add
14529         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
14530         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
14531         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
14532         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
14533         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
14534         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
14535         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
14536         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
14537         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
14538         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
14539         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
14540         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
14541         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
14542         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
14543         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
14544         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
14545         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
14546         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
14547         V1DI_FTYPE_V2SI_V2SI.
14548         (bdesc_2arg): Moved to ...
14549         (bdesc_args): Here.
14550         (ix86_init_mmx_sse_builtins): Updated.
14551         (ix86_expand_args_builtin): Updated.  Take a pointer
14552         to const struct builtin_description.  Handle comparison
14553         builtin functions.
14554         (ix86_expand_sse_compare): Take a new argument for swapping operands.
14555         (ix86_expand_builtin): Updated.
14556
14557         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
14558         (ssse3_pmaddubsw128): This.
14559         (ssse3_pmaddubswv4hi3): Renamed to ...
14560         (ssse3_pmaddubsw): This.
14561
14562         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
14563         (__builtin_ia32_packssdw128): Likewise.
14564         (__builtin_ia32_packuswb128): Likewise.
14565         (__builtin_ia32_pmaddubsw): Likewise.
14566         (__builtin_ia32_pmaddubsw128): Likewise.
14567
14568 2008-04-30  Richard Guenther  <rguenther@suse.de>
14569
14570         PR tree-optimization/14847
14571         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
14572         (recognize_bits_test): Use it.
14573         (recognize_single_bit_test): Likewise.
14574
14575 2008-04-30  Martin Jambor  <mjambor@suse.cz>
14576
14577         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
14578         instead of setting number of formal parameters to zero.
14579         (ipcp_init_stage): Do not set the number of actual parameters to zero
14580         either.
14581         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
14582         which are called with variable number of arguments.
14583         (ipcp_insert_stage): Explicitely skipping all nodes which are
14584         called with variable number of arguments.
14585         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
14586         number of parameters.
14587
14588         * ipa-prop.h (struct ipa_node_params): Added flag
14589         called_with_var_arguments
14590         (ipa_set_param_count): Added.  Changed sole setter to use it.
14591         (ipa_get_param_count): Added.  All readers of param_count
14592         converted to use it instead.
14593         (ipa_set_called_with_variable_arg): Added.
14594         (ipa_is_called_with_var_arguments): Added.
14595         (ipa_get_ith_param): Added.  All readers of param_decls converted
14596         to use it instead.
14597         (ipa_set_cs_argument_count): Added, sole writer to argument_count
14598         changed to use it.
14599         (ipa_get_cs_argument_count): Added, all readers of argument_count
14600         changed to cal it.
14601         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
14602         to use it.
14603
14604         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
14605         (struct ipcp_lattice): Renamed cval_type to type
14606         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
14607
14608         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
14609         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
14610         (ipcp_insert_stage): Changed the type of variable cvalue to tree
14611         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
14612         (build_const_val): Changed the type of parameter cvalue to tree
14613         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
14614         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
14615
14616         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
14617         constant
14618
14619         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
14620         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
14621         (ipa_add_method): Renamed to ipa_push_func_to_list
14622         (ipa_remove_method): Renamed to ipa_pop_func_from_list
14623         (ipa_callsite_param_count): Removed.
14624         (ipa_callsite_param_count_set): Removed.
14625         (ipa_callsite_param): Removed.
14626         (ipa_callsite_callee): Removed.
14627         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
14628         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
14629         (ipa_method_formal_count): Removed.
14630         (ipa_method_formal_count_set): Removed.
14631         (ipa_method_get_tree): Removed.
14632         (ipa_method_tree_map_create): Removed.
14633         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
14634         (ipa_create_param_decls_array): Creates the array itself
14635         (ipa_create_param_decls_array): Temporary variable info instead of
14636         a few dereferences.
14637         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
14638         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
14639         (get_type): Removed.
14640         (ipa_jf_get_info_type): Removed.
14641         (ipa_node_create): Renamed to ipa_create_node_params
14642         (ipa_free): Renamed to ipa_free_all_node_params
14643         (ipa_nodes_create): Renamed to ipa_create_all_node_params
14644         (ipa_edges_create): Renamed to ipa_create_all_edge_args
14645         (ipa_edges_free): Renamed to ipa_free_all_edge_args
14646         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
14647         (ipa_free_all_node_params): Deallocation to jump_functions moved to
14648         ipa_free_all_edge_args
14649         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
14650         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
14651         (ipa_create_methodlist_node): Removed.
14652         (ipa_methodlist_method): Removed.
14653         (ipa_methodlist_method_set): Removed.
14654         (ipa_methodlist_next_method): Removed.
14655         (ipa_methodlist_next_method_set): Removed.
14656         (ipa_method_is_modified): Removed.
14657         (ipa_method_modify_create): Removed.
14658         (ipa_method_modify_init): Temporary variable info instead of a few
14659         dereferences.
14660         (ipa_detect_param_modifications): Temporary variable info instead of
14661         a few dereferences.
14662         (ipa_compute_jump_functions): Temporary variable info instead of
14663         a few dereferences.
14664         (ipa_method_modify_set): Removed.
14665         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
14666         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
14667         than craph_node as the first parameter.
14668         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
14669         (ipa_method_modify_init): Removed.
14670         (ipa_compute_jump_functions): Added a temp variable instead of
14671         repeatadly dereferencing the cgraph_edge.aux pointer
14672         (ipa_callsite_param_set_type): Removed.
14673         (ipa_compute_jump_functions): i renamed to index and moved to
14674         an inner block
14675         (ipa_callsite_param_set_info_type_formal): Removed.
14676         (ipa_callsite_param_set_info_type): Removed.
14677         (ipa_callsite_param_map_create): Removed.
14678         (ipa_callsite_tree): Removed.
14679         (ipa_callsite_caller): Removed.
14680         (ipa_pop_func_from_list): return_method removed to return_func
14681
14682         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
14683         prefixed all values with IPA_. Changed all users.
14684         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
14685         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
14686         and FORMAL_IPATYPE IPA_PASS_THROUGH.
14687         (union parameter_info): Renamed to jump_func_value.
14688         (union jump_func_value): Renamed value to constant
14689         (struct ipa_jump_func): Renamed info_type to value
14690         (struct ipa_node): Renamed to ipa_node_params
14691         (struct ipa_node_params): Renamed ipa_arg_num to param_count
14692         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
14693         (struct ipa_node_params): Renamed ipa_mod to modified_flags
14694         (struct ipa_edge): Renamed to ipa_edge_args
14695         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
14696         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
14697         (struct ipa_methodlist): Renamed to ipa_func_list
14698         (struct ipa_func_list): method_p renamed to node, next_method
14699         renamed to next
14700         (ipa_methodlist_p): Removed, switched all users to struct pointer
14701         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
14702
14703 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
14704
14705         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
14706         (rs6000_emit_epilogue): Use backchain to restore only when we
14707         have a large frame.  Make use of frame pointer to restore if we
14708         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
14709
14710 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
14711
14712         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
14713         Add mode to zero_extract.
14714         (sign bit tests peepholes): (Ditto.).
14715
14716 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
14717
14718         * config/i386/i386.c (ix86_builtins): Replace Prescott New
14719         Instructions in comments with SSE3.
14720         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
14721         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
14722         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
14723         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
14724         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
14725         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
14726         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
14727         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
14728         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
14729         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
14730         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
14731         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
14732         (bdesc_sse_args): Renamed to ...
14733         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
14734         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
14735         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
14736         IX86_BUILTIN_FABSQ.
14737         (bdesc_1arg): Moved to ...
14738         (bdesc_args): Here.
14739         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
14740         Instructions in comments with SSE3.
14741         (ix86_expand_sse_operands_builtin): Renamed to ...
14742         (ix86_expand_args_builtin): This.  Updated.
14743         (ix86_expand_unop1_builtin): Update comments.
14744         (ix86_expand_builtin): Updated.
14745
14746 2008-04-29  Richard Guenther  <rguenther@suse.de>
14747
14748         PR tree-optimization/36078
14749         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
14750         Update virtual SSA form after cleaning up the CFG.
14751
14752 2008-04-29  Richard Guenther  <rguenther@suse.de>
14753
14754         PR middle-end/15255
14755         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
14756
14757 2008-04-29  Richard Guenther  <rguenther@suse.de>
14758
14759         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
14760         (compute_may_aliases): Do not call finalize_ref_all_pointers.
14761         (compute_flow_insensitive_aliasing): Do not treat
14762         PTR_IS_REF_ALL pointers special.
14763         (get_smt_for): Likewise.
14764         (may_alias_p): Re-structure.
14765         (is_escape_site): A ref-all pointer conversion is not an escape site.
14766         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
14767         PTR_IS_REF_ALL pointers special.
14768         * tree-ssa-structalias.h (struct alias_info): Remove
14769         ref_all_symbol_mem_tag field.
14770         (PTR_IS_REF_ALL): Remove.
14771
14772 2008-04-29  Richard Guenther  <rguenther@suse.de>
14773
14774         PR middle-end/36077
14775         * fold-const.c (extract_muldiv_1): In combining division constants
14776         make sure to never overflow.
14777
14778 2008-04-29  Nick Clifton  <nickc@redhat.com>
14779
14780         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
14781
14782 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14783
14784         PR bootstrap/35169
14785         * optc-gen.awk: Work around HP-UX/IA awk bug.
14786
14787 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
14788
14789         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
14790         2008-04-25 commit.
14791
14792 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
14793
14794         PR target/36073
14795         * config/i386/i386.md
14796         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
14797         Change operand 1 predicate to nonimmediate_operand.
14798
14799 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
14800
14801         PR debug/36060
14802         * dwarf2out.c (struct die_struct): Mark as chain_circular through
14803         die_sub field.
14804         * gengtype.c (walk_type, write_func_for_structure): Handle
14805         chain_circular.
14806         * doc/gty.texi: Document chain_circular.
14807
14808 2008-04-28  Richard Guenther  <rguenther@suse.de>
14809
14810         PR tree-optimization/36066
14811         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
14812         SCEV and loop.
14813
14814 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
14815
14816         PR target/36064
14817         * config/i386/i386.md
14818         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
14819         Use match_scratch instead of match_operand for operands 3 and 4.
14820
14821 2008-04-27  Richard Guenther  <rguenther@suse.de>
14822
14823         PR tree-optimization/18754
14824         PR tree-optimization/34223
14825         * tree-pass.h (pass_complete_unrolli): Declare.
14826         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
14827         loop size before and after unconditionally of UL_NO_GROWTH in effect.
14828         Rewrite loop into loop closed SSA form if it is not already.
14829         (tree_unroll_loops_completely): Re-structure to iterate over
14830         innermost loops with intermediate CFG cleanups.
14831         Unroll outermost loops only if requested or the code does not grow
14832         doing so.
14833         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
14834         loops are available.
14835         (tree_vectorize): Instead do so here.
14836         (tree_complete_unroll): Also unroll outermost loops.
14837         (tree_complete_unroll_inner): New function.
14838         (gate_tree_complete_unroll_inner): Likewise.
14839         (pass_complete_unrolli): New pass.
14840         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
14841         uses outside of the loop.
14842         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
14843         form if it is available.
14844         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
14845         * passes.c (init_optimization_passes): Schedule complete inner
14846         loop unrolling pass before the first CCP pass after final inlining.
14847
14848 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
14849
14850         * targhooks.h (default_emutls_var_fields,
14851         default_emutls_var_init): Declare.
14852         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
14853         * target.h (struct gcc_target): Add struct emutls member.
14854         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
14855         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
14856         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
14857         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
14858         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
14859         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
14860         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
14861         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
14862         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
14863         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
14864         emit debug information.
14865         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
14866         * varasm.c: Include targhooks.h.
14867         (emutls_object_section, emutls_tmpl_section): New.
14868         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
14869         (EMUTLS_SEPARATOR): New.
14870         (prefix_name): New.
14871         (get_emutls_object_name): New.
14872         (default_emutls_var_fields): New, broken out of ...
14873         (get_emutls_object_type): ... here.  Adjust to use target hooks.
14874         (get_emutls_init_templ_addr): Adjust to use target hooks.
14875         (emutls_decl): Adjust to use target hooks.
14876         (emutls_finish): Likewise.
14877         (default_emutls_var_init): New, broken out of ...
14878         (assemble_variable): ... here.  Adjust to use target hooks.
14879         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
14880         SECCAT_EMUTLS_TMPL.
14881         * c-common.c (handle_section_attribute): Prevent overriding
14882         sections for emulated tls with special sections.
14883         * config/i386/i386.c (x86_64_elf_select_section): Add
14884         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
14885         (x86_64_elf_unique_section): Likewise.
14886         * config/vxworks.c: Include tree.h.
14887         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
14888         (vxworks_override_options): Set TLS scheme.
14889         * doc/tm.texi (Emulated TLS): New node.
14890
14891 2008-04-26  Simon Baldwin <simonb@google.com>
14892
14893         PR c/35652
14894         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
14895         with propagated string constants.
14896
14897 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
14898
14899         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
14900         constraint for operand 2 when operand 0 is memory operand.
14901         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
14902         operand 0 is memory operand.
14903         (fix_trunc<mode>_i387_with_temp): Ditto.
14904         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
14905         operand 2 when operand 1 is memory operand.
14906         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
14907         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
14908         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
14909         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
14910         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
14911         operands 2,3 and 4 when operand 1 is memory operand.
14912         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
14913         is memory operand.
14914         (fistdi2_floor_with_temp): Ditto.
14915         (fist<mode>2_floor_with_temp): Ditto.
14916         (fistdi2_ceil_with_temp): Ditto.
14917         (fist<mode>2_ceil_with_temp): Ditto.
14918         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
14919
14920 2008-04-26  David Daney  <ddaney@avtrex.com>
14921
14922         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
14923         unspec_volitile.
14924         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
14925         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
14926         UNSPEC_UPDATE_GOT_VERSION): Renumber.
14927         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
14928         (compare_and_swap_12): New insn.
14929         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
14930         * config/mips/mips.c (mips_force_binary): New function.
14931         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
14932         (mips_expand_compare_and_swap_12): New function.
14933         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
14934
14935 2008-04-25  Jan Hubicka  <jh@suse.cz>
14936
14937         PR testsuite/35843
14938         * cfgexpand.c (pass_expand): Turn into RTL pass.
14939         * passes.c (execute_one_pass): Do pass typechecking after execution.
14940         * tree-pass.h (pass_expand): Turn into RTL pass.
14941
14942         * function.h (struct rtl_data): Move here fields
14943         accesses_prior_frames, calls_eh_return, saves_all_registers,
14944         has_nonlocal_goto, has_asm_statement, is_thunk,
14945         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
14946         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
14947         arg_pointer_save_area_init from struct function; turn into bool.
14948         (struct function): Move
14949         calls_eh_return, saves_all_registers, has_nonlocal_goto,
14950         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
14951         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
14952         tail_call_emit, arg_pointer_save_area_init
14953         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
14954         (current_function_returns_struct, current_function_returns_pcc_struct,
14955         current_function_calls_setjmp, current_function_calls_alloca,
14956         current_function_accesses_prior_frames,
14957         current_function_calls_eh_return, current_function_is_thunk,
14958         current_function_stdarg, current_function_profile,
14959         current_function_limit_stack, current_function_uses_pic_offset_table,
14960         current_function_uses_const_pool, current_function_has_nonlocal_label,
14961         current_function_saves_all_registers,
14962         current_function_has_nonlocal_goto,
14963         current_function_has_asm_statement): Remove accesor macros.
14964         * ra-conflict.c (global_conflicts): Update.
14965         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
14966         (suitable_for_tail_call_opt_p): Update.
14967         * builtins.c (expand_builtin_return_addr): Update.
14968         (expand_builtin_setjmp_setup): Update.
14969         (expand_builtin_nonlocal_goto): Update.
14970         * final.c (final_start_function): Update.
14971         (profile_function): Update.
14972         (leaf_function_p): Update.
14973         (only_leaf_regs_used): Update.
14974         * df-scan.c (df_get_exit_block_use_set): Update.
14975         * dojump.c (clear_pending_stack_adjust): Update.
14976         * tree-stdarg.c (gate_optimize_stdarg): Update.
14977         * gimple-low.c (lower_function_body): Update.
14978         * global.c (compute_regsets): Update.
14979         (global_alloc): Update.
14980         * dwarf2out.c (dwarf2out_begin_prologue): Update.
14981         * expr.c (expand_assignment): Update.
14982         * dse.c (dse_step0): Update.
14983         (dse_step1): Update.
14984         * c-decl.c (store_parm_decls): Update.
14985         * local-alloc.c (combine_regs): Update.
14986         (find_free_reg): Update.
14987         * function.c (assign_parms_augmented_arg_list): Update.
14988         (assign_parm_find_data_types): Update.
14989         (assign_parms): Update.
14990         (allocate_struct_function): Update.
14991         (expand_function_start): Update.
14992         (expand_function_end): Update.
14993         (get_arg_pointer_save_area): Update.
14994         (thread_prologue_and_epilogue_insns): Update.
14995         (rest_of_match_asm_constraints): Update.
14996         * stor-layout.c (variable_size): Update.
14997         * gcse.c (gcse_main): Update.
14998         (bypass_jumps): Update.
14999         * gimplify.c (gimplify_function_tree): Update.
15000         * calls.c (emit_call_1): Update.
15001         (expand_call): Update.
15002         * bt-load.c (compute_defs_uses_and_gen): Update.
15003         * except.c (sjlj_assign_call_site_values): Update.
15004         (sjlj_emit_function_enter): Update.
15005         (can_throw_external): Update.
15006         (set_nothrow_function_flags): Update.
15007         (expand_builtin_unwind_init): Update.
15008         (expand_eh_return): Update.
15009         (convert_to_eh_region_ranges): Update.
15010         (output_function_exception_table): Update.
15011         * emit-rtl.c (gen_tmp_stack_mem): Update.
15012         * cfgexpand.c (expand_used_vars): Update.
15013         (tree_expand_cfg): Update.
15014         * cfgcleanup.c (rest_of_handle_jump): Update.
15015         * explow.c (allocate_dynamic_stack_space): Update.
15016         * varasm.c (assemble_start_function): Update.
15017         (force_const_mem): Update.
15018         (mark_constant_pool): Update.
15019         * tree-optimize.c (tree_rest_of_compilation): Update.
15020         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
15021         * tree-cfg.c (notice_special_calls): Update.
15022         (is_ctrl_altering_stmt): Update.
15023         (tree_can_make_abnormal_goto): Update.
15024         (tree_purge_dead_abnormal_call_edges): Update.
15025         * config/alpha/predicates.md: Update.
15026         * config/alpha/alpha.c (alpha_sa_mask): Update.
15027         (alpha_sa_size): Update.
15028         (alpha_does_function_need_gp): Update.
15029         (alpha_expand_prologue): Update.
15030         (alpha_start_function): Update.
15031         (alpha_output_function_end_prologue): Update.
15032         (alpha_expand_epilogue): Update.
15033         * config/frv/frv.c (frv_stack_info): Update.
15034         (frv_expand_epilogue): Update.
15035         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
15036         (s390_register_info): Update.
15037         (s390_frame_info): Update.
15038         (s390_init_frame_layout): Update.
15039         (s390_can_eliminate): Update.
15040         (save_gprs): Update.
15041         * config/spu/spu.c (spu_split_immediate): Update.
15042         (need_to_save_reg): Update.
15043         (spu_expand_prologue): Update.
15044         (spu_expand_epilogue): Update.
15045         * config/sparc/sparc.md: Update.
15046         * config/sparc/sparc.c (eligible_for_return_delay): Update.
15047         (sparc_tls_got): Update.
15048         (legitimize_pic_address): Update.
15049         (sparc_emit_call_insn): Update.
15050         (sparc_expand_prologue): Update.
15051         (output_return): Update.
15052         (print_operand): Update.
15053         (sparc_function_ok_for_sibcall): Update.
15054         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
15055         * config/m32r/m32r.md: Update.
15056         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
15057         (m32r_compute_frame_size): Update.
15058         (m32r_expand_prologue): Update.
15059         (m32r_expand_epilogue): Update.
15060         (m32r_legitimize_pic_address): Update.
15061         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
15062         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
15063         * config/i386/i386.c (ix86_frame_pointer_required): Update.
15064         (gen_push): Update.
15065         (ix86_save_reg): Update.
15066         (ix86_compute_frame_layout): Update.
15067         (ix86_expand_prologue): Update.
15068         (ix86_expand_epilogue): Update.
15069         * config/sh/sh.c (output_stack_adjust): Update.
15070         (calc_live_regs): Update.
15071         (sh5_schedule_saves): Update.
15072         (sh_expand_prologue): Update.
15073         (sh_expand_epilogue): Update.
15074         (sh_setup_incoming_varargs): Update.
15075         (sh_allocate_initial_value): Update.
15076         (sh_get_pr_initial_val): Update.
15077         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
15078         * config/sh/sh.md (label:): Update.
15079         * config/avr/avr.c (out_movhi_mr_r): Update.
15080         * config/crx/crx.h (enum): Update.
15081         * config/xtensa/xtensa.h (along): Update.
15082         * config/stormy16/stormy16.c Update.
15083         (xstormy16_compute_stack_layout): Update.
15084         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
15085         (fr30_expand_prologue): Update.
15086         * config/cris/cris.c (cris_conditional_register_usage): Update.
15087         (cris_reg_saved_in_regsave_area): Update.
15088         (cris_initial_frame_pointer_offset): Update.
15089         (cris_simple_epilogue): Update.
15090         (cris_expand_prologue): Update.
15091         (cris_expand_epilogue): Update.
15092         (cris_expand_pic_call_address): Update.
15093         (cris_asm_output_symbol_ref): Update.
15094         (cris_asm_output_label_ref): Update.
15095         * config/cris/cris.md Update.
15096         * config/iq2000/iq2000.c (compute_frame_size): Update.
15097         (iq2000_expand_epilogue): Update.
15098         * config/mt/mt.h (save_direction): Update.
15099         * config/mn10300/mn10300.c (mn10300_function_value): Update.
15100         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
15101         (ia64_secondary_reload_class): Update.
15102         * config/m68k/m68k.c (m68k_save_reg): Update.
15103         (m68k_expand_prologue): Update.
15104         (m68k_expand_epilogue): Update.
15105         (legitimize_pic_address): Update.
15106         * config/rs6000/rs6000.c (rs6000_got_register): Update.
15107         (first_reg_to_save): Update.
15108         (first_altivec_reg_to_save): Update.
15109         (compute_vrsave_mask): Update.
15110         (compute_save_world_info): Update.
15111         (rs6000_stack_info): Update.
15112         (spe_func_has_64bit_regs_p): Update.
15113         (rs6000_ra_ever_killed): Update.
15114         (rs6000_emit_eh_reg_restore): Update.
15115         (rs6000_emit_allocate_stack): Update.
15116         (rs6000_emit_prologue): Update.
15117         (rs6000_emit_epilogue): Update.
15118         (rs6000_output_function_epilogue): Update.
15119         (output_profile_hook): Update.
15120         (rs6000_elf_declare_function_name): Update.
15121         * config/rs6000/rs6000.h (rs6000_args): Update.
15122         * config/rs6000/rs6000.md: Update.
15123         * config/mcore/mcore.c (mcore_expand_prolog): Update.
15124         * config/arc/arc.c (arc_output_function_epilogue): Update.
15125         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
15126         * config/darwin.c (machopic_function_base_name): Update.
15127         * config/score/score3.c (score3_compute_frame_size): Update.
15128         (rpush): Update.
15129         (rpop): Update.
15130         (score3_epilogue): Update.
15131         * config/score/score7.c (score7_compute_frame_size): Update.
15132         (score7_prologue): Update.
15133         (score7_epilogue): Update.
15134         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
15135         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
15136         * config/arm/arm.c (use_return_insn): Update.
15137         (require_pic_register): Update.
15138         (arm_load_pic_register): Update.
15139         (arm_compute_save_reg0_reg12_mask): Update.
15140         (arm_compute_save_reg_mask): Update.
15141         (thumb1_compute_save_reg_mask): Update.
15142         (output_return_instruction): Update.
15143         (arm_output_function_prologue): Update.
15144         (arm_output_epilogue): Update.
15145         (arm_get_frame_offsets): Update.
15146         (arm_expand_prologue): Update.
15147         (thumb_pushpop): Update.
15148         (thumb_exit): Update.
15149         (thumb1_expand_prologue): Update.
15150         (thumb1_expand_epilogue): Update.
15151         (arm_unwind_emit): Update.
15152         (arm_output_fn_unwind): Update.
15153         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
15154         * config/arm/arm.md: Update.
15155         * config/pa/pa.md: Update.
15156         * config/pa/pa.c (legitimize_pic_address): Update.
15157         (compute_frame_size): Update.
15158         (hppa_expand_prologue): Update.
15159         (hppa_expand_epilogue): Update.
15160         (borx_reg_operand): Update.
15161         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
15162         (HARD_REGNO_RENAME_OK): Update.
15163         * config/mips/mips.c (mips_global_pointer): Update.
15164         (mips_save_reg_p): Update.
15165         (mips_compute_frame_info): Update.
15166         (mips_frame_pointer_required): Update.
15167         (mips_expand_prologue): Update.
15168         (mips_expand_epilogue): Update.
15169         (mips_can_use_return_insn): Update.
15170         (mips_reorg_process_insns): Update.
15171         * config/v850/v850.c (compute_register_save_size): Update.
15172         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
15173         * config/mmix/mmix.c (along): Update.
15174         (mmix_expand_epilogue): Update.
15175         * config/bfin/bfin.c (legitimize_pic_address): Update.
15176         (must_save_p): Update.
15177         (stack_frame_needed_p): Update.
15178         (add_to_reg): Update.
15179         (bfin_expand_prologue): Update.
15180         * stmt.c (expand_asm_operands): Update.
15181         * reload1.c (reload): Update.
15182         (init_elim_table): Update.
15183
15184 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
15185
15186         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
15187
15188 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
15189
15190         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
15191         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
15192         (mov<mode>): Removed.
15193         (*movv4sf_internal): Likewise.
15194         (*movv2df_internal): Likewise.
15195
15196 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
15197
15198         * config.gcc (crx-*-elf): Remove deprecation.
15199
15200 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
15201
15202         * config/i386/cygming-crtend.c (register_frame_ctor): Register
15203         __gcc_deregister_frame with atexit.
15204         (deregister_frame_dtor): Remove.
15205
15206 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
15207             Nathan Sidwell  <nathan@codesourcery.com>
15208
15209         * config/rs6000/rs6000.opt (mspe): Remove Var property.
15210         (misel): Likewise.
15211         * config/rs6000/rs6000.h (rs6000_spe): Declare.
15212         (rs6000_isel): Likewise.
15213         * config/rs6000/rs6000.c (rs6000_spe): New variable.
15214         (rs6000_isel): New variable.
15215         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
15216
15217 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15218
15219         PR c++/35758
15220         * c-common.c (handle_vector_size_attribute): Call
15221         lang_hooks.types.reconstruct_complex_type instead of
15222         reconstruct_complex_type.
15223         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
15224         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
15225         * langhooks.h (struct lang_hooks_for_types): Add
15226         reconstruct_complex_type hook.
15227         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
15228         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
15229
15230 2008-04-24  Richard Guenther  <rguenther@suse.de>
15231
15232         * c-common.h (check_builtin_function_arguments): Declare.
15233         * c-common.c (validate_nargs): New function.
15234         (check_builtin_function_arguments): Likewise.
15235         * c-typeck.c (build_function_call): Call
15236         check_builtin_function_arguments.
15237         * builtins.c (fold_builtin_classify): Remove error reporting code.
15238         (fold_builtin_unordered_cmp): Likewise.
15239         (fold_builtin_1): Likewise.
15240         (fold_builtin_n): Likewise.
15241
15242 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15243
15244         PR tree-optimization/36008
15245         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
15246         the original op1, rather than delta by step.
15247
15248 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
15249             Sebastian Pop  <sebastian.pop@amd.com>
15250
15251         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
15252         eliminate_local_variables_stmt, eliminate_local_variables,
15253         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
15254         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
15255         of code delimited by two edges in the CFG.
15256         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
15257         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
15258         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
15259         the case of parallelisation of reductions.
15260         (expr_invariant_in_region_p): New.
15261
15262         * tree-flow.h (gather_blocks_in_sese_region): Declared.
15263         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
15264
15265 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15266             Richard Guenther  <rguenther@suse.de>
15267
15268         PR tree-optimization/36034
15269         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
15270         incapable of dealing with loads with gaps.
15271
15272 2008-04-24  Rafael Espíndola  <espindola@google.com>
15273
15274         * tree-flow.h (vrp_evaluate_conditional): Change signature.
15275         * tree-ssa-propagate.c (fold_predicate_in): Update call to
15276         vrp_evaluate_conditional.
15277         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
15278         (vrp_evaluate_conditional): Split the cond argument.
15279         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
15280         (simplify_stmt_for_jump_threading): Update call to
15281         vrp_evaluate_conditional.
15282
15283 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15284
15285         PR tree-optimization/35982
15286         * tree-vect-analyze.c (vect_check_interleaving): Check that the
15287         interleaved data-refs are of the same type.
15288
15289 2008-04-24  Danny Smith  <dannysmith@users.net>
15290
15291         * c-format.c (check_format_info_main): Use strncmp rather than a
15292         magic prefix to handle multichar length specs.
15293         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
15294         Don't prefix "I64" and "I32" with '\0'.
15295
15296 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15297
15298         PR target/36015
15299         * config/i386/i386.c (init_cumulative_args): Don't pass anything
15300         in registers for -m32 only if stdarg_p (fntype).
15301
15302 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
15303
15304         PR rtl-optimization/36006
15305         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
15306         temp to op0 in order to avoid invalid rtx sharing.
15307
15308 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
15309
15310         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
15311         check TREE_INVARIANT.
15312         * tree-gimple.c (is_gimple_address): New.
15313         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
15314         * tree-gimple.h (is_gimple_address): New.
15315         * tree.h (decl_address_invariant_p): New.
15316         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
15317         (build_string): Likewise.
15318         (decl_address_invariant_p): New, from is_gimple_invariant_address.
15319         (tree_invariant_p_1): Likewise.
15320         (save_expr): Use it.
15321         (tree_invariant_p): New.
15322         (skip_simple_arithmetic): Use it.
15323         (stabilize_reference_1): Use it.
15324         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
15325         simplify.
15326         (build1_stat): Drop code to compute TREE_INVARIANT.
15327         (build2_stat): Drop code to compute TREE_INVARIANT.
15328         (build3_stat): Drop code to compute TREE_INVARIANT.
15329         (build4_stat): Drop code to compute TREE_INVARIANT.
15330         (build5_stat): Drop code to compute TREE_INVARIANT.
15331         (build7_stat): Drop code to compute TREE_INVARIANT.
15332         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
15333         * tree.h (struct tree_base): Remove invariant_flag.
15334         (TREE_INVARIANT): Remove.
15335         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
15336         (fold_builtin_expect): Check TREE_CONSTANT.
15337         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
15338         * c-tree.h (c_expr_to_decl): Drop third parameter.
15339         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
15340         (build_c_cast): Don't set TREE_INVARIANT.
15341         (pop_init_level): Don't set TREE_INVARIANT.
15342         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
15343         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
15344         TREE_CONSTANT.
15345         (gimplify_init_constructor): Don't set TREE_INVARIANT.
15346         (gimplify_addr_expr): Adjust comment.
15347         * tree-mudflap.c (mf_build_string):
15348         * print-tree.c (print_node): Don't print TREE_INVARIANT.
15349         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
15350         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
15351         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
15352         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
15353         * langhooks.h (struct lang_hooks): Drop third parameter from
15354         expr_to_decl.
15355
15356 2008-04-23  Richard Guenther  <rguenther@suse.de>
15357
15358         PR tree-optimization/27799
15359         PR tree-optimization/32921
15360         PR tree-optimization/32624
15361         * tree-ssa-structalias.c (merge_smts_into): Only merge the
15362         SMTs aliases and the tag itself into the solution.
15363         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
15364         merge the points-to solution back into the SMT aliases.
15365         (may_alias_p): Use alias_set_subset_of instead of
15366         aliases_conflict_p.  A pointer which points to
15367         memory with alias set zero may access any variable.
15368
15369 2008-04-23  Richard Guenther  <rguenther@suse.de>
15370
15371         * alias.c (alias_set_subset_of): Correctly handle asking
15372         if zero is a subset of an alias set with zero child.
15373         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
15374         (compute_flow_insensitive_aliasing): Correctly walk all
15375         pointers.  Do not unnecessarily union sets.
15376
15377 2008-04-23  Richard Guenther  <rguenther@suse.de>
15378
15379         PR middle-end/36021
15380         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
15381
15382 2008-04-22  Tomas Bily  <tbily@suse.cz>
15383
15384         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
15385         unreachable case.
15386         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
15387         NON_LVALUE_EXPR.
15388         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
15389         * tree-ssa-structalias.c (get_constraint_for): Likewise.
15390         * tree-inline.c (estimate_num_insns_1): Likewise.
15391         * varasm.c (const_hash_1, compare_constant, copy_constant)
15392         (compute_reloc_for_constant, output_addressed_constants): Likewise.
15393         * emit-rtl.c (component_ref_for_mem_expr)
15394         (set_mem_attributes_minus_bitpos): Likewise.
15395         * expr.c (highest_pow2_factor, expand_expr_real_1, )
15396         (is_aligning_offset): Likewise.
15397         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
15398         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
15399         * dojump.c (do_jump): Likewise.
15400         * builtins.c (get_pointer_alignment, get_memory_rtx)
15401         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
15402         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
15403
15404 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
15405
15406         PR rtl-optimization/36017
15407         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
15408         expanding the library call.
15409
15410 2008-04-22  Ian Lance Taylor  <iant@google.com>
15411
15412         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
15413         than size_in_bytes.
15414
15415 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
15416
15417         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
15418         of LR/CTR moves for Power6.
15419
15420 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
15421
15422         PR middle-end/36003
15423         * passes.c (init_optimization_passes): Remove
15424         pass_fast_rtl_byte_dce.
15425
15426 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
15427
15428         PR target/29096
15429         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
15430         builtin functions to generate faster code.
15431         (_mm_cvtpu16_ps): Ditto.
15432         (_mm_cvtpi32x2_ps): Ditto.
15433
15434 2008-04-22  Nick Clifton  <nickc@redhat.com>
15435
15436         * common.opt (ftree-loop-distribution): Add Optimization
15437         attribute.
15438
15439         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
15440         (frv_expand_builtin_va_start): Likewise.
15441
15442         * config/arm/arm.c (thumb_find_work_register): Fix location of
15443         argument register count.
15444
15445 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15446
15447         Support scheduling for ColdFire V1 and V3 microarchitecture.
15448         Improve scheduling of multiplication instructions.
15449
15450         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
15451         (mac): New instruction attribute.
15452         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
15453         (m68k_sched_mac): New variable.
15454         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
15455         Handle cfv1 and cfv3.
15456         (max_insn_size): New static variable.
15457         (struct _sched_ib): New type.
15458         (sched_ib): New static variable.
15459         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
15460         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
15461         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
15462         Update.
15463         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
15464         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
15465         new variables.  Update.
15466         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
15467         Add modeling of cfv3 instruction buffer.  Update.
15468         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
15469         * config/m68k/m68k.h (TUNE_CFV3): New macro.
15470         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
15471         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
15472         a particular reservation applies to.
15473         (type2): Reorganize attribute values.  Rename alu to alu_reg,
15474         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
15475         to mul_l and mul_w.
15476         (cf_ib_*): Simplify description of instruction buffer.
15477         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
15478         (cf_mem): Split into cf_mem1 and cf_mem2.
15479         (cf_v2_move_??): Rename to cfv12_alu_??.
15480         (cf_v2_move_l_??): Rename to cfv12_omove_??.
15481         (cf_v2_mul_??): Remove reservations.
15482         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
15483         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
15484         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
15485         appropriate place.
15486         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
15487         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
15488         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
15489         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
15490         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
15491         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
15492         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
15493         expansions of the above reservations for instructions of sizes
15494         1, 2 and 3 words.
15495
15496 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15497
15498         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
15499
15500 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
15501
15502         * coverage.c: Include tree-pass.h.
15503         (coverage_counter_alloc): Print da_file_name to the dump file.
15504
15505 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
15506
15507         * sbitmap.c (sbitmap_range_empty_p): New function.
15508         * sbitmap.h (sbitmap_range_empty_p): New function.
15509         * bitmap.h: Now includes obstack.h.
15510
15511 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
15512             Kenneth Zadeck  <zadeck@naturalbridge.com>
15513
15514         * dbgcnt.def (ra_byte_scan): Added.
15515         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
15516         when the last hit happens for a counter.
15517         * timevar.def (TV_DF_BYTE_LR): New variable.
15518         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
15519         * passes.c (pass_fast_rtl_byte_dce): New pass.
15520         * fwprop.c (update_df): Added mode to call df_ref_create.
15521         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
15522         DF_REF_EXTRACT_OFFSET.
15523         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
15524         DF_BYTE_LR_OUT, df_byte_lr): New macro.
15525         (df_mm): New enum.
15526         (df_ref_extract): Added mode field.
15527         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
15528         DF_REF_EXTRACT_OFFSET.
15529         (DF_REF_EXTRACT_MODE): New macro.
15530         (df_byte_lr_bb_info): New structure.
15531         (df_print_byte_regset, df_compute_accessed_bytes,
15532         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
15533         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
15534         df_byte_lr_simulate_uses,
15535         df_byte_lr_simulate_artificial_refs_at_top,
15536         df_byte_lr_simulate_artificial_refs_at_end,
15537         df_compute_accessed_bytes): New function.
15538         (df_ref_create): Add parameter.
15539         (df_byte_lr_get_bb_info): New inline function.
15540         * df-scan.c (df_ref_record, df_uses_record,
15541         df_ref_create_structure): Added mode parameter.
15542         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
15543         df_defs_record, df_uses_record, df_get_conditional_uses,
15544         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
15545         df_entry_block_defs_collect, df_exit_block_uses_collect):
15546         Added mode parameter to calls to df_ref_record, df_uses_record,
15547         df_ref_create_structure.
15548         (df_ref_equal_p, df_ref_compare): Added test for modes.
15549         (df_ref_create_structure): Added code to set mode.  Renamed
15550         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
15551         DF_REF_EXTRACT_OFFSET.
15552         * df-core.c (df_print_byte_regset): New function.
15553         * df-byte-scan.c: New file.
15554         * df-problems.c (df_rd_transfer_function): Removed unnecessary
15555         calls to BITMAP_FREE.
15556         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
15557         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
15558         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
15559         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
15560         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
15561         df_byte_lr_local_compute, df_byte_lr_init,
15562         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
15563         df_byte_lr_transfer_function, df_byte_lr_free,
15564         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
15565         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
15566         df_byte_lr_simulate_uses,
15567         df_byte_lr_simulate_artificial_refs_at_top,
15568         df_byte_lr_simulate_artificial_refs_at_end): New function.
15569         * dce.c (byte_dce_process_block): New function.
15570         (dce_process_block): au is now passed in rather than computed
15571         locally.  Changed loops that look at artificial defs to not look
15572         for conditional or partial ones, because there never are any.
15573         (fast_dce): Now is able to drive byte_dce_process_block or
15574         dce_process_block depending on the kind of dce being done.
15575         (rest_of_handle_fast_dce): Add parameter to fast_dce.
15576         (rest_of_handle_fast_byte_dce): New function.
15577         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
15578         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
15579
15580 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
15581
15582         PR fortran/35019
15583         * gcc.h: Added fortran options that take arguments to
15584         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
15585         macros.
15586
15587 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
15588
15589         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
15590         scalarization if on the LHS and not a full access.
15591
15592 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15593
15594         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
15595
15596 2008-04-18  Rafael Espíndola  <espindola@google.com>
15597
15598         * tree-vrp.c (find_case_label_index): Fix the binary search.
15599         (find_case_label_range): New.
15600         (vrp_visit_switch_stmt): Use find_case_label_range.
15601         (simplify_switch_using_ranges): Use find_case_label_range.
15602
15603 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
15604
15605         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
15606         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
15607
15608 2008-04-18  Tom Tromey  <tromey@redhat.com>
15609
15610         PR libcpp/15500:
15611         * doc/cpp.texi (Implementation-defined behavior): Mention
15612         -finput-charset.
15613
15614 2008-04-18  Ian Lance Taylor  <iant@google.com>
15615
15616         * fold-const.c (pointer_may_wrap_p): New static function.
15617         (fold_comparison): Add another test for pointer overflow.  Use
15618         pointer_may_wrap_p to disable some false positives.
15619
15620 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
15621
15622         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
15623         (fname_as_string): Match updated cpp_interpret_string prototype.
15624         (fix_string_type): Support char16_t* and char32_t*.
15625         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
15626         derivative) nodes.  Register as builtin if C++0x.
15627         (c_parse_error): Support CPP_CHAR{16,32}.
15628         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
15629         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
15630         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
15631         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
15632         CTI_CHAR32_ARRAY_TYPE>: New elements.
15633         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
15634         char32_type_node, signed_char32_type_node, char16_array_type_node,
15635         char32_array_type_node): New defines.
15636         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
15637         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
15638         (lex_string): Support CPP_STRING{16,32}, match updated
15639         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
15640         (lex_charconst): Support CPP_CHAR{16,32}.
15641         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
15642         and CPP_STRING{16,32}.
15643
15644 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
15645
15646         PR bootstrap/35457
15647         * aclocal.m4: Regenerate.
15648         * configure: Regenerate.
15649
15650 2008-04-18  Jan Hubicka  <jh@suse.cz>
15651
15652         * except.c (dw2_size_of_call_site_table,
15653         sjlj_size_of_call_site_table): Use vector API for call_site_record.
15654
15655         * cgraphbuild.c (build_cgraph_edges): Update.
15656         * tree-pass.h: Update comment.
15657         * final.c (leaf_function_p): Update.
15658         (leaf_renumber_regs): Update.
15659         (rest_of_clean_state): Update.
15660         * omp-low.c (expand_omp_parallel): Update.
15661         * ipa-reference.c (analyze_function): Update.
15662         * reorg.c (find_end_label): Update.
15663         (optimize_skip): Update.
15664         (fill_simple_delay_slots): Update.
15665         (fill_simple_delay_slots): Update.
15666         (make_return_insns): Update.
15667         (dbr_schedule): Update.
15668         * gimple-low.c (record_vars_into): Update.
15669         * cfgbuild.c (make_edges): Update.
15670         * function.c (assign_stack_local): Update.
15671         (assign_parm_adjust_stack_rtl): Update.
15672         (locate_and_pad_parm): Update.
15673         (allocate_struct_function): Do not initialize stack_alignment_needed
15674         and preferred_stack_boundary here.
15675         (stack_protect_prologue): Update.
15676         (stack_protect_epilogue): Update.
15677         (expand_function_start): Initialize stack_alignment_needed,
15678         preferred_stack_boundary and max_jumptable_ents.
15679         (expand_function_end): Update.
15680         (free_after_compilation): Do not NULLify epilogue_delay_list.
15681         * function.h (struct rtl_data): Add stack_protect_guard,
15682         stack_alignment_needed,
15683         preferred_stack_boundary, epilogue_delay_list.
15684         (struct function): Remove value_histograms, stack_alignment_needed,
15685         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
15686         last_label_uid,
15687         unexpanded_var_list, stack_protect_guard.
15688         (current_function_epilogue_delay_list): Remove.
15689         * ipa-type-escape.c (analyze_function): Update.
15690         * gimplify.c (pop_gimplify_context): Update comment.
15691         * calls.c (expand_call): Update.
15692         (emit_library_call_value_1): Update.
15693         * except.c (set_nothrow_function_flags): Update.
15694         * cfgexpand.c (get_decl_align_unit): Update.
15695         (create_stack_guard): Update.
15696         (estimated_stack_frame_size): Update.
15697         (expand_used_vars): Update.
15698         (tree_expand_cfg): Free histogram earliers, init expansion variables.
15699         * explow.c (allocate_dynamic_stack_space): Update.
15700         * tree-ssa-live.c (remove_unused_locals): Update.
15701         * varasm.c (mark_constant_pool): Update.
15702         * tree-inline.c (remap_decls): Update.
15703         (initialize_cfun): Update.
15704         (declare_return_variable): Update.
15705         (inline_forbidden_p): Update.
15706         (expand_call_inline): Update.
15707         (declare_inline_vars): Update.
15708         (tree_function_versioning): Update.
15709         * tree-flow.h (value_histograms): New.
15710         (VALUE_HISTOGRAMS): New macro.
15711         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
15712         last_label_uid.
15713         * tree-cfg.c (set_bb_for_stmt): Update.
15714         (replace_by_duplicate_decl): Update.
15715         (move_block_to_fn): Update.
15716         (new_label_mapper): Update.
15717         (dump_function_to_file): Update.
15718         * ipa-struct-reorg.c (build_data_structure): Update.
15719         * cfgrtl.c (print_rtl_with_bb): Update.
15720         * reload1.c (reload): Update.
15721         (reload): Update.
15722         * config/i386/i386.c (setup_incoming_varargs_64,
15723         ix86_compute_frame_layout): Update.
15724         * config/arc/arc.c (arc_output_function_epilogue): Update.
15725
15726 2008-04-18  Marius Strobl <marius@FreeBSD.org>
15727
15728         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
15729         for FreeBSD as well.
15730         * gthr-posix95.h: Likewise.
15731
15732 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
15733
15734         PR rtl-optimization/35838
15735         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
15736         out the byte offset of the first subreg.
15737
15738 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
15739
15740         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
15741         to split_ti instead of three separate calls with single member arrays.
15742         (subti3 splitter): Ditto.
15743         (adddi3 splitter): Ditto with split_di.
15744         (subdi3 splitter): Ditto.
15745         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
15746         two separate calls with single member arrays.  Swap match_dup
15747         operands 1 and 2 to better fit into the array.
15748         (negdi2 splitter): Ditto with split_di.
15749         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
15750         two separate calls with single member arrays.  Swap match_dup operands
15751         6 and 7 to better fit into the array.
15752
15753 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
15754
15755         * config/i386/i386.c (sse_builtin_type): New.
15756         (bdesc_sse_args): Likewise.
15757         (bdesc_sse_3arg): Removed.
15758         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
15759         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
15760         IX86_BUILTIN_ROUNDPS.
15761         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
15762         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
15763         IX86_BUILTIN_ROUNDPS.
15764         (ix86_expand_sse_4_operands_builtin): Removed.
15765         (ix86_expand_sse_operands_builtin): New.
15766         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
15767         and CODE_FOR_sse4_1_roundps.
15768         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
15769         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
15770
15771 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
15772
15773         PR target/35907
15774         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
15775         regs before frame pop when needed.  If use_backchain_to_restore_sp
15776         then load backchain into a temp reg to restore vr and vrsave.  Add
15777         code to restore vr after frame pop if possible.
15778
15779 2008-04-17  Richard Guenther  <rguenther@suse.de>
15780
15781         * tree-vn.c (expressions_equal_p): Do not check type
15782         equality or compatibility before calling operand_equal_p.
15783         * fold-const.c (operand_equal_p): Check equivalence of
15784         integer constants before bailing out due to signedness or
15785         precision differences.
15786         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
15787         spurious differences in type qualification.  Ignore types
15788         for COMPONENT_REFs at all.
15789
15790 2008-04-17  Christian Bruel  <christian.bruel@st.com>
15791
15792         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
15793         msw_skip comparison.
15794
15795 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
15796
15797         PR c/35739
15798         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
15799         reg type.
15800
15801         PR tree-optimization/35899
15802         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
15803         rather than TREE_OPERAND.
15804
15805 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
15806
15807         PR target/35944
15808         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
15809         temporary registers.  Change operand predicate to general_operand.
15810         (remainderxf3): Ditto.
15811
15812 2008-04-16  Richard Guenther  <rguenther@suse.de>
15813
15814         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
15815         * tree-affine.c (aff_combination_expand): Look through some
15816         conversions.
15817
15818 2008-04-15  Doug Kwan  <dougkwan@google.com>
15819
15820         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
15821         for hex printing.
15822         * tree-pretty-print.c (dump_generic_node): Ditto.
15823         * final.c (output_addr_const): Ditto.
15824         * dwarf2out.c (output_cfi): Ditto.
15825         * c-pretty-print.c (pp_c_integer_constant): Ditto.
15826         * print-rtl.c (print_rtx): Ditto.
15827         * print-tree.c (print_node_brief, print_node): Ditto.
15828         * c-common.c (match_case_to_enum_1): Ditto.
15829         * sched-vis.c (print_value): Ditto.
15830         * config/i386/i386.c (print_operand): Cast to long unsigned int
15831         for hex printing.
15832
15833 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
15834         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
15835         MS Windows VirtualProtect function.
15836
15837 2008-04-15  Jan Hubicka  <jh@suse.cz>
15838
15839         * gengtype.c (write_root): Param_is argument is OK.
15840         * expr.c (expand_expr_real_1): Update call of get_exception_*.
15841         * function.h: Include varray.h
15842         (rtl_eh): New stucture based on except.c one.
15843         (call_site_record): New forward declaration and vector type.
15844         * calls.c (emit_call_1): Do not call
15845         note_current_region_may_contain_throw.
15846         * except.c (eh_status): Remove cur_region, try_region since they are
15847         unused.
15848         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
15849         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
15850         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
15851         Remove call_site_data_used, call_site_data_size.
15852         Turn call_site_record into vector in function.h.
15853         (note_current_region_may_contain_throw): Remove.
15854         (get_exception_pointer, get_exception_filter): Do not take struct
15855         function argument; update.
15856         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
15857         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
15858         build_post_landing_pads, dw2_build_landing_pads,
15859         sjlj_assign_call_site_values, sjlj_mark_call_sites,
15860         sjlj_emit_function_enter, sjlj_emit_function_enter,
15861         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
15862         sjlj_build_landing_pads, finish_eh_generation,
15863         remove_exception_handler_label, remove_eh_handler,
15864         maybe_remove_eh_handler, add_reachable_handler,
15865         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
15866         add_action_record, collect_one_action_chain, add_call_site,
15867         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
15868         sjlj_output_call_site_table, output_function_exception_table,
15869         * except.h (note_current_region_may_contain_throw): Remove
15870         (get_exception_pointer, get_exception_filter): Do not take struct
15871         function argument.
15872         * Makefile.in (GTFILES): Put varargs before struct function.
15873
15874 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15875
15876         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
15877         punt for STRING_CST.
15878         (get_constraint_for): Deal with STRING_CST here instead.
15879
15880 2008-04-15  Richard Guenther  <rguenther@suse.de>
15881
15882         * tree-ssa-propagate.c (substitute_and_fold): Substitute
15883         statements in a basic-block with a backward walk.  Do not
15884         substitute into dead statements but instead remove those.
15885
15886 2008-04-15  Richard Guenther  <rguenther@suse.de>
15887
15888         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
15889         to zero, thus disable creation of SFTs.
15890
15891 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15892
15893         * tree-predcom.c (suitable_reference_p): Return false if the
15894         reference can throw.
15895
15896 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
15897
15898         PR c/35751
15899         * c-decl.c (finish_decl): If extern or static var has variable
15900         size, set TREE_TYPE (decl) to error_mark_node.
15901
15902 2008-04-15  Rafael Espíndola  <espindola@google.com>
15903
15904         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
15905         variable arg1.
15906
15907 2008-04-15  Richard Guenther  <rguenther@suse.de>
15908
15909         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
15910         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
15911         (visit_reference_op_load): Do walk vuse-vdef chains on
15912         vn_reference_lookup.
15913         (visit_reference_op_store): But do not here.
15914         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
15915         vn_reference_lookup.
15916         (vn_lookup_with_vuses): But do so here.
15917
15918 2008-04-14  Ian Lance Taylor  <iant@google.com>
15919
15920         * fold-const.c (fold_overflow_warning): Remove assertion.
15921
15922 2008-04-15  Ben Elliston  <bje@au.ibm.com>
15923
15924         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
15925         temp1 local variables.
15926
15927 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
15928
15929         PR target/35661
15930         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
15931         ".text.unlikely" section as executable.
15932
15933 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
15934
15935         * config/ia64/ia64.c (rtx_needs_barrier): Handle
15936         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
15937         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
15938         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
15939         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
15940         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
15941         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
15942
15943 2008-04-14  Ian Lance Taylor  <iant@google.com>
15944
15945         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
15946         * fold-const.c (fold_comparison): If appropriate, test
15947         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
15948         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
15949         reassociating a pointer type.
15950         * doc/invoke.texi (Optimize Options): Document that
15951         -fstrict-overflow applies to pointer wraparound.
15952
15953 2008-04-13  Jan Hubicka  <jh@suse.cz>
15954
15955         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
15956
15957 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
15958
15959         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
15960         we are going to "save the world".
15961
15962 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
15963
15964         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
15965         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
15966         operand 0 constraint, not "=".
15967
15968 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
15969
15970         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
15971
15972 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15973
15974         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
15975         of size of positions_needed * CHAR_BIT.
15976
15977 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15978
15979         PR middle-end/35897
15980         * dse.c (store_info): Change positions_needed to unsigned
15981         HOST_WIDE_INT.
15982         (lowpart_bitmask): New.
15983         (record_store): Cast to unsigned HOST_WIDE_INT for
15984         positions_needed.  Assert width <= size of positions_needed *
15985         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
15986         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
15987         lowpart_bitmask to set mask.
15988
15989 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15990
15991         * config/bfin/constraints.md: New file.
15992         * config/bfin/bfin.md: Include it.
15993         (adddi3): Use satisfies_constraint functions instead of the old macros.
15994         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
15995         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
15996         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
15997         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
15998         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
15999         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
16000         EXTRA_CONSTRAINT): Delete.
16001         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
16002         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
16003         of the old macros.
16004         * config/bfin/bfin.c: Include "tm-constrs.h".
16005         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
16006         Use satisfies_constraint functions instead of the old macros.
16007         * doc/md.texi (Blackfin Constraints): Update file name reference.
16008
16009 2008-04-11  Richard Guenther  <rguenther@suse.de>
16010
16011         PR tree-optimization/35869
16012         * tree-vrp.c (execute_vrp): Move switch statement update after
16013         jump threading.  Schedule another cfg cleanup run.
16014
16015 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
16016
16017         PR c/35744
16018         * attribs.c (decl_attributes): Return early on errorneous node.
16019
16020 2008-04-10  Oleg Ryjkov  <olegr@google.com>
16021
16022         * tree.h (struct tree_base): Added a new flag default_def_flag.
16023         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
16024
16025 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
16026
16027         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
16028
16029 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16030
16031         PR target/35768
16032         * pa.md: Define mode iterator P.  Define mode attribute dwc.
16033         (dcacheflush): Update pattern to use iterator P and attribute dwc.
16034         (icacheflush): Likewise.
16035         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
16036         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
16037
16038 2008-04-11  Ben Elliston  <bje@au.ibm.com>
16039
16040         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
16041
16042 2008-04-10  Rafael Espíndola  <espindola@google.com>
16043
16044         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
16045         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
16046         (extract_range_from_expr): The same.
16047
16048 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
16049
16050         * config/mips/mips.md (GPR2): New mode iterator.
16051         (seq): Add comment.
16052         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
16053         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
16054         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
16055         Rewrite these to take two modes, the mode of comparison and the
16056         mode of the destination.
16057         * config/mips/mips.c (mips_expand_scc): Instead of having
16058         paradoxical subreg as destination, expand "narrowing" scc if mode
16059         of comparison is SI and target is requested in DI mode.
16060         (mips_emit_int_order_test): Update comment.  Make mode of
16061         comparison match CMP0 rather than TARGET.  When creating inverse
16062         target use mode of TARGET.
16063
16064 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
16065
16066         * gcov-dump.c (tag_summary): Only print summaries for the first
16067         GCOV_COUNTERS_SUMMABLE counters.
16068
16069 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
16070
16071         * config/i386/i386.md (absneg): New code iterator.
16072         (absnegprefix): New code attribute.
16073         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
16074         patterns using absneg code iterator.
16075         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
16076         using absneg code iterator.
16077         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
16078         *neg<mode>2 patterns using absneg code iterator.
16079         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
16080         *negextendsfdf2 patterns using absneg code iterator.
16081         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
16082         *negextendsfxf2 patterns using absneg code iterator.
16083         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
16084         *negextendsfdf2 patterns using absneg code iterator.
16085         * config/i386/sse.md (<code><mode>2): Macroize expander from
16086         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
16087
16088 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
16089
16090         * config/s390/s390.h: Remove the remains of the recent search
16091         & replace action of current_function_outgoing_args_size.
16092
16093 2008-04-10  Ira Rosen  <irar@il.ibm.com>
16094
16095         PR tree-optimization/35821
16096         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
16097         NEW_STMT_LIST is not NULL.
16098
16099 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
16100
16101         PR libstdc++/35597
16102         * toplev.c (process_options): Remove -ffunction-sections debugging
16103         warning.
16104
16105 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
16106
16107         PR middle-end/PR28690
16108         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
16109         than gen_rtx_fmt_ee to perform more canonicalizations.
16110
16111 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16112
16113         PR driver/35665
16114         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
16115
16116 2008-04-09  Richard Guenther  <rguenther@suse.de>
16117
16118         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
16119         (dump_function_to_file): Dump function arguments with types.
16120
16121 2008-04-08  Richard Guenther  <rguenther@suse.de>
16122
16123         * fold-const.c (fold_widened_comparison): Do not allow
16124         sign-changes that change the result.
16125
16126 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
16127
16128         PR target/35839
16129         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
16130         kinds of indirect references.
16131
16132 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
16133
16134         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
16135         GNU Fortran language string.
16136
16137 2008-04-08  Rafael Espíndola  <espindola@google.com>
16138
16139         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
16140         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
16141         * tree.h (tree_call_nonnegative_warnv_p): New.
16142
16143 2008-04-08  Jan Hubicka  <jh@suse.cz>
16144
16145         * function.c (free_after_compilation): Clear out regno_reg_rtx
16146         pointer.
16147
16148 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
16149
16150         Revert
16151         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
16152
16153         PR middle-end/PR28690
16154         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
16155         same precedence as REG_POINTER and MEM_POINTER operands.
16156
16157 2008-04-08  Richard Guenther  <rguenther@suse.de>
16158
16159         PR middle-end/35834
16160         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
16161         for adding index to base.
16162
16163 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
16164
16165         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
16166         (MINGW_ENABLE_EXECUTE_STACK): New.
16167         (IN_LIBGCC2): For libgcc include windows.h file for
16168         function declarations.
16169
16170 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
16171
16172         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
16173         and tem2 if tem1 is not a REG or MULT.
16174
16175 2008-04-08  Jan Hubicka  <jh@suse.cz>
16176
16177         * function.h (incomming_args): Break out of struct function.
16178         (function_subsections): Break out of struct function.
16179         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
16180         return_rtx and hard_reg_initial_vals from struct function.
16181         Kill inl_max_label_num.
16182         (current_function_pops_args, current_function_args_info,
16183         current_function_args_size, current_function_args_size,
16184         current_function_pretend_args_size,
16185         current_function_outgoing_args_size,
16186         current_function_internal_arg_pointer, current_function_return_rtx):
16187         Kill compatibility accestor macros.
16188         * builtins.c (expand_builtin_apply_args_1): Update.
16189         (expand_builtin_next_arg): Update.
16190         * df-scan.c (df_get_call_refs): Update.
16191         * dbxout.c (dbxout_function_end): Update.
16192         * dwarf2out.c (dwarf2out_switch_text_section): Update.
16193         (output_line_info): Update.
16194         (secname_for_decl): Update.
16195         (dwarf2out_var_location): Update.
16196         * function.c (free_after_compilation): Update.
16197         (assign_parm_find_stack_rtl): Update.
16198         (assign_parms): Update.
16199         (expand_dummy_function_end): Update.
16200         (expand_function_end): Update.
16201         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
16202         (expand_call): Update.
16203         (emit_library_call_value_1): Update.
16204         (store_one_arg): Update.
16205         * varasm.c (initialize_cold_section_name): Update.
16206         (unlikely_text_section): Update.
16207         (unlikely_text_section_p): Update.
16208         (assemble_start_function): Update.
16209         (assemble_end_function): Update.
16210         (default_section_type_flags): Update.
16211         (switch_to_section): Update.
16212         * integrate.c (set_decl_abstract_flags): Update.
16213         (get_hard_reg_initial_val): Update.
16214         (has_hard_reg_initial_val): Update.
16215         (allocate_initial_values): Update.
16216         * resource.c (init_resource_info): Update.
16217         * config/alpha/alpha.c (NUM_ARGS): Update.
16218         (direct_return): Update.
16219         (alpha_va_start): Update.
16220         (alpha_sa_size): Update.
16221         (alpha_initial_elimination_offset): Update.
16222         (alpha_expand_prologue): Update.
16223         (alpha_start_function): Update.
16224         (alpha_expand_epilogue): Update.
16225         (unicosmk_initial_elimination_offset):
16226         * config/alpha/alpha.md (call expander): Update.
16227         * config/s390/s390.c (s390_register_info): Update.
16228         (s390_register_info): Update.
16229         (s390_frame_info): Update.
16230         (s390_initial_elimination_offset): Update.
16231         (s390_build_builtin_va_list): Update.
16232         (s390_va_start): Update.
16233         * config/spu/spu.c (direct_return): Update.
16234         (spu_expand_prologue): Update.
16235         (spu_initial_elimination_offset): Update.
16236         (spu_build_builtin_va_list): Update.
16237         (spu_va_start): Update.
16238         * config/sparc/sparc.c (sparc_init_modes): Update.
16239         (sparc_compute_frame_size): Update.
16240         (function_value): Update.
16241         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
16242         * config/i386/i386.md (return expander): Update.
16243         * config/i386/i386.c (ix86_va_start): Update.
16244         (ix86_can_use_return_insn_p): Update.
16245         (ix86_compute_frame_layout): Update.
16246         (ix86_expand_epilogue): Update.
16247         * config/sh/sh.c (output_stack_adjust): Update.
16248         (calc_live_regs): Update.
16249         (sh_expand_prologue): Update.
16250         (sh_builtin_saveregs): Update.
16251         (sh_va_start): Update.
16252         (initial_elimination_offset): Update.
16253         (sh_allocate_initial_value): Update.
16254         (sh_function_ok_for_sibcall): Update.
16255         (sh_get_pr_initial_val): Update.
16256         * config/sh/sh.md (return expander): Update.
16257         * config/avr/avr.c (frame_pointer_required_p): UPdate.
16258         * config/crx/crx.c (crx_compute_frame): UPdate.
16259         (crx_initial_elimination_offset): UPdate.
16260         * config/xtensa/xtensa.c (compute_frame_size): Update
16261         (xtensa_builtin_saveregs): Update.
16262         (xtensa_va_start): Update.
16263         (order_regs_for_local_alloc): Update.
16264         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
16265         (xstormy16_expand_builtin_va_start): Update.
16266         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
16267         * config/m68hc11/m68hc11.md (return expanders): Update.
16268         * config/m68hc11/m68hc11.c (expand_prologue): Update.
16269         (expand_epilogue): Update.
16270         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
16271         (cris_simple_epilogue): Update.
16272         (cris_expand_prologue): Update.
16273         (cris_expand_epilogue): Update.
16274         * config/iq2000/iq2000.c (iq2000_va_start): Update.
16275         (compute_frame_size): Update.
16276         * config/mt/mt.c (mt_compute_frame_size): Update.
16277         * config/mn10300/mn10300.c (expand_prologue): Update.
16278         (expand_epilogue): Update.
16279         (initial_offset): Update.
16280         (mn10300_builtin_saveregs):
16281         * config/mn10300/mn10300.md (return expander): Update.
16282         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
16283         (ia64_initial_elimination_offset): Update.
16284         (ia64_initial_elimination_offset): Update.
16285         (ia64_expand_prologue): Update.
16286         * config/m68k/m68k.md (return expander): Update.
16287         * config/rs6000/rs6000.c (rs6000_va_start): Update.
16288         (rs6000_stack_info): Update.
16289         * config/mcore/mcore.c (layout_mcore_frame): Update.
16290         (mcore_expand_prolog): Update.
16291         * config/arc/arc.c (arc_compute_frame_size): Update.
16292         * config/score/score3.c (score3_compute_frame_size): Update.
16293         * config/score/score7.c (score7_compute_frame_size): Update.
16294         * config/arm/arm.c (use_return_insn): Update.
16295         (thumb_find_work_register): Update.
16296         (arm_compute_save_reg_mask): Update.
16297         (arm_output_function_prologue): Update.
16298         (arm_output_epilogue): Update.
16299         (arm_size_return_regs): Update.
16300         (arm_get_frame_offsets): Update.
16301         (arm_expand_prologue): Update.
16302         (thumb_exit): Update.
16303         (thumb_unexpanded_epilogue): Update.
16304         (thumb1_output_function_prologue): Update.
16305         * config/pa/pa.md (return expander): Update.
16306         * config/pa/pa.c (compute_frame_size): Update.
16307         (hppa_builtin_saveregs): Update.
16308         * config/mips/mips.c (mips_va_start): Update.
16309         (mips16_build_function_stub): Update.
16310         (mips_compute_frame_info): Update.
16311         (mips_restore_gp): Update.
16312         (mips_output_function_prologue): Update.
16313         (mips_expand_prologue): Update.
16314         * config/v850/v850.c (compute_frame_size): Update.
16315         (expand_prologue): * config/mmix/mmix.c (along): update.
16316         (mmix_initial_elimination_offset): update.
16317         (mmix_reorg): update.
16318         (mmix_use_simple_return): update.
16319         (mmix_expand_prologue): update.
16320         (mmix_expand_epilogue): Update.
16321         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
16322         (emit_link_insn): Update.
16323
16324 2008-04-08  Anatoly Sokolov <aesok@post.ru>
16325
16326         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
16327         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
16328         instructions.
16329         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
16330         atmega103 device.
16331
16332 2008-04-07  Jan Hubicka  <jh@suse.cz>
16333
16334         * function.h (rtl): Rename to x_rtl.
16335         (crtl): New define.
16336         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
16337         frame_offset, stack_check_probe_note, arg_pointer_save_area,
16338         used_temp_slots avail_temp_slots, temp_slot_level,
16339         nonlocal_goto_handler_labels): Update accesstors.
16340         (rtl): New global variable.
16341         (struct function): Move some fileds to rtl_data.
16342         (get_arg_pointer_save_area): Update prototype.
16343         * builtins.c (expand_builtin_setjmp_receiver): Update call of
16344         get_arg_pointer_save_area.
16345         * expr.c (init_expr): Update
16346         * function.c (get_frame_size): Update
16347         (assign_stack_local): Update
16348         (expand_function_end): Update.
16349         (get_art_pointer_save_area): Update
16350         * function.h
16351         * emit-rtl.c (rtl): Declare.
16352         (regno_reg_rtx): Declare.
16353         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
16354         Update.
16355         (gen_reg_rtx): Update.
16356         * varasm.c (n_deferred_constatns): Update accestor.
16357         (init_varasm_status): Do not allocate varasm_status.
16358         (force_const_mem, get_pool_size, output_constant_pool): Update.
16359         * stmt.c (force_label_rtx): Do not use x_ prefixes.
16360         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
16361         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
16362         * sparc/sparc.h (INIT_EXPANDERS): Update.
16363         * ia64/ia64.h (INIT_EXPANDERS): Update.
16364
16365 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
16366
16367         * reload.c (push_secondary_reload): Add missing break to for loop.
16368
16369 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
16370
16371         PR middle-end/PR28690
16372         * rtlanal.c: Update copyright years.
16373         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
16374         as REG_POINTER and MEM_POINTER operands.
16375         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
16376         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
16377         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
16378         * gcse.c: Update copyright years.
16379         (pre_delete): Call gen_reg_rtx_and_attrs.
16380         (hoist_code): Likewise.
16381         (build_store_vectors): Likewise.
16382         (delete_store): Likewise.
16383         * loop-invariant.c (move_invariant_reg): Likewise.
16384         Update copyright years.
16385
16386 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
16387
16388         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
16389         control string instead of quoted.
16390
16391 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
16392
16393         * doc/rtl.texi: Rewrite of subreg section.
16394
16395 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
16396
16397         PR/35842
16398         * config/i386/i386.c (legitimize_pic_address): Add treating
16399         of dllimport SYM_REF's.
16400         (legitimize_dllimport_symbol): Add prototype.
16401
16402 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
16403
16404         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
16405         reference in constructor with non self-referential type.
16406
16407 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
16408
16409         Removal of Return with Depressed Stack Pointer support
16410         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
16411         (ECF_SP_DEPRESSED): Likewise.
16412         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
16413         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
16414         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16415         (expand_call): Do not test ECF_SP_DEPRESSED.
16416         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16417         * function.c (keep_stack_depressed): Delete.
16418         (handle_epilogue_set): Likewise.
16419         (update_epilogue_consts): Likewise.
16420         (emit_equiv_load): Likewise.
16421         (thread_prologue_and_epilogue_insns): Remove support for Return with
16422         Depressed Stack Pointer.
16423         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16424
16425 2008-04-06  Richard Guenther  <rguenther@suse.de>
16426
16427         PR tree-optimization/35400
16428         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
16429         information from SSA_NAMEs.
16430
16431 2008-04-06  Anatoly Sokolov <aesok@post.ru>
16432
16433         * config/avr/avr.h (avr_mega_p): Remove declaration.
16434         (AVR_MEGA): Remove macro.
16435         * config/avr/avr.c (avr_mega_p): Remove variable.
16436         (avr_override_options): Remove inicializion of avr_mega_p.
16437         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
16438         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
16439         (avr_jump_mode): (Ditto.).
16440         (avr_output_progmem_section_asm_op): (Ditto.).
16441         (avr_asm_init_sections): (Ditto.).
16442         (avr_asm_init_sections): (Ditto.).
16443         (avr_rtx_costs): (Ditto.).
16444         * config/avr/avr.md: (Ditto.).
16445         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
16446         '__AVR_MEGA__'.
16447
16448 2008-04-06  Richard Guenther  <rguenther@suse.de>
16449
16450         PR tree-optimization/35842
16451         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
16452         is_gimple_invariant_address.
16453
16454 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16455
16456         * gcc.c (default_compilers): Sync Fortran extensions list with
16457         that in fortran/lang-specs.h.
16458         * doc/invoke.texi: Likewise.
16459         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
16460         * dwarf2out.c (gen_compile_unit_die): Likewise.
16461
16462 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
16463
16464         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
16465
16466 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
16467
16468         PR target/12329
16469         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
16470         attribute is used for nested functions.
16471
16472 2008-04-05  Jan Hubicka  <jh@suse.cz>
16473
16474         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
16475
16476         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
16477         letter argument.
16478         (dump_files): Update.
16479         (enable_rtl_dump_file): Do not accept letter argument.
16480         * tree-pass.h (dump_file_info): Remove letter argument.
16481         * toplev.c (decode_d_option): Update -da handling.
16482         * toplev.h (enable_rtl_dump_file): Update prototype.
16483         * passes.c (register_one_dump_file): Do not accept IPA argument; work
16484         it out based on pass type.
16485         (register_dump_files_1): Likewise.
16486         (init_optimization_passes): Update register_one_dump_file calls.
16487         (execute_one_pass): Sanity check that IPA passes are called at IPA
16488         level and RTL passes at RTL level.
16489         (execute_pass_list): IPA pass can not be after or subpass of
16490         GIMPLE/RTL pass.
16491         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
16492         disallov RTL subpasses of IPA subpasses.
16493
16494 2008-04-05  Ben Elliston  <bje@au.ibm.com>
16495
16496         * tree-cfg.c (need_fake_edge_p): Return false for calls to
16497         builtins that return exactly once and do not throw. Cache call to
16498         call_expr_flags.
16499
16500 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
16501
16502         PR rtl-optimization/34916
16503         PR middle-end/35519
16504         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
16505         between instruction pairs.
16506
16507 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
16508
16509         * doc/invoke.texi: Document -mbitops for SH.
16510         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
16511         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
16512         * config/sh/sh.c (print_operand): Add %t operand code.
16513         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
16514         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
16515         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
16516         (extendqihi2): Likewise.
16517         (movqi_i): Likewise.
16518         (insv): Use bset, bclr and bst instructions for SH2A if possible.
16519         (extv): Use bld instruction for SH2A if possible.
16520         (extzv): Likewise.
16521         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
16522         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
16523         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
16524         (bset.b, bclr.b): Define peepholes.
16525         * config/sh/sh.opt (mbitops): New option.
16526
16527 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
16528
16529         PR target/35620
16530         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
16531         and view convert expression.
16532
16533 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
16534
16535         PR target/35364
16536         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16537
16538 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
16539
16540         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
16541
16542         * config/i386/cpuid.h (bit_AES): New.
16543         (bit_PCLMUL): Likewise.
16544
16545         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
16546         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
16547         SSE2 if AES or PCLMUL is enabled.
16548         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
16549         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
16550         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
16551         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
16552         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
16553         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
16554         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
16555         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
16556         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
16557         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
16558         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
16559         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
16560         __builtin_ia32_aeskeygenassist128 and
16561         __builtin_ia32_pclmulqdq128.
16562         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
16563         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
16564         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
16565
16566         * config/i386/i386.h (TARGET_AES): New.
16567         (TARGET_PCLMUL): Likewise.
16568         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
16569
16570         * config/i386/i386.md (UNSPEC_AESENC): New.
16571         (UNSPEC_AESENCLAST): Likewise.
16572         (UNSPEC_AESDEC): Likewise.
16573         (UNSPEC_AESDECLAST): Likewise.
16574         (UNSPEC_AESIMC): Likewise.
16575         (UNSPEC_AESKEYGENASSIST): Likewise.
16576         (UNSPEC_PCLMUL): Likewise.
16577
16578         * config/i386/i386.opt (maes): New.
16579         (mpclmul): Likewise.
16580
16581         * config/i386/sse.md (aesenc): New pattern.
16582         (aesenclast): Likewise.
16583         (aesdec): Likewise.
16584         (aesdeclast): Likewise.
16585         (aesimc): Likewise.
16586         (aeskeygenassist): Likewise.
16587         (pclmulqdq): Likewise.
16588
16589         * config/i386/wmmintrin.h: New.
16590
16591         * doc/extend.texi: Document AES and PCLMUL built-in function.
16592
16593         * doc/invoke.texi: Document -maes and -mpclmul.
16594
16595 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
16596
16597         * function.c (free_after_parsing): Replace with
16598         cxx_push_function_context from C++ front-end.
16599         (allocate_struct_function): Don't call langhook.
16600         * langhooks.h (struct lang_hooks_for_functions): Delete.
16601         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
16602         member "function".
16603         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
16604         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
16605         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
16606         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
16607         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
16608         remove LANG_HOOKS_FUNCTION_INITIALIZER.
16609         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
16610
16611         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
16612         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
16613
16614 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
16615
16616         PR c/35440
16617         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
16618         for all types.
16619
16620 2008-04-04  Richard Guenther  <rguenther@suse.de>
16621
16622         PR middle-end/35823
16623         * fold-const.c (optimize_minmax_comparison): Use the correct
16624         type for the constant in the simplified comparison.
16625
16626 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
16627
16628         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
16629         Pass L2 size as "--param l2-cache-size" to the compiler.
16630         (decode_l2_cache): New function to decode L2 cache parameters using
16631         0x8000006 extended cpuid function.
16632         (detect_caches_amd): Determine parameters of L2 cache using
16633         decode_l2_caches function.
16634         (decode_caches_intel): Decode L2 cache parameters.
16635         (detect_caches_intel): Determine L2 cache parameters using
16636         decode_caches_intel and decode_l2_caches functions.
16637
16638 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
16639
16640         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
16641         secondary input reload for subword loads from the constant pool.
16642
16643 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
16644
16645         PR target/35713
16646         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
16647           constants of the appropriate size for runtime calculations.
16648
16649         PR c/35712
16650         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
16651           decimal-float literal constant zero.
16652
16653 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
16654
16655         PR c/35738
16656         * c-parser.c (c_parser_omp_atomic): Call
16657         default_function_array_conversion on the RHS.
16658
16659         PR middle-end/35818
16660         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
16661         call is_variable_sized if decl has incomplete type.
16662
16663 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
16664
16665         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
16666
16667 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
16668
16669         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
16670         iterators.
16671         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
16672         (sgt<u>): Merge sgt and sgtu into new expander.
16673         (sgt, sgtu): Remove expanders.
16674         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
16675         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
16676         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
16677         *sgtu_<mode>_mips16 into new pattern.
16678         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
16679         (sge<u>): Merge sge and sgeu into new expander.
16680         (sge, sgeu): Remove expanders.
16681         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
16682         new pattern.
16683         (*sge_<mode>, second *sge_<mode>): Remove patterns.
16684         (slt<u>): Merge slt and sltu into new expander.
16685         (slt, sltu): Remove expanders.
16686         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
16687         (*slt_<mode>, *sltu_<mode>): Remove patterns.
16688         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
16689         *sltu_<mode>_mips16 into new pattern.
16690         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
16691         (sle<u>): Merge sle and sleu into new expander.
16692         (sle, sleu): Remove expanders.
16693         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
16694         (*sle_<mode>, *sleu_<mode>): Remove patterns.
16695         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
16696         *sleu_<mode>_mips16 into new pattern.
16697         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
16698
16699 2008-04-03  Jan Hubicka  <jh@suse.cz>
16700
16701         PR tree-optimization/35795
16702         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
16703         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
16704         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
16705         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
16706         * score/score3.c (score3_output_mi_thunk): Likewise.
16707         * score/score7.c (score7_output_mi_thunk): Likewise.
16708         * mips/mips.c (mips_output_mi_thunk): Likewise.
16709
16710 2008-04-03  Richard Guenther  <rguenther@suse.de>
16711
16712         * tree-vrp.c (extract_range_from_unary_expr): Handle all
16713         conversions.  Simplify code.
16714
16715 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
16716
16717         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
16718
16719 2008-04-03  Tom Tromey  <tromey@redhat.com>
16720             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16721
16722         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
16723         * config/bfin/t-bfin-linux (generated_files): Add
16724         linux-sysroot-suffix.h.
16725         * doc/install.texi (Prerequisites): Require make 3.80.
16726         * doc/sourcebuild.texi (Front End Directory): Document new
16727         variable.
16728         * Makefile.in (generated_files): New variable.
16729         (ALL_HOST_OBJS): New variable.
16730         ($(ALL_HOST_OBJS)): New target.
16731
16732 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
16733
16734         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
16735         (remap_block): Call id->transform_lang_insert_block instead
16736         of langhook.
16737         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
16738         Set id.transform_lang_insert_block to NULL.
16739         (clone_body): Move to cp/optimize.c
16740         * tree-inline.h (struct copy_body_data): Change
16741         transform_lang_insert_block to function pointer.
16742         (copy_generic_body, copy_decl_no_change): Export.
16743         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
16744         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
16745         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
16746
16747         * c-tree.h (insert_block): Kill.
16748         * c-decl.c (insert_block): Kill.
16749
16750 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
16751
16752         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
16753         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
16754         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
16755         argument.
16756         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
16757         argument, call {push,pop}_function_context from here.
16758         * c-parser.c: Use c_{push,pop}_function_context.
16759
16760         * function.c (push_function_context_to): Move meat ...
16761         (push_function_context): ... here.  Simplify.
16762         * function.c (pop_function_context_from): Move meat ...
16763         (pop_function_context): ... here.  Simplify.
16764         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
16765         leave_nested).
16766         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
16767         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
16768         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
16769         * tree.h (push_function_context_to, pop_function_context_from): Remove.
16770
16771 2008-04-03  Ben Elliston  <bje@au.ibm.com>
16772
16773         * expmed.c (extract_force_align_mem_bit_field): Remove.
16774
16775 2008-04-03  Richard Guenther  <rguenther@suse.de>
16776
16777         PR middle-end/35800
16778         * expr.h (try_casesi): Adjust prototype.
16779         * expr.c (try_casesi): Take fallback label as extra parameter.
16780         Use that for gen_casesi if default_label is NULL.
16781         * stmt.c (expand_case): Pass fallback label to try_casesi,
16782         make sure to fill gaps with a fallback label if default_label
16783         is not present.
16784
16785 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
16786
16787         PR target/35801
16788         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
16789
16790 2008-04-03  Ben Elliston  <bje@au.ibm.com>
16791
16792         * expmed.c (extract_split_bit_field): Remove if (0) code.
16793         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
16794         (do_ds_constraint): Likewise.
16795
16796 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
16797
16798         * doc/cppopts.texi (-dU): Document.
16799         * c-common.h (flag_dump_macros): Update comment.
16800         * c-opts.c (handle_OPT_d): Handle -dU.
16801         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
16802         dump_queued_macros, cb_used_define, cb_used_undef): New.
16803         (init_pp_output): Handle -dU.
16804         (cb_line_change): Call dump_queued_macros.
16805         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
16806
16807 2008-04-02  Anatoly Sokolov <aesok@post.ru>
16808
16809         * config/avr/predicates.md (io_address_operand): New predicate.
16810         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
16811         * config/avr/avr.c (avr_io_address_p): Remove function.
16812         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
16813         'avr_io_address_p' function.
16814         (out_movhi_r_mr): (Ditto.).
16815         (out_movqi_mr_r): (Ditto.).
16816         (out_movhi_mr_r): (Ditto.).
16817         (avr_address_cost): (Ditto.).
16818
16819 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
16820
16821         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
16822         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
16823         in 32bit mode when XMM registers are available to avoid store
16824         forwarding stalls.
16825         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
16826         corresponding post-reload splitters.
16827
16828 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
16829
16830         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
16831         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
16832         __builtin_ia32_roundss.
16833         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
16834         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
16835         __builtin_ia32_roundss.
16836         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
16837         IX86_BUILTIN_SHUFPD here.
16838
16839 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
16840
16841         * config/i386/i386.md (plogic): New.
16842         (plogicprefix): Likewise.
16843
16844         * config/i386/mmx.md (mmx_<code><mode>3): New.
16845         (mmx_and<mode>3): Removed.
16846         (mmx_ior<mode>3): Likewise.
16847         (mmx_xor<mode>3): Likewise.
16848
16849         * config/i386/sse.md (<code><mode>3): New.
16850         (*<code><mode>3): Likewise.
16851         (*<code><mode>3): Likewise.
16852         (<code><mode>3): Likewise.
16853         (*sse_<code><mode>3): Likewise.
16854         (*sse2_<code><mode>3): Likewise.
16855         (<code>tf3): Likewise.
16856         (*<code>tf3): Likewise.
16857         (and<mode>3): Likewise.
16858         (*and<mode>3): Likewise.
16859         (ior<mode>3): Removed.
16860         (*ior<mode>3): Likewise.
16861         (xor<mode>3): Likewise.
16862         (*xor<mode>3): Likewise.
16863         (*and<mode>3): Likewise.
16864         (*ior<mode>3): Likewise.
16865         (*xor<mode>3): Likewise.
16866         (and<mode>3): Likewise.
16867         (*sse_and<mode>3): Likewise.
16868         (*sse2_and<mode>3): Likewise.
16869         (andtf3): Likewise.
16870         (*andtf3): Likewise.
16871         (ior<mode>3): Likewise.
16872         (*sse_ior<mode>3): Likewise.
16873         (*sse2_ior<mode>3): Likewise.
16874         (iortf3): Likewise.
16875         (*iortf3): Likewise.
16876         (xor<mode>3): Likewise.
16877         (*sse_xor<mode>3): Likewise.
16878         (*sse2_xor<mode>3): Likewise.
16879         (xortf3): Likewise.
16880         (*xortf3): Likewise.
16881
16882 2008-04-02  Richard Guenther  <rguenther@suse.de>
16883
16884         PR tree-optimization/14495
16885         PR tree-optimization/34793
16886         * tree-vrp.c (struct switch_update): New structure.
16887         (to_remove_edges, to_update_switch_stmts): New VECs.
16888         (simplify_switch_using_ranges): New function.  Remove not taken
16889         case labels and edges.
16890         (simplify_stmt_using_ranges): Call it.
16891         (identify_jump_threads): Mark edges we have queued for removal
16892         so we don't thread them.
16893         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
16894         case label vector.
16895         * tree-cfg.c (group_case_labels): Deal with missing default label.
16896         (tree_verify_flow_info): Allow missing default label.
16897         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
16898         (emit_case_nodes): Likewise.
16899         (expand_case): Do not rely on the default label to be present.
16900         * expr.c (try_casesi): Deal with NULL default_label.
16901         (do_tablejump): Likewise.
16902
16903 2008-04-02  Richard Guenther  <rguenther@suse.de>
16904
16905         PR tree-optimization/14495
16906         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
16907         SWITCH_EXPR here ...
16908         (vrp_visit_switch_stmt): ... but here (new function).
16909         (find_case_label_index): New helper function.
16910         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
16911
16912 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16913
16914         * fwprop.c: Fix ISO-C99ism.
16915
16916 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16917
16918         PR bootstrap/35752
16919         * Makefile.in (objdir): Set it here.
16920         * configure.ac: Not here.  Find dynamic linker characteristics.
16921         * exec-tool.in: Use them.
16922         * aclocal.m4: Regenerate.
16923         * configure: Regenerate.
16924
16925 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16926
16927         * expr.c (expand_var): Delete it.
16928         * expr.h (expand_var): Delete prototype.
16929         * function.c (expand_function_start): Use expand_decl instead.
16930         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
16931         langhook.
16932
16933 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
16934
16935         PR rtl-optimization/35542
16936         * fwprop.c (forward_propagate_and_simplify): Replace
16937         loc_reg_mentioned_in_p with reg_mentioned_p.
16938
16939 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16940
16941         PR rtl-optimization/35281
16942         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
16943         (propagate_rtx_1): Handle PR_HANDLE_MEM.
16944         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
16945         (varying_mem_p): Move above propagate_rtx.
16946         (all_uses_available_at): Do not check MEMs.
16947
16948 2008-04-02  Rafael Espíndola  <espindola@google.com>
16949
16950         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
16951         (register_edge_assert_for_2): Split the cond argument.
16952         (register_edge_assert_for_1): Adjust for the change in
16953         register_edge_assert_for_2.
16954         (register_edge_assert_for): Split the cond argument.
16955         (find_switch_asserts): Adjust for the change in
16956         register_edge_assert_for.
16957
16958 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
16959
16960         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
16961         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
16962         offsets for 64-bit mingw.
16963         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
16964         abi for x86_64-pc-mingw.
16965
16966 2008-04-02  Richard Guenther  <rguenther@suse.de>
16967
16968         * tree-vrp.c (extract_range_from_assert): Make sure to not
16969         produce range min/max with TREE_OVERFOW set.
16970         If merging a anti-range and a range keep the anti-range if
16971         the range covers all values of the type.
16972         (register_edge_assert_for_2): Only allow sign-changing
16973         conversions in detecting canonical range checks.  Also
16974         register an assert for the unsigned name if useful.
16975
16976         PR tree-optimization/35787
16977         * tree-vrp.c (vrp_val_max): New function.
16978         (vrp_val_min): Likewise.
16979         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
16980         (vrp_val_is_min): Likewise.
16981         (supports_overflow_infinity): Use vrp_val_{min,max}.
16982         (negative_overflow_infinity): Likewise.
16983         (positive_overflow_infinity): Likewise.
16984         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
16985         (is_positive_overflow_infinity): Likewise.
16986         (is_overflow_infinity): Likewise.
16987         (avoid_overflow_infinity): Use vrp_val_{min,max} and
16988         vrp_val_is_{min,max}.
16989         (set_and_canonicalize_value_range): Canonicalize anti-ranges
16990         to ranges if possible.  Avoid empty ranges.
16991
16992 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16993
16994         PR middle-end/35705
16995         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
16996         the expression is a function address.
16997
16998 2008-04-01  George Helffrich  <george@gcc.gnu.org>
16999
17000         PR fortran/35154, fortran/23057
17001         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
17002         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
17003         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
17004         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
17005         in common.
17006         (dbxout_syms): Check for COMMON-based symbol and wrap in
17007         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
17008         in bracket for efficiency.
17009
17010         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
17011         using DW_TAG_common_block + member offset.
17012         (add_pubname_string): New function.
17013         (dw_expand_expr): New function to find block name and offset for
17014         COMMON var.
17015         (common_check): New function to check whether symbol in Fortran COMMON.
17016         (gen_variable_die): If COMMON, use DW_TAG_common_block.
17017
17018 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
17019
17020         PR c/35436
17021         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
17022
17023 2008-04-02  Ben Elliston  <bje@au.ibm.com>
17024
17025         * config/v850/v850.md (casesi): Remove if (0) code.
17026         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
17027         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
17028
17029 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
17030
17031         * config/i386/i386.md (rex64suffix): New mode attribute.
17032         (floathi<mode>2): Disable expander for SSE math.
17033         (*floathi<mode>2_1): New insn insn_and_split pattern.
17034         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
17035         corresponding post-reload splitters.
17036         (*floathi<mode>2_i387): New macroized insn pattern.
17037         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
17038         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
17039         insn_and_split pattern.
17040         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
17041         New macroized instruction patterns and corresponding post-reload
17042         splitters.
17043         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
17044         and corresponding post-reload splitters.
17045         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
17046         New macroized instruction patterns.
17047         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
17048         macroized instruction patterns and corresponding post-reload splitters.
17049         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
17050         corresponding post-reload splitters.
17051         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
17052         New macroized instruction patterns.
17053         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
17054         corresponding post-reload splitters.
17055         (*floatsi<mode>2_i387): New macroized instruction patterns.
17056
17057 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
17058
17059         * config/i386/i386.md (smaxmin): New.
17060         (umaxmin): Likewise.
17061         (maxminiprefix): Likewise.
17062         (maxminfprefix): Likewise.
17063         (<code><mode>3): Likewise.
17064         (smin<mode>3): Removed.
17065         (smax<mode>3): Likewise.
17066
17067         * config/i386/mmx.md (mmx_<code>v2sf3): New.
17068         (mmx_<code>v4hi3): Likewise.
17069         (mmx_<code>v8qi3): Likewise.
17070         (mmx_smaxv2sf3): Removed.
17071         (mmx_sminv2sf3): Likewise.
17072         (mmx_umaxv8qi3): Likewise.
17073         (mmx_smaxv4hi3): Likewise.
17074         (mmx_uminv8qi3): Likewise.
17075         (mmx_sminv4hi3): Likewise.
17076
17077         * config/i386/sse.md (<addsub><mode>3): New.
17078         (*<addsub><mode>3): Likewise.
17079         (<sse>_vm<addsub><mode>3): Likewise.
17080         (<maxmin><mode>3): Likewise.
17081         (*<maxmin><mode>3_finite): Likewise.
17082         (*<maxmin><mode>3): Likewise.
17083         (<sse>_vm<maxmin><mode>3): Likewise.
17084         (sse3_h<addsub>v4sf3): Likewise.
17085         (sse3_h<addsub>v2df3): Likewise.
17086         (<maxmin>v16qi3): Likewise.
17087         (*<maxmin>v16qi3): Likewise.
17088         (<maxmin>v8hi3): Likewise.
17089         (*<maxmin>v8hi3): Likewise.
17090         (*sse4_1_<maxmin><mode>3): Likewise.
17091         (*sse4_1_<maxmin><mode>3): Likewise.
17092         (add<mode>3): Removed.
17093         (*add<mode>3): Likewise.
17094         (<sse>_vmadd<mode>3): Likewise.
17095         (sub<mode>3): Likewise.
17096         (*sub<mode>3): Likewise.
17097         (<sse>_vmsub<mode>3): Likewise.
17098         (smin<mode>3): Likewise.
17099         (*smin<mode>3_finite): Likewise.
17100         (*smin<mode>3): Likewise.
17101         (<sse>_vmsmin<mode>3): Likewise.
17102         (smax<mode>3): Likewise.
17103         (*smax<mode>3_finite): Likewise.
17104         (*smax<mode>3): Likewise.
17105         (<sse>_vmsmax<mode>3): Likewise.
17106         (sse3_haddv4sf3): Likewise.
17107         (sse3_haddv2df3): Likewise.
17108         (sse3_hsubv4sf3): Likewise.
17109         (sse3_hsubv2df3): Likewise.
17110         (umaxv16qi3): Likewise.
17111         (*umaxv16qi3): Likewise.
17112         (smaxv8hi3): Likewise.
17113         (*smaxv8hi3): Likewise.
17114         (*sse4_1_smax<mode>3): Likewise.
17115         (*sse4_1_umax<mode>3): Likewise.
17116         (uminv16qi3): Likewise.
17117         (*uminv16qi3): Likewise.
17118         (sminv8hi3): Likewise.
17119         (*sminv8hi3): Likewise.
17120         (*sse4_1_smin<mode>3): Likewise.
17121         (*sse4_1_umin<mode>3): Likewise.
17122
17123 2008-04-01  Rafael Espíndola  <espindola@google.com>
17124
17125         * tree-cfg.c (verify_expr): remove in_phi.
17126         (verify_stmt): Don't call walk_tree with verify_expr. Use
17127         is_gimple_min_invariant instead of is_gimple_val.
17128
17129 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
17130
17131         * doc/include/gpl_v3.texi: Update for manpage generation.
17132         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
17133         gpl.texi.
17134         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
17135         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
17136         gpl_v3.texi instead of gpl.texi.
17137         (gpl.pod): New.
17138
17139 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
17140
17141         PR pch/13675
17142         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
17143
17144 2008-04-01  Rafael Espíndola  <espindola@google.com>
17145
17146         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
17147         (extract_code_and_val_from_cond): Use
17148         extract_code_and_val_from_cond_with_ops.
17149
17150 2008-04-01  Jan Hubicka  <jh@suse.cz>
17151
17152         * function.c (free_after_compilation): Free epilogue_delay_list.
17153         (prepare_function_start): Assert that previous compilation was freed.
17154
17155 2008-04-01  Jan Hubicka  <jh@suse.cz>
17156             Jim Wilson  <wilson@tuliptree.org>
17157             Andreas Tobler <andreast@gcc.gnu.org>
17158
17159         PR middle-end/35781
17160         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
17161         rtl.emit instead cfun->emit.
17162         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
17163         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
17164
17165 2008-04-01  Ben Elliston  <bje@au.ibm.com>
17166
17167         * doc/c-tree.texi (Function Basics): Fix grammatical error.
17168
17169 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
17170
17171         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
17172         New options
17173         (fprofile-use): Add var flag_profile_use
17174         * coverage.c (coverage_begin_output): Do not open a gcno file for
17175         output only if -ftest-coverage is set.
17176         Do not add getpwd() to gcda file path.
17177         (build_gcov_info): Check the new flag
17178         flag_profile_datafile_relative_path.
17179         (coverage_init): Use profile_data_prefix.
17180         Read profile counter only if flag_profile_use is set.
17181         * opts.c (common_handle_option): New option fprofile-use=,
17182         fprofile-dir=, fprofile-generate=.
17183         * toplev.c (profile_data_prefix): New variable definition.
17184         * toplev.h (profile_data_prefix): New declaration.
17185         * doc/invoke.tex (Option Summary, Optimization Options):
17186         Add new options.
17187
17188 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
17189
17190         * varasm.c (output_constant_pool_1): In LABEL_REF check,
17191         use tmp consistently.
17192
17193         PR target/35695
17194         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
17195         * config/ia64/ia64.c (rtx_needs_barrier): Handle
17196         UNSPEC_FR_RECIP_APPROX_RES.
17197         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
17198
17199 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
17200
17201         PR c/35750
17202         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
17203
17204 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17205
17206         PR middle-end/30186
17207         * fold-const.c (fold_indirect_ref_1): Support accessing non first
17208         element of the vector via a pointer.
17209
17210 2008-03-31  Ian Lance Taylor  <iant@google.com>
17211
17212         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
17213
17214 2008-03-31  Jan Hubicka  <jh@suse.cz>
17215
17216         * builtins.c (expand_builtin_setjmp_receiver): Update call of
17217         get_arg_pointer_save_area.
17218         * expr.c (init_expr): Just clear out rtl.expr.
17219         * function.c (free_after_compilation): Clear out whole RTL structure.
17220         (get_func_frame_size): Merge into ...
17221         (get_frame_size): ... this one.
17222         (assign_stack_local_1): Merge into ...
17223         (assign_stack_local): ... this one.
17224         (expand_function_end): Update call of get_arg_pointer_save_area.
17225         (get_art_pointer_save_area): Remove cfun argument.
17226         * function.h (emit_status): regno_pointer_align does not need length
17227         attribute. Move x_regno_reg_rtx to ...
17228         (regno_reg_rtx): ... new global array.
17229         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
17230         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
17231         apply_args_value, forced_labels, stack_pointer_delta):
17232         Update accestors.
17233         (struct varasm_status): Move here from varasm.c
17234         (struct rtl_data): New. Move here some fields from struct function.
17235         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
17236         frame_offset, stack_check_probe_note, arg_pointer_save_area,
17237         used_temp_slots avail_temp_slots, temp_slot_level,
17238         nonlocal_goto_handler_labels): Update accesstors.
17239         (rtl): New global variable.
17240         (struct function): Move some fileds to rtl_data.
17241         (get_arg_pointer_save_area): Update prototype.
17242         * emit-rtl.c (rtl): Declare.
17243         (regno_reg_rtx): Declare.
17244         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
17245         Update.
17246         (gen_reg_rtx): Update.
17247         (init_virtual_regs): Do not tate emit_status argument.
17248         (init_emit): Do not allocate emit.
17249         * varasm.c (varasm_statuc): Move to function.h.
17250         (n_deferred_constatns): Update accestor.
17251         (init_varasm_status): Do not allocate varasm_status.
17252         (force_const_mem, get_pool_size, output_constant_pool): Update.
17253         * stmt.c (force_label_rtx): Do not use x_ prefixes.
17254         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
17255
17256 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
17257
17258         PR rtl-optimization/35729
17259         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
17260         references.
17261
17262 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
17263
17264         PR target/32000
17265         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
17266         load/store if memory is unaligned.
17267         (*movti_rex64): Likewise.
17268
17269         * config/i386/predicates.md (misaligned_operand): New.
17270
17271 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
17272
17273         PR tree-opt/35431
17274         * tree-ssa-phiopt.c (conditional_replacement): Return early for
17275         complex types.
17276
17277 2008-03-31  Jan Beulich  <jbeulich@novell.com>
17278
17279         * config/ia64/constraints.md: Add 'j' constraint.
17280         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
17281         (movdi_internal): Likewise.
17282
17283 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
17284
17285         PR c/35748
17286         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
17287
17288 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
17289
17290         PR target/35757
17291         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
17292         proper error message for the third argument on blendpd and
17293         blendps.
17294
17295         * config/i386/sse.md (blendbits): New.
17296         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
17297
17298 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
17299
17300         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
17301
17302 2008-03-30  Richard Guenther  <rguenther@suse.de>
17303
17304         PR middle-end/31023
17305         * fold-const.c (fold_sign_changed_comparison): Do leave
17306         conversions to base-types alone.
17307
17308 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17309
17310         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
17311         the link register if one altivec register is be saved.
17312
17313 2008-03-30  Ben Elliston  <bje@au.ibm.com>
17314
17315         * final.c (final_scan_insn): Remove if (0) code.
17316
17317 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
17318
17319         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
17320
17321 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
17322
17323         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
17324         of V4SFmode to ix86_binary_operator_ok.
17325
17326 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
17327
17328         * config/i386/i386.c (override_options): Initialize
17329         ix86_veclib_handler to ix86_veclibabi_svml when
17330         -mveclibabi=svml is used.
17331         (ix86_veclibabi_svml): New function for SVML ABI style
17332         vectorization support.
17333         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
17334
17335 2008-03-28  Rafael Espíndola  <espindola@google.com>
17336
17337         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
17338         (tree_binary_nonnegative_warnv_p): Make it public.
17339         (tree_single_nonnegative_warnv_p): Make it public.
17340         (tree_invalid_nonnegative_warnv_p): Make it public.
17341         (tree_unary_nonzero_warnv_p): Make it public.
17342         (tree_binary_nonzero_warnv_p): Make it public
17343         (tree_single_nonzero_warnv_p): Make it public.
17344         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
17345         (extract_range_from_binary_expr): Split the expr argument.
17346         (extract_range_from_unary_expr): Split the expr argument.
17347         (extract_range_from_comparison): Split the expr argument.
17348         (extract_range_from_expr): Use the new aux functions.
17349         (vrp_evaluate_conditional_warnv): Use
17350         vrp_evaluate_conditional_warnv_with_ops.
17351         * tree.h (tree_unary_nonzero_warnv_p): Declare.
17352         (tree_binary_nonzero_warnv_p): Declare.
17353         (tree_single_nonzero_warnv_p): Declare.
17354         (tree_expr_nonzero_warnv_p): Declare.
17355         (tree_unary_nonnegative_warnv_p): Declare.
17356         (tree_binary_nonnegative_warnv_p): Declare.
17357         (tree_single_nonnegative_warnv_p): Declare.
17358         (tree_invalid_nonnegative_warnv_p): Declare.
17359
17360 2008-03-28  Richard Guenther  <rguenther@suse.de>
17361
17362         PR tree-optimization/30317
17363         PR tree-optimization/30911
17364         PR tree-optimization/34793
17365         * tree-vrp.c (set_and_canonicalize_value_range): New function.
17366         (struct assert_locus_d): New member EXPR.
17367         (register_new_assert_for): Add EXPR parameter to support
17368         ASSERT_EXPR <name, expr OP limit>.
17369         (register_edge_assert_for_1): Adjust callers.
17370         (find_assert_locations): Likewise.
17371         (process_assert_insertions_for): Build condition from expression.
17372         (extract_range_from_assert): Handle ASSERT_EXPRs
17373         of the form ASSERT_EXPR <name, expr OP limit>.
17374         (register_edge_assert_for_2): New helper registering
17375         asserts for comparisons.  Recognize range tests of the form
17376         (unsigned)i - CST1 OP CST2.
17377         (register_edge_assert_for_1): Use it.
17378         (register_edge_assert_for): Likewise.
17379         (needs_overflow_infinity): Integer sub-types
17380         do not need overflow infinities.
17381         (vrp_val_is_max): The extreme values of integer sub-types
17382         are those of the base type.
17383         (vrp_val_is_min): Likewise.
17384         * tree.def (ASSERT_EXPR): Document extra allowed conditional
17385         expressions.
17386
17387 2008-03-28  Nick Clifton  <nickc@redhat.com>
17388
17389         PR target/31110
17390         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
17391         Return GENERAL_REGS for stack adjustment reloads.
17392
17393 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17394
17395         PR target/31334
17396         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
17397         const_vector when all the vectors are constant.
17398
17399 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
17400
17401         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
17402         comparisons.
17403         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
17404         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
17405         (scc_sf): New.
17406         (s<code>_sf): Use new scc_sf attribute for opcode names.
17407
17408 2008-03-27  Tom Tromey  <tromey@redhat.com>
17409
17410         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
17411         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
17412         config/spu/t-spu-elf, config/i386/t-interix,
17413         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
17414         config/i386/x-darwin, config/i386/x-mingw32,
17415         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
17416         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
17417         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
17418         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
17419         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
17420         config/rs6000/x-darwin, config/rs6000/t-rs6000,
17421         config/score/t-score-elf, config/arm/t-strongarm-pe,
17422         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
17423         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
17424         Revert automatic dependency patch.
17425
17426 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17427
17428         PR target/35657
17429         * config/i386/i386.c (ix86_function_arg_boundary): Align
17430         decimal floating point to its natural boundary.
17431
17432 2008-03-27  Richard Guenther  <rguenther@suse.de>
17433
17434         PR middle-end/35716
17435         * fold-const.c (fold_comparison): Restrict distinct decl
17436         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
17437         solely rely on operand_equal_p.
17438
17439 2008-03-27  Richard Guenther  <rguenther@suse.de>
17440
17441         PR c/32511
17442         * c-common.c (handle_weak_attribute): Reject combination of
17443         weak and inline.
17444
17445 2008-03-27  Richard Guenther  <rguenther@suse.de>
17446
17447         PR tree-optimization/32810
17448         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
17449         conversions from DECL_INITIAL.
17450         (fold_const_aggregate_ref): Likewise from constructor elements.
17451
17452 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
17453
17454         * tree-affine.h (aff_combination_expand): Declare.
17455         (get_inner_reference_aff): Likewise.
17456         * tree-affine.c (aff_combination_expand): Split out from
17457         tree_to_aff_combination_expand.
17458         (get_inner_reference_aff): New function.
17459         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
17460         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
17461         (struct lim_aux_data): sm_done field removed.
17462         (mem_ref_loc_p, mem_ref_locs_p): New types.
17463         (struct mem_ref): Added id, stored, accesses_in_loop,
17464         indep_loop, dep_loop, indep_ref, dep_ref fields.
17465         Removed is_stored, locs and next fields.
17466         (memory_accesses): New variable.
17467         (movement_possibility): Do not allow moving statements
17468         that store to memory.
17469         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
17470         New functions.
17471         (determine_max_movement): For statements with memory references,
17472         find the outermost loop in that the reference is independent.
17473         (move_computations_stmt): Mark the virtual operands for renaming.
17474         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
17475         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
17476         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
17477         add_vop_ref_mapping, create_vop_ref_mapping_loop,
17478         create_vop_ref_mapping, analyze_memory_references,
17479         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
17480         get_all_locs_in_loop, ref_always_accessed_p,
17481         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
17482         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
17483         store_motion_loop, store_motion): New functions.
17484         (struct vop_to_refs_elt): New type.
17485         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
17486         memref_hash, memref_eq, hoist_memory_references): Rewritten.
17487         (schedule_sm): Replaced by...
17488         (execute_sm): ... this.
17489         (determine_lsm_ref, hoist_memory_references,
17490         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
17491         find_more_ref_vops, free_mem_ref, free_mem_refs,
17492         determine_lsm_loop, determine_lsm): Removed.
17493         (tree_ssa_lim_finalize): Free data structures used by store motion.
17494         (tree_ssa_lim): Call analyze_memory_references.  Use
17495         store_motion instead of determine_lsm.
17496
17497 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
17498
17499         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
17500         rename tmake_file to m68hc11/t-m68hc11.
17501         (mcore): Set inhibit_libc to true.
17502         * config.host (alpha*-dec-*vms*): Set extra_programs.
17503         (interix3*): Don't use host_xmake_file.
17504         * configure.ac: Let config.gcc override inhibit_libc.
17505         * configure: Regenerate.
17506
17507         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
17508         * config/t-openbsd-thread: Remove commented out lines.
17509
17510         * config/x-interix: Remove.
17511
17512         * config/m68hc11/t-m68hc11-gas: Rename to...
17513         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
17514
17515         * config/mcore/t-mcore: Remove T_CFLAGS.
17516         * config/mcore/t-mcore-pe: Likewise.
17517
17518 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
17519
17520         * configure.ac: Replace custom __GNU_SOURCE test with
17521         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
17522         * aclocal.m4: Regenerate.
17523         * configure: Regenerate.
17524         * config.in: Regenerate.
17525
17526 2008-03-27  Richard Guenther  <rguenther@suse.de>
17527
17528         * fold-const.c (target.h): Include.
17529         (fold_comparison): Fold comparison of addresses of decls
17530         that bind locally or of constants.  Consolidate address folding code.
17531         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
17532         results from fold_binary_to_constant.
17533         (compare_values_warnv): Likewise.
17534
17535 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
17536
17537         PR middle-end/35429
17538         * fold-const.c (fold_truthop): Check for integeral types when folding
17539         a == 0 && b == 0 and a != 0 || b != 0 .
17540
17541 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
17542
17543         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
17544
17545 2008-03-26  Andreas Schwab  <schwab@suse.de>
17546
17547         * doc/invoke.texi: Fix use of @item vs. @itemx.
17548
17549 2008-03-26  Tom Tromey  <tromey@redhat.com>
17550
17551         * Makefile.in (build/gensupport.o, build/print-rtl.o,
17552         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
17553         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
17554         build/gencodes.o, build/genconditions.o, build/genconfig.o,
17555         build/genconstants.o, build/genemit.o, build/genextract.o,
17556         build/genflags.o, build/genmddeps.o, build/genopinit.o,
17557         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
17558         options.h.
17559
17560 2008-03-26  Richard Guenther  <rguenther@suse.de>
17561
17562         Revert
17563         2008-03-26  Richard Guenther  <rguenther@suse.de>
17564
17565         * fold-const.c (target.h): Include.
17566         (fold_comparison): Fold comparison of addresses of two decls
17567         that bind locally.  Consolidate address folding code.
17568
17569 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17570
17571         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
17572         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
17573         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
17574         dconstsqrt2, dconstthird, dconste and/or dconst10.
17575         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
17576         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
17577         dconstsqrt2, dconste): Delete.
17578         (init_emit_once): Likewise.  Simplify initializing dconstm1.
17579         Constify variable.
17580         * real.c (get_real_const): New.
17581         * real.h (dconst3, dconst10, dconstm2, dconstthird,
17582         dconstsqrt2, dconste): Delete.
17583         (real_value_const, get_real_const): New.
17584
17585 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
17586
17587         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
17588
17589         * config/i386/i386.c (ix86_function_arg_boundary): Check
17590         BIGGEST_ALIGNMENT instead of 128.
17591         (setup_incoming_varargs_64): Likewise.
17592
17593 2008-03-26  Tom Tromey  <tromey@redhat.com>
17594
17595         * Makefile.in (DEPFILES): Add missing '/'.
17596
17597 2008-03-26  Richard Guenther  <rguenther@suse.de>
17598
17599         * fold-const.c (target.h): Include.
17600         (fold_comparison): Fold comparison of addresses of two decls
17601         that bind locally.  Consolidate address folding code.
17602
17603 2008-03-26  Nick Clifton  <nickc@redhat.com>
17604
17605         PR target/31232
17606         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
17607         not allow INT+INT as a legitimate addressing mode.
17608
17609 2008-03-26  Richard Guenther  <rguenther@suse.de>
17610
17611         * tree-flow.h (widen_bitfield): Remove declaration.
17612         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
17613         (widen_bitfield): Remove function.
17614         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
17615         code.
17616
17617 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17618
17619         PR target/31558
17620         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
17621         error_mark_node's.
17622
17623 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
17624
17625         PR rtl-optimization/35232
17626         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
17627         (forget_old_reloads_1, forget_marked_reloads): Don't clear
17628         reg_reloaded_call_part_clobbered here.
17629         (reload_regs_reach_end_p): New function.
17630         (reload_reg_rtx_for_input): New variable.
17631         (reload_reg_rtx_for_output): Likewise.
17632         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
17633         when reassigning a pseudo register.  Load reloadreg from
17634         reload_reg_rtx_for_input, moving the mode and register
17635         calculation to...
17636         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
17637         instead of the original when deciding whether an input reload
17638         would be a no-op or whether an output reload can be deleted.
17639         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
17640         when setting up new_spill_reg_store.  Load it from
17641         reload_reg_rtx_for_output, moving the mode and register
17642         calculation to...
17643         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
17644         instead of the original when deciding whether an output reload
17645         would be a no-op.  Do the same when modifying insn notes.
17646         Use rtx_equal_p instead of == to compare the registers.
17647         (inherit_piecemeal_p): Take a mode and two register numbers
17648         as argument.
17649         (emit_reload_insns): Clear new_spill_reg_store for every hard
17650         register in the reload register.  Remove spill registers
17651         from reg_reloaded_valid before considering whether to record
17652         inheritance information for them.  Use reload_reg_rtx_for_output
17653         instead of reg_rtx when recording output reloads.  Use
17654         reload_reg_rtx_for_input instead of reg_rtx when recording
17655         input reloads.  Set or clear reg_reloaded_call_part_clobbered
17656         at the same time as setting reg_reloaded_valid.
17657         (delete_output_reload): Add a new_reload_reg parameter and use it
17658         instead of rld[j].reg_rtx.
17659         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
17660         calls accordingly.
17661
17662 2008-03-25  Tom Tromey  <tromey@redhat.com>
17663
17664         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
17665         (build/genattr.o): Likewise.
17666         (build/genattrtab.o): Likewise.
17667         (build/gencodes.o): Likewise.
17668         (build/genconfig.o): Likewise.
17669         (build/genconstants.o): Likewise.
17670         (build/genemit.o): Likewise.
17671         (build/genextract.o): Likewise.
17672         (build/genflags.o): Likewise.
17673
17674 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
17675
17676         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
17677         instead of size_int for integer types.
17678         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
17679         to match type of MINUS_EXPR.
17680
17681 2008-03-25  Tom Tromey  <tromey@redhat.com>
17682
17683         * configure: Rebuilt.
17684         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
17685         Makefile.
17686
17687 2008-03-25  Tom Tromey  <tromey@redhat.com>
17688
17689         * config/x-solaris (host-solaris.o): Update.
17690         * config/x-linux (host-linux.o): Update.
17691         * config/x-hpux (host-hpux.o): Update.
17692         * config/x-darwin (host-darwin.o): Update.
17693         * config/v850/t-v850e (v850-c.o): Update.
17694         * config/v850/t-v850 (v850-c.o): Update.
17695         * config/t-vxworks (vxworks.o): Update.
17696         * config/t-sol2 (sol2-c.o, sol2.o): Update.
17697         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
17698         * config/spu/t-spu-elf (spu-c.o): Update.
17699         (spu.o): Remove.
17700         * config/sh/t-symbian (sh-c.o): Update.
17701         (symbian.o): Update.
17702         * config/sh/t-sh (sh-c.o): Update.
17703         * config/score/t-score-elf (score7.o, score3.o): Update.
17704         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
17705         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
17706         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
17707         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
17708         (rs6000.o): Remove.
17709         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
17710         * config/m32c/t-m32c (m32c-pragma.o): Update.
17711         * config/ia64/t-ia64 (ia64-c.o): Update.
17712         * config/i386/x-mingw32 (host-mingw32.o): Update.
17713         * config/i386/x-i386 (driver-i386.o): Update.
17714         * config/i386/x-darwin (host-i386-darwin.o): Update.
17715         * config/i386/x-cygwin (host-cygwin.o): Update.
17716         * config/i386/t-nwld (nwld.o): Update.
17717         * config/i386/t-netware (netware.o): Update.
17718         * config/i386/t-interix (winnt.o): Update.
17719         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
17720         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
17721         msformat-c.o): Update.
17722         * config/bfin/t-bfin-linux (generated_files): Add
17723         linux-sysroot-suffix.h.
17724         * config/arm/t-wince-pe (pe.o): Update.
17725         * config/arm/t-strongarm-pe (pe.o): Update.
17726         * config/arm/t-pe (pe.o): Update.
17727         * config/arm/t-arm (arm-c.o): Update.
17728         * doc/install.texi (Prerequisites): Require make 3.80.
17729         * Makefile.in: Remove .o targets.
17730         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
17731         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
17732         (simple_generated_h, simple_generated_c): Move earlier.
17733         (generated_files): New variable.
17734         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
17735         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
17736         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
17737         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
17738         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
17739         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
17740         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
17741         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
17742         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
17743         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
17744         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
17745         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
17746         (.c.o): Remove.
17747         (COMPILE.base, COMPILE): New variables.
17748         (%.o): New pattern rule.
17749         (ALL_HOST_OBJS): New variable.
17750         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
17751         (dummy-checksum.o, cc1-checksum.o): Remove.
17752         (DRIVER_SHLIB): New variable.
17753         (DRIVER_DEFINES): Use it.
17754         (gencondmd.c): Move out of build/.
17755         (s-conditions): Update.
17756         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
17757         (ALL_BUILD_OBJS): Likewise.
17758         (build/%.o): Use BUILDCOMPILE.
17759         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
17760         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
17761         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
17762         build/gencheck.o, build/gencodes.o, build/genconditions.o,
17763         build/genconfig.o, build/genconstants.o, build/genemit.o,
17764         build/genextract.o, build/genflags.o, build/genmddeps.o,
17765         build/genopinit.o, build/genoutput.o, build/genpeep.o,
17766         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
17767         build/gen-protos.o, build/scan.o, build/fix-header.o,
17768         build/scan-decls.o): Simplify.
17769         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
17770         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
17771         prefix.o, toplev.o): Reduce to variable setting.
17772         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
17773         ($(out_object_file), gcc-options.o): New targets.
17774         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
17775         * configure: Rebuilt.
17776         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
17777         * doc/sourcebuild.texi (Front End Directory): Document new variable.
17778
17779 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
17780
17781         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
17782         complain when we hit an error, return ERROR_MARK_NODE.
17783
17784 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17785
17786         * config/sh/constraints.md (Pso, Psz): New constraints.
17787         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
17788         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
17789
17790 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17791
17792         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
17793         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
17794
17795 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17796
17797         * config/sh/sh.md (prefetch): Add condition for SH2A target.
17798         (prefetch_sh2a): New.
17799
17800 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
17801             Naveen.H.S  <naveen.hs@kpitcummins.com>
17802
17803         * config/sh/constraints.md (I28): New constraint.
17804         * config/sh/sh.c (broken_move): Add support for movi20s.
17805         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
17806
17807 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
17808             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
17809             Naveen.H.S  <naveen.hs@kpitcummins.com>
17810
17811         * config/sh/sh.c (SH_ATTRIBUTES): Define.
17812         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
17813         (print_operand): Handle resbank in %@ operand code.
17814         (sh_encode_section_info): New.
17815         (push_regs): Add conditions for resbank.
17816         (sh_expand_epilogue): Likewise.
17817         (sh_insert_attributes): Likewise.
17818         (sh_attribute_table): Likewise.
17819         (sh_handle_resbank_handler_attribute): New.
17820         (sh2a_handle_function_vector_handler_attribute): New.
17821         (sh2a_is_function_vector_call): New.
17822         (sh2a_get_function_vector_number): New.
17823         (sh2a_function_vector_p): New.
17824         (sh_cfun_resbank_handler_p): New.
17825         * config/sh/sh.md (calli): Emit jsr/n if possible.
17826         (calli_tbr_rel): New.
17827         (calli_pcrel): Emit jsr/n if possible.
17828         (return_i): Emit rts/n if possible.
17829         (call_valuei_tbr_rel): New.
17830         (call_valuei_pcrel): Add condition for SH2A target.
17831         (call_value): Likewise.
17832         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
17833         (sh2a_get_function_vector_number): Likewise.
17834         (sh2a_is_function_vector_call): Likewise.
17835         * doc/extend.texi: Document TBR relative addressing of SH2A.
17836         (resbank): Add description for SH2A.
17837
17838 2008-03-24  Richard Guenther  <rguenther@suse.de>
17839
17840         PR c/22371
17841         * gimplify.c (gimplify_modify_expr): For frontend type-correct
17842         pointer assignments change conversions according to middle-end rules.
17843         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
17844         * configure.ac: Include type checking in yes.
17845         * configure: Regenerate.
17846
17847 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17848
17849         * diagnostic.c (diagnostic_count_diagnostic): Delete.
17850         (diagnostic_report_diagnostic): Update. Handle ICEs here.
17851
17852 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
17853
17854         * gthr-vxworks.h (UNUSED): Define.
17855
17856 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
17857
17858         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
17859
17860 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
17861
17862         * doc/extend.texi (Function Attributes): Add missing comma in the
17863         example of the "alloc_size" attribute.
17864
17865 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
17866
17867         Revert:
17868         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
17869
17870         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
17871         32bit host.
17872
17873         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
17874
17875         PR target/35496
17876         * stor-layout.c (update_alignment_for_field): Set minimum alignment
17877         of the underlying type of a MS bitfield layout to the natural
17878         alignment of the type.
17879
17880         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17881
17882         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17883         to their natural alignment to avoid store forwarding stalls.
17884
17885 2008-03-22  Richard Guenther  <rguenther@suse.de>
17886
17887         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
17888         For PHI nodes verify the address is invariant.
17889         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
17890         (get_symbol_constant_value): Use is_gimple_min_invariant.
17891         (maybe_fold_stmt_indirect): Likewise.
17892
17893 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17894
17895         PR rtl-optimization/33927
17896         * Makefile.in (dse.o): Depend on $(TM_P_H).
17897         * expr.h (extract_low_bits): Declare.
17898         * expmed.c (extract_low_bits): New function.
17899         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
17900         * dse.c: Include tm_p.h.
17901         (find_shift_sequence): Remove the read_reg argument and return the
17902         read value.  Emit the instructions instead of returning them.
17903         Iterate on new_mode rather than calculating it each time.
17904         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
17905         source to NEW_MODE and extract_low_bits to convert the shifted
17906         value to READ_MODE.
17907         (replace_read): Allow the load and store to have different mode
17908         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
17909         or extraction instructions before trying the replacement.  Update
17910         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
17911
17912 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17913
17914         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17915         to their natural alignment to avoid store forwarding stalls.
17916
17917 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17918
17919         PR target/27946
17920         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
17921         encouraging but not allowing gprs for input;
17922         change the input constraint to !f#r.
17923         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
17924         gprs for output;
17925         change the output constraint to !f#r.
17926
17927 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
17928
17929         PR target/13958
17930         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
17931         corresponding post-reload splitters.
17932         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
17933         when x87 FP math is selected.
17934         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
17935         New function prototype.
17936         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
17937         unreachable function to ease macroization of insn patterns.
17938
17939 2008-03-21  Martin Jambor  <mjambor@suse.cz>
17940
17941         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
17942         reference dumps if ddr is NULL or dependence is unknown.
17943
17944 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17945
17946         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
17947         unsigned extension into account.
17948         (ATOMIC_COMPARE_AND_SWAP): Likewise.
17949         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
17950         Do computations on a scratch register.
17951
17952 2008-03-21  Richard Guenther  <rguenther@suse.de>
17953
17954         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
17955         Use is_gimple_min_invariant instead of TREE_INVARIANT.
17956         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
17957         * tree-ssa-dom.c (record_equality): Likewise.
17958         * tree-inline.c (copy_body_r): Likewise.
17959         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
17960         TREE_INVARIANT.
17961
17962 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17963
17964         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
17965         as 'delete_unused' argument.
17966
17967 2008-03-20  Richard Guenther  <rguenther@suse.de>
17968
17969         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17970         special casing of constant qualifiers.
17971         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
17972         care about them in general.
17973         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
17974         regardless of their type.
17975         (fold_stmt_r): Forcefully fold *& if we end up with that.
17976
17977 2008-03-20  Paul Brook  <paul@codesourcery.com>
17978
17979         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
17980         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
17981         linker flags.
17982         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
17983         definition.
17984         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
17985         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
17986
17987 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
17988
17989         * common.opt (Wmudflap): New option.
17990         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
17991         (mx_register_decls): Likewise.
17992         (mudflap_finish_file): Likewise.
17993         * doc/invoke.texi: Document -Wno-mudflap.
17994
17995 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
17996
17997         * c-format.c (replace_format_name_to_system_name): New.
17998         (cmp_attribs): New.
17999         (convert_format_name_to_system_name): New.
18000         (decode_format_attr): Add use of convert_format_name_to_system_name.
18001         (format_types_orig): Add gnu_ prefix to names.
18002         (check_format_info_main): Special treating of \0 escaped names for
18003         supporting multi-character format specifiers as I32, I64.
18004         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
18005         (gnu_target_overrides_format_attributes): New.
18006         * c-format.h: Add structure target_ovr_attr to hold
18007         system specific formatter names.
18008         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
18009         msformat-c.o file to c_target_objs and cxx_target_objs.
18010         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
18011         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
18012         (TARGET_N_FORMAT_TYPES): New.
18013         * config/i386/msformat-c.c: New.
18014         * config/i386/t-cygming: Add build rule for msformat-c.o.
18015         * doc/extend.texi: Add new format names gnu_* and ms_* and
18016         further details.
18017         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
18018
18019 2008-03-20  Ira Rosen  <irar@il.ibm.com>
18020
18021         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
18022         optimizations turned on under -O3.
18023         (ftree-vectorize): Add that the flag is turned on with -O3.
18024
18025 2008-03-20  Ben Elliston  <bje@au.ibm.com>
18026
18027         * regmove.c (try_auto_increment): Fix spelling error in comment.
18028         * final.c (final_scan_insn): Likewise.
18029
18030 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
18031
18032         PR target/14552
18033         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
18034         allocator preferences for "y" and "r" class registers.
18035         ("*mov<mode>_internal"): Ditto.
18036         ("*movv2sf_internal_rex64"): Ditto.
18037         ("*movv2sf_internal"): Ditto.
18038
18039 2008-03-19  Michael Matz  <matz@suse.de>
18040
18041         PR middle-end/35616
18042         * calls.c (expand_call): Check overlap of arguments with call
18043         address for sibcalls.
18044
18045 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
18046
18047         PR target/35496
18048         * stor-layout.c (update_alignment_for_field): Set minimum alignment
18049         of the underlying type of a MS bitfield layout to the natural
18050         alignment of the type.
18051
18052 2008-03-19  Jan Hubicka  <jh@suse.cz>
18053
18054         PR other/35094
18055         * toplev.c (decode_d_option): Handle all CPP flags.
18056         * tree-vrp.c: Update tree_pass descriptors.
18057         * regrename.c: Update tree_pass descriptors.
18058         * fwprop.c: Update tree_pass descriptors.
18059         * doc/invoke.texi: Remove documentation of dropped -d? flags.
18060         * tree-into-ssa.c: Update tree_pass descriptors.
18061         * tree-dump.c: Update tree_pass descriptors.
18062         * tree-complex.c: Update tree_pass descriptors.
18063         * tree-dump.h: Update tree_pass descriptors.
18064         * see.c: Update tree_pass descriptors.
18065         * cgraphbuild.c: Update tree_pass descriptors.
18066         * tracer.c: Update tree_pass descriptors.
18067         * tree-loop-distribution.c: Update tree_pass descriptors.
18068         * cgraph.c: Update tree_pass descriptors.
18069         * postreload-gcse.c: Update tree_pass descriptors.
18070         * postreload.c: Update tree_pass descriptors.
18071         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
18072         * tree-tailcall.c: Update tree_pass descriptors.
18073         * tree-pass.h (tree_opt_pass): Rename to ...
18074         (opt_pass) ... this one; add "type" field and remove letter field.
18075         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
18076         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
18077         all_lowering_passes): Update declaration.
18078         * ipa-cp.c: Update tree_pass descriptors.
18079         * final.c: Update tree_pass descriptors.
18080         * omp-low.c: Update tree_pass descriptors.
18081         * tree-ssa-dse.c: Update tree_pass descriptors.
18082         * ipa-reference.c: Update tree_pass descriptors.
18083         * tree-ssa-uncprop.c: Update tree_pass descriptors.
18084         * auto-inc-dec.c: Update tree_pass descriptors.
18085         * reorg.c: Update tree_pass descriptors.
18086         * cgraphunit.c: Update tree_pass descriptors.
18087         * tree-ssa-copyrename.c: Update tree_pass descriptors.
18088         * tree-ssa-ccp.c: Update tree_pass descriptors.
18089         * df-core.c: Update tree_pass descriptors.
18090         * mode-switching.c: Update tree_pass descriptors.
18091         * tree-nomudflap.c: Update tree_pass descriptors.
18092         * modulo-sched.c: Update tree_pass descriptors.
18093         * ipa-pure-const.c: Update tree_pass descriptors.
18094         * cse.c: Update tree_pass descriptors.
18095         * web.c: Update tree_pass descriptors.
18096         * tree-stdarg.c: Update tree_pass descriptors.
18097         * tree-ssa-math-opts.c: Update tree_pass descriptors.
18098         * tree-ssa-dom.c: Update tree_pass descriptors.
18099         * tree-nrv.c: Update tree_pass descriptors.
18100         * tree-ssa-alias.c: Update tree_pass descriptors.
18101         * loop-init.c: Update tree_pass descriptors.
18102         * gimple-low.c: Update tree_pass descriptors.
18103         * ipa-inline.c: Update tree_pass descriptors.
18104         * tree-ssa-sink.c: Update tree_pass descriptors.
18105         * global.c: Update tree_pass descriptors.
18106         * ifcvt.c: Update tree_pass descriptors.
18107         * jump.c: Update tree_pass descriptors.
18108         * predict.c: Update tree_pass descriptors.
18109         * tree-ssa-loop.c: Update tree_pass descriptors.
18110         * recog.c: Update tree_pass descriptors.
18111         * dse.c: Update tree_pass descriptors.
18112         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
18113         * tree-eh.c: Update tree_pass descriptors.
18114         * regmove.c: Update tree_pass descriptors.
18115         * local-alloc.c
18116         * function.c: Update tree_pass descriptors.
18117         * tree-vectorizer.c: Update tree_pass descriptors.
18118         * gcse.c: Update tree_pass descriptors.
18119         * ipa-type-escape.c: Update tree_pass descriptors.
18120         * tree-if-conv.c: Update tree_pass descriptors.
18121         * init-regs.c: Update tree_pass descriptors.
18122         * ipa.c: Update tree_pass descriptors.
18123         * tree-ssa-phiopt.c: Update tree_pass descriptors.
18124         * rtl-factoring.c: Update tree_pass descriptors.
18125         * lower-subreg.c: Update tree_pass descriptors.
18126         * bt-load.c: Update tree_pass descriptors.
18127         * tree-dfa.c: Update tree_pass descriptors.
18128         * except.c: Update tree_pass descriptors.
18129         * emit-rtl.c: Update tree_pass descriptors.
18130         * cfgexpand.c: Update tree_pass descriptors.
18131         * tree-cfgcleanup.c: Update tree_pass descriptors.
18132         * cfgcleanup.c: Update tree_pass descriptors.
18133         * tree-ssa-pre.c: Update tree_pass descriptors.
18134         * tree-sra.c: Update tree_pass descriptors.
18135         * tree-mudflap.c: Update tree_pass descriptors.
18136         * tree-ssa-copy.c: Update tree_pass descriptors.
18137         * cfglayout.c: Update tree_pass descriptors.
18138         * tree-ssa-forwprop.c: Update tree_pass descriptors.
18139         * tree-ssa-dce.c: Update tree_pass descriptors.
18140         * tree-ssa.c: Update tree_pass descriptors.
18141         * regclass.c: Update tree_pass descriptors.
18142         * integrate.c: Update tree_pass descriptors.
18143         * tree-optimize.c: Update tree_pass descriptors.
18144         * tree-ssa-phiprop.c: Update tree_pass descriptors.
18145         * tree-object-size.c: Update tree_pass descriptors.
18146         * combine.c: Update tree_pass descriptors.
18147         * tree-outof-ssa.c: Update tree_pass descriptors.
18148         * bb-reorder.c: Update tree_pass descriptors.
18149         * stack-ptr-mod.c: Update tree_pass descriptors.
18150         * var-tracking.c: Update tree_pass descriptors.
18151         * tree-profile.c: Update tree_pass descriptors.
18152         * tree-vect-generic.c: Update tree_pass descriptors.
18153         * reg-stack.c: Update tree_pass descriptors.
18154         * sched-rgn.c: Update tree_pass descriptors.
18155         * tree-ssa-structalias.c: Update tree_pass descriptors.
18156         * tree-cfg.c: Update tree_pass descriptors.
18157         * passes.c (current_pass): Update declaration.
18158         (finish_optimization_passes): Update.
18159         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
18160         (register_one_dump_file, register_dump_files_1, next_pass_1):
18161         Update arguments.
18162         (init_optimization_passes): Update handling of new types.
18163         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
18164         * ipa-struct-reorg.c: Update tree_pass descriptors.
18165         * tree-ssa-reassoc.c: Update tree_pass descriptors.
18166         * combine-stack-adj.c: Update tree_pass descriptors.
18167         * cfgrtl.c: Update tree_pass descriptors.
18168         * dce.c: Update tree_pass descriptors.
18169         * tree-ssanames.c: Update tree_pass descriptors.
18170
18171 2008-03-19  Richard Guenther  <rguenther@suse.de>
18172
18173         PR middle-end/35609
18174         * tree-ssa.c (walk_data): New structure.
18175         (warn_uninitialized_var): If not always_executed warn with "maybe"
18176         instead of "is".
18177         (execute_early_warn_uninitialized): Compute post-dominators.
18178         Initialize always_executed before processing each basic block.
18179
18180 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
18181
18182         PR target/35504
18183         * config/i386/i386.c (x86_this_parameter): Calculate correct location
18184         of "this" pointer when "regparm = N" or "fastcall" is in effect.
18185
18186 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18187
18188         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
18189
18190 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
18191
18192         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
18193         is true.
18194         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
18195         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
18196         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
18197         target after ignore has been set, and move there also the commputation
18198         of subtarget and original_target.
18199         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
18200         (LANG_HOOKS_INITIALIZER): Remove it.
18201         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
18202
18203 2008-03-18  Richard Guenther  <rguenther@suse.de>
18204
18205         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
18206         found an expression with constants, note that in the VN for the lhs.
18207         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
18208         fold them to constants if possible.  Run cleanup_cfg if done so.
18209         (execute_pre): Return todo.
18210         (do_pre): Likewise.
18211         (execute_fre): Likewise.
18212         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
18213         of constants.
18214         (get_prop_source_stmt): Look through pointer conversions.
18215
18216 2008-03-18  Jan Hubicka  <jh@suse.cz>
18217
18218         * tree-pretty-print.c: Include predict.h.
18219         (dump_generic_node): Dump predictor.
18220         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
18221         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
18222         * gimple-low.c (lower_stmt): Likewise.
18223         * expr.c (expand_expr_real): Likewise.
18224         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
18225         them.
18226         (build_predict_expr, build_predict_expr): New.
18227         * predict.h (predictor_name, build_predict_expr): Update.
18228         * c-typeck.c (c_finish_bc_stmt): Add prediction.
18229         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
18230         * predict.def (PRED_CONTINUE): Update hitrate.
18231         * tree.def (PREDICT_EXPR): Define.
18232         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
18233         do not handle BIND_EXPR.
18234         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
18235         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
18236         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
18237         operands.
18238
18239 2008-03-18  Michael Matz  <matz@suse.de>
18240
18241         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
18242
18243 2008-03-18  Richard Guenther  <rguenther@suse.de>
18244
18245         * tree-gimple.h (is_gimple_invariant_address): Declare.
18246         (is_gimple_constant): Likewise.
18247         * tree-gimple.c (is_gimple_constant): New function.
18248         (is_gimple_invariant_address): Likewise.
18249         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
18250         and is_gimple_invariant_address.
18251         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
18252         previous change.
18253         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
18254         an addressable base.
18255
18256 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
18257
18258         PR middle-end/35611
18259         * gimplify.c (gimplify_expr): Gimplify second operand of
18260         OMP_ATOMIC_LOAD.
18261
18262 2008-03-17  Richard Guenther  <rguenther@suse.de>
18263
18264         PR tree-optimization/19637
18265         * fold-const.c (fold_unary): Remove restrictions of removing
18266         intermediate pointer-conversions (P2)(P1)P0.
18267         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
18268         conversion to void pointer.
18269         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
18270
18271 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
18272
18273         PR debug/31510
18274         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
18275         emulated thread local variables.
18276
18277 2008-03-16  Richard Guenther  <rguenther@suse.de>
18278
18279         PR middle-end/35607
18280         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
18281         expand TREE_INVARIANT operations that are not gimple invariant.
18282
18283 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
18284
18285         * doc/extend.texi (Alignment): Say that the ABI controls
18286         the __alignof__ for non-strict-alignment targets rather
18287         than being a recommendation.
18288
18289 2008-03-15  Paul Brook  <paul@codesourcery.com>
18290
18291         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
18292         annotations.
18293         (arm_output_fn_unwind): Mark functions that can not be unwound.
18294
18295 2008-03-15  Paul Brook  <paul@codesourcery.com>
18296
18297         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
18298         extension instructions.
18299
18300 2008-03-15  Richard Guenther  <rguenther@suse.de>
18301
18302         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
18303         and fold constant aggregate refs.
18304         (fold_const_aggregate_ref): Handle string constants
18305         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
18306         (evaluate_stmt): Simplify now that ccp_fold folds constant
18307         aggregate refs.
18308
18309 2008-03-15  Paul Brook  <paul@codesourcery.com>
18310
18311         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
18312         (extzv): Use gen_extzv_t2.
18313         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
18314
18315 2008-03-15  Richard Guenther  <rguenther@suse.de>
18316
18317         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
18318         (fold_const_aggregate_ref): Likewise.
18319         (get_value): Return NULL if we don't have any values.
18320         (ccp_finalize): Set const_val to NULL after freeing it.
18321         * tree-flow.h (get_symbol_constant_value): Declare.
18322         (fold_const_aggregate_ref): Likewise.
18323         * tree-ssa-sccvn.c (try_to_simplify): Use them.
18324
18325 2008-03-15  Richard Guenther  <rguenther@suse.de>
18326
18327         PR middle-end/35593
18328         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
18329         to not produce negative array indices if not allowed.  Add
18330         parameter to indicate that.
18331         (maybe_fold_offset_to_component_ref): Allow negative array
18332         indices only for the first member of a structure.
18333         (maybe_fold_offset_to_reference): Allow negative array indices.
18334         (maybe_fold_stmt_addition): Likewise.
18335
18336 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
18337             Anatoly Sokolov <aesok@post.ru>
18338
18339         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
18340         (avr_arch): Add ARCH_AVR6.
18341         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
18342         (initial_elimination_offset): Initialize and use 'avr_pc_size'
18343         instead of fixed value 2.
18344         (print_operand_address): Use gs() asm specifier instead of pm().
18345         (avr_assemble_integer): (Ditto.).
18346         (avr_output_addr_vec_elt): (Ditto.).
18347         (print_operand): Handle "!" code.
18348         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
18349         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
18350         (AVR_HAVE_EIJMP_EICALL): Define.
18351         (AVR_3_BYTE_PC): Redefine.
18352         (AVR_2_BYTE_PC): (Ditto.).
18353         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
18354         (LINK_SPEC): Add atmega2560 and atmega2561.
18355         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
18356         (crtm2561.o).
18357         * config/avr/avr.md (call_insn): Use eicall instead of icall
18358         for 3 byte PC devices.
18359         (call_value_insn): (Ditto.).
18360         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
18361         (indirect_jump): Use only for for 2 byte PC devices.
18362         (*tablejump): (Ditto.).
18363         (*indirect_jump_avr6): Add insn.
18364         (*tablejump_rjmp): Don't use for 3 byte PC devices.
18365         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
18366         instead of ijmp for 3 byte PC devices.
18367         (__tablejump2__): (Ditto.).
18368         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
18369         (MULITLIB_DIRNAMES): (Ditto.).
18370         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
18371
18372 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
18373
18374         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
18375         "sse2_umulsidi3".  Use V1DI mode for operand 0.
18376         ("mmx_psadbw"): Use V1DI mode for operand 0.
18377         * config/i386/i386-modes.def (V1SI): New vector mode.
18378         * config/i386/i386.c (struct builtin_description)
18379         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
18380         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
18381         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
18382         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
18383         v1di_ftype_v8qi_v8qi type.
18384         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
18385
18386         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
18387         __builtin_ia32_pmuludq]: Fix the mode of return value.
18388
18389 2008-03-15  Richard Guenther  <rguenther@suse.de>
18390
18391         PR middle-end/35595
18392         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
18393         being a PHI_NODE.
18394
18395 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
18396
18397         * doc/invoke.texi (Option Summary, Xtensa Options): Document
18398         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
18399         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
18400         unless TARGET_SERIALIZE_VOLATILE is enabled.
18401         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
18402         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
18403         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
18404
18405 2008-03-14  Richard Guenther  <rguenther@suse.de>
18406
18407         PR tree-optimization/34172
18408         * tree-flow.h (refs_may_alias_p): Declare.
18409         (get_single_def_stmt): Likewise.
18410         (get_single_def_stmt_from_phi): Likewise.
18411         (get_single_def_stmt_with_phi): Likewise.
18412         * tree-dfa.c (refs_may_alias_p): New function.
18413         (get_single_def_stmt): Likewise.
18414         (get_single_def_stmt_from_phi): Likewise.
18415         (get_single_def_stmt_with_phi): Likewise.
18416         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
18417         (vn_reference_lookup_1): New helper function.
18418         (vn_reference_lookup): Walk the virtual use-def chain to
18419         continue searching for a match if the def does not alias the
18420         reference we are looking for.
18421
18422 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
18423
18424         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
18425         archive and Perzl.  Update The Written Word listing.
18426
18427 2008-03-14  Richard Guenther  <rguenther@suse.de>
18428
18429         PR tree-optimization/34043
18430         PR tree-optimization/33989
18431         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
18432         when doing FRE.
18433         (bitmap_find_leader): Use extra argument to verify dominance
18434         relationship inside a basic-block.
18435         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
18436         (find_leader_in_sets): Adjust.
18437         (create_component_ref_by_pieces): Take extra argument for
18438         dominance check, handle lookup failures.
18439         (find_or_generate_expression): Likewise.
18440         (create_expression_by_pieces): Likewise.
18441         (insert_into_preds_of_block): Adjust.
18442         (create_value_expr_from): If asked for, verify all operands
18443         are in the blocks AVAIL_OUT set.
18444         (make_values_for_stmt): Check for SSA_NAMEs that are life
18445         over an abnormal edge.
18446         (compute_avail): Remove such check.
18447         (do_SCCVN_insertion): New function.
18448         (eliminate): If we do not find a leader suitable for replacement
18449         insert a replacement expression from SCCVN if available.
18450         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
18451         (struct vn_ssa_aux): Add needs_insertion flag.
18452         * tree-ssa-sccvn.c (may_insert): New global flag.
18453         (copy_reference_ops_from_ref): Value-number union member access
18454         based on its size, not type and member if insertion is allowed.
18455         (visit_reference_op_load): For a weak match from union type
18456         punning lookup a view-converted value and insert a SSA_NAME
18457         for that value if that is not found.
18458         (visit_use): Make dumps shorter.  Do not disallow value numbering
18459         SSA_NAMEs that are life over an abnormal edge to constants.
18460         (free_scc_vn): Release inserted SSA_NAMEs.
18461         (run_scc_vn): New flag to specify whether insertion is allowed.
18462         Process SSA_NAMEs in forward order.
18463         * tree-ssa-loop-im.c (for_each_index): Handle invariant
18464         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
18465         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
18466         pointer type to/from integral types that do not change the
18467         precision to regular conversions.
18468
18469 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
18470
18471         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
18472         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
18473         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
18474         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
18475         input arguments and the mode of return value.  Built-in functions
18476         that operate on whole 64-bit MMX register now use V1DI mode.
18477
18478 2008-03-13  Alon Dayan  <alond@il.ibm.com>
18479             Olga Golovanevsky  <olga@il.ibm.com>
18480
18481         PR tree-optimization/35041
18482         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
18483         to locate the right position in a statement.
18484
18485 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
18486
18487         PR target/34000
18488         PR target/35553
18489         * config/i386/xmmintrin.h:  Change all static inline functions to
18490         extern inline and add __gnu_inline__ attribute.
18491         * config/i386/bmintrin.h: Ditto.
18492         * config/i386/smmintrin.h: Ditto.
18493         * config/i386/tmmintrin.h: Ditto.
18494         * config/i386/mmintrin-common.h: Ditto.
18495         * config/i386/ammintrin.h: Ditto.
18496         * config/i386/emmintrin.h: Ditto.
18497         * config/i386/pmmintrin.h: Ditto.
18498         * config/i386/mmintrin.h: Ditto.
18499         * config/i386/mm3dnow.h: Ditto.
18500
18501 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
18502
18503         PR middle-end/35185
18504         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
18505         (lower_omp_2): New function.
18506         (lower_omp_1, lower_omp): Rewritten.
18507
18508 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
18509
18510         PR 35054
18511         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
18512         with the phrase "Microsoft Windows compilers".
18513         (Push/Pop Macro Pragmas): New subsection. Document
18514         #pragma push_macro and pragma pop_macro.
18515
18516 2008-03-12  Paul Brook  <paul@codesourcery.com>
18517
18518         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
18519
18520 2008-03-12  Paul Brook  <paul@codesourcery.com>
18521
18522         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
18523         (thumb2_alusi3_short): Exclude PLUS and MINUS.
18524         (thumb2_addsi_shortim): Rename ...
18525         (thumb2_addsi_short): ... to this.  Allow register operands.
18526         (thumb2_subsi_short): New pattern.
18527         (thumb2_one_cmplsi2_short,
18528         thumb2_negsi2_short): New patterns and peepholes.
18529
18530 2008-03-12  Paul Brook  <paul@codesourcery.com>
18531
18532         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
18533
18534 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
18535
18536         * config/i386/i386.md (int_cond): New code iterator.
18537         (fp_cond): Ditto.
18538         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
18539         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
18540         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
18541         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
18542         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
18543         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
18544         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
18545         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
18546
18547 2008-03-12  Paul Brook  <paul@codesourcery.com>
18548
18549         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
18550         instead of {arm,thumb}_compute_save_reg_mask.
18551         (output_return_instruction): Ditto.
18552         (thumb_unexpanded_epilogue): Ditto.
18553         (thumb1_expand_prologue): Ditto.
18554         (thumb1_output_function_prologue): Ditto.
18555         (arm_set_return_address): Ditto.
18556         (thumb_set_return_address): Ditto.
18557         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
18558         regs to achieve stack alignment.
18559         (thumb1_compute_save_reg_mask): Fix compiler warning.
18560         (arm_output_epilogue): Use offsets->saved_regs_mask.
18561         Adjust stack pointer by poping call clobered registers.
18562         (arm_expand_prologue): Use offsets->saved_regs_mask.
18563         Adjust stack pointer by pushing extra registers.
18564         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
18565
18566 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
18567
18568         PR tree-opt/35422
18569         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
18570         conversion to the operands of a multiplication.
18571
18572 2008-03-12  Richard Guenther  <rguenther@suse.de>
18573
18574         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
18575         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
18576         * timevar.def (TV_TREE_PHIPROP): Add.
18577         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
18578         pass description.  Use TV_TREE_PHIPROP.
18579         * tree-ssa-forwprop.c: Remove phiprop code.
18580
18581 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
18582
18583         PR middle-end/35549
18584         * omp-low.c (maybe_lookup_decl): Constify first argument.
18585         (use_pointer_for_field): Change last argument from bool to
18586         omp_context *.  Disallow shared copy-in/out in nested
18587         parallel if decl is shared in outer parallel too.
18588         (build_outer_var_ref, scan_sharing_clauses,
18589         lower_rec_input_clauses, lower_copyprivate_clauses,
18590         lower_send_clauses, lower_send_shared_vars): Adjust callers.
18591
18592 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
18593             Ira Rosen  <irar@il.ibm.com>
18594
18595         * tree-vectorizer.c (free_stmt_vec_info): New function.
18596         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
18597         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
18598         * tree-vectorizer.h (free_stmt_vec_info): Declare.
18599         * tree-vect-transform.c (vectorizable_conversion): Free
18600         vec_oprnds0 if it was allocated.
18601         (vect_permute_store_chain): Remove unused VECs.
18602         (vectorizable_store): Free VECs that are allocated in the..
18603         function.
18604         (vect_transform_strided_load, vectorizable_load): Likewise.
18605         (vect_remove_stores): Simplify the code.
18606         (vect_transform_loop): Move code to vect_remove_stores().
18607         Call vect_remove_stores() and free_stmt_vec_info().
18608
18609 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18610
18611         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
18612         TARGET_HPUX.  Revise comment.
18613         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
18614         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
18615         Use sr4 variant of `be' instruction when not generating PIC code.
18616         (attr_length_call): Adjust for above change.
18617
18618 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18619
18620         * ipa-reference.c (static_execute): Remove module_statics_const and
18621         associated setting code.
18622
18623 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
18624
18625         PR target/35540
18626         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
18627         predicate for operand 1.
18628         (paritysi2_cmp): Use register_operand predicate for operand 2.
18629         Use earlyclobber modifier for operand 1.  Remove support for
18630         memory operands.
18631         (paritydi2_cmp): Use register_operand predicate for operand 3.
18632         Use earlyclobber modifier for operand 1.  Remove support for
18633         memory operands.
18634
18635 2008-03-11  Paul Brook  <paul@codesourcery.com>
18636             Vladimir Prus  <vladimir@codesourcery.com>
18637
18638         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
18639         (arm_compute_save_reg0_reg12_mask): Always
18640         check if register 11 must be saved.  Always safe hard frame pointer
18641         when frame_pointer_needeed.
18642         (arm_compute_save_reg_mask): Save IP and PC
18643         only with apcs frames.
18644         (arm_output_epilogue): Adjust Thumb2 codepath to
18645         be also invoked and work for ARM non-apcs frames.
18646         (arm_expand_prologue): Don't bother saving IP
18647         for non-apcs frame, since it's not clobbered by
18648         prologue code.  Implement non-apcs frame
18649         layout.
18650
18651 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
18652
18653         PR rtl-optimization/35281
18654         * expr.c (convert_move): Use a new pseudo for the intermediate
18655         from_mode->word_mode result.
18656
18657 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
18658
18659         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
18660         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
18661         * toplev.c (compile_file): Don't call it.
18662
18663 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
18664
18665         PR middle-end/35526
18666         * expr.c (store_expr): Call emit_block_move if the mode
18667         of "temp" RTX is BLKmode.
18668
18669 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18670             Richard Guenther  <rguenther@suse.de>
18671
18672         PR tree-optimization/31358
18673         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
18674         the step with a NULL_TREE.
18675         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
18676         to sizetype if type is a pointer type.
18677         (add_candidate_1): Don't convert the base and step to
18678         the generic type if the orginal type is a pointer type.
18679         (add_iv_value_candidates): Use sizetype for the step
18680         if type is a pointer type.
18681         (cand_value_at): Likewise.
18682         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
18683         for pointer types.
18684         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
18685         Don't convert the tem affine to the type.
18686         (add_elt_to_tree): Use sizetype for the step if a pointer.
18687         Use POINTER_PLUS_EXPR for pointers.
18688         (aff_combination_to_tree): Use sizetype for the step if a
18689         pointer.
18690
18691 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
18692
18693         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
18694         Remove commutativity hint.
18695
18696 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
18697
18698         PR c/35438
18699         PR c/35439
18700         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
18701         errorneous type.  Check that v is a VAR_DECL.
18702
18703         PR middle-end/35099
18704         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
18705
18706 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
18707
18708         PR tree-optimization/35494
18709         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
18710         may be overriden at link and run time.
18711
18712 2008-03-10  Richard Guenther  <rguenther@suse.de>
18713
18714         PR tree-optimization/34677
18715         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
18716         (poolify_tree): Likewise.
18717         (modify_expr_template): Likewise.
18718         (poolify_modify_stmt): Likewise.
18719         (insert_fake_stores): Handle all component-ref style stores
18720         in addition to INDIRECT_REF.  Also handle complex types.
18721         Do not poolify the inserted load.
18722         (realify_fake_stores): Do not rebuild the tree but only
18723         make it a SSA_NAME copy.
18724         (init_pre): Remove initialzation of modify_expr_template.
18725         Do not allocate modify_expr_node_pool.
18726         (fini_pre): Do not free modify_expr_node_pool.
18727
18728 2008-03-10  Paul Brook  <paul@codesourcery.com>
18729
18730         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
18731         to avoid conflicts.
18732
18733 2008-03-10  Paul Brook  <paul@codesourcery.com>
18734             Mark Shinwell  <shinwell@codesourcery.com>
18735
18736         * config/arm/cortex-r4.md: New.
18737         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
18738         insn attributes.
18739         * config/arm/arm.md: Include cortex-r4.md.
18740         (insn): Add smmls, sdiv and udiv values.
18741         (generic_sched): Don't use generic scheduling for Cortex-R4.
18742         (arm_issue_rate): New function.
18743         (TARGET_SCHED_ISSUE_RATE): Define.
18744
18745 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
18746
18747         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
18748
18749 2008-03-10  Richard Guenther  <rguenther@suse.de>
18750
18751         * tree-ssa-pre.c (get_sccvn_value): Simplify.
18752         (compute_avail): Do not add stmt uses to AVAIL_OUT.
18753
18754 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
18755
18756         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
18757         Set default to true.
18758
18759 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18760
18761         * c.opt (Wsynth): Deprecate.
18762         * doc/invoke.texi (Option Summary, Warning Options): Document
18763         -Wno-format-contains-nul.
18764
18765 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
18766
18767         PR target/35496
18768         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
18769         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
18770
18771 2008-03-09  Ira Rosen  <irar@il.ibm.com>
18772
18773         * config/rs6000/rs6000.c (builtin_description): Rename vector
18774         left shift operations.
18775         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
18776         (altivec_vsl<VI_char>): Rename to ...
18777         (ashl<mode>3): ... new name.
18778         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
18779         gen_ashlv4si3.
18780         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
18781
18782 2008-03-08  Richard Guenther  <rguenther@suse.de>
18783
18784         * coverage.h (tree_coverage_counter_addr): Declare.
18785         * coverage.c (tree_coverage_counter_addr): New function.
18786         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
18787         before using again.
18788         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
18789         (tree_gen_one_value_profiler): Likewise.
18790         (tree_gen_ic_profiler): Likewise.
18791         (tree_gen_average_profiler): Likewise.
18792         (tree_gen_ior_profiler): Likewise.
18793
18794 2008-03-08  Richard Guenther  <rguenther@suse.de>
18795
18796         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
18797         (vn_binary_op_insert): Likewise.
18798         (vn_unary_op_lookup): Likewise.
18799         (vn_unary_op_insert): Likewise.
18800         (vn_nary_op_lookup): Declare.
18801         (vn_nary_op_insert): Likewise.
18802         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
18803         and binary hashes, use a single obstack for unary_op_pool
18804         and binary_op_pool.
18805         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
18806         a single struct vn_nary_op_s.  Store tree code length and
18807         a variable number of operands.
18808         (struct vn_reference_op_struct): Remove unused op2.
18809         (vn_reference_op_eq): Do not compare op2.
18810         (vn_reference_op_compute_hash): Do not compute hash of op2.
18811         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
18812         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
18813         with vn_nary_op_compute_hash.
18814         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
18815         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
18816         vn_nary_op_lookup.
18817         (vn_unary_op_insert, vn_binary_op_insert): Replace with
18818         vn_nary_op_insert.
18819         (visit_unary_op): Call nary functions.
18820         (visit_binary_op): Likewise.
18821         (process_scc): Adjust for struct vn_tables_s changes.
18822         (allocate_vn_table): Likewise.
18823         (free_vn_table): Likewise.
18824         * tree-vn.c (vn_add): Call nary functions.
18825         (vn_lookup): Likewise.
18826
18827 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
18828
18829         PR target/35498
18830         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
18831         wdst back after sync_compare_and_swapqhi_internal.
18832
18833 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
18834
18835         PR target/22152
18836         * config/i386/i386-modes.def (V1DI): New vector mode.
18837         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
18838         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
18839         (MMXMODE248): Ditto.
18840         (MMXMODE): Add V1DI mode.
18841         (mmxvecsize): Change DI mode to V1DI mode.
18842         ("mov<mode>): Use MMXMODEI8 mode iterator.
18843         ("*mov<mode>_internal_rex64"): Ditto.
18844         ("*mov<mode>_internal"): Ditto.
18845         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
18846         ("mmx_sub<mode>3"): Ditto.
18847         ("mmx_adddi3"): Remove insn pattern.
18848         ("mmx_subdi3"): Ditto.
18849         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
18850         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
18851         ("mmx_ashl<mode>3"): Ditto.
18852         ("mmx_lshrdi3"): Remove insn pattern.
18853         ("mmx_ashldi3"): Ditto.
18854         * config/i386/i386.c (classify_argument): Handle V1DImode.
18855         (function_arg_advance_32): Ditto.
18856         (function_arg_32): Ditto.
18857         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
18858         mmx_addv1di3 insn pattern.
18859         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
18860         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
18861         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
18862         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
18863         Remove definitions of built-in functions.
18864         (V1DI_type_node): New node.
18865         (v1di_ftype_v1di_int): Ditto.
18866         (v1di_ftype_v1di_v1di): Ditto.
18867         (v2si_ftype_v2si_si): Ditto.
18868         (v4hi_ftype_v4hi_di): Remove node.
18869         (v2si_ftype_v2si_di): Ditto.
18870         (ix86_init_mmx_sse_builtins): Handle V1DImode.
18871         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
18872         Redefine builtins using def_builtin_const with *_ftype_*_int node.
18873         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
18874         Add new builtins using def_builtin_const.
18875         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
18876         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
18877         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
18878         * config/i386/mmintrin.h (__v1di): New typedef.
18879         (_mm_add_si64): Cast arguments to __v1di type.
18880         (_mm_sub_si64): Ditto.
18881         (_mm_sll_pi16): Cast __count to __v4hi type.
18882         (_mm_sll_pi32): Cast __count to __v2si type.
18883         (_mm_sll_si64): Cast arguments to __v1di type.
18884         (_mm_srl_pi16): Cast __count to __v4hi type.
18885         (_mm_srl_pi32): Cast __count to __v2si type.
18886         (_mm_srl_si64): Cast arguments to __v1di type.
18887         (_mm_sra_pi16): Cast __count to __v4hi type.
18888         (_mm_sra_pi32): Cast __count to __v2si type.
18889         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
18890         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
18891         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
18892         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
18893         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
18894         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
18895         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
18896         (_mm_srai_pi32): Use __builtin_ia32_psradi.
18897         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
18898         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
18899         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
18900         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
18901
18902 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
18903
18904         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
18905
18906 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
18907
18908         PR target/35373
18909         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
18910         reg+const addressing for Altivec modes.  Don't generate reg+reg
18911         addressing for TFmode or TDmode quantities.
18912
18913 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
18914
18915         * c-common.c (vector_types_convertible_p): Call langhook
18916         instead of comptypes.
18917
18918 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18919
18920         PR tree-opt/35402
18921         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
18922         integral and scalar float variables which have a
18923         NULL DECL_INITIAL.
18924
18925 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
18926
18927         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
18928         dwarf_register_span hook when emitting unwind information for
18929         register-to-memory saves.
18930         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
18931         (rs6000_frame_related): Remove call to spe_synthesize_frame.
18932
18933 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
18934
18935         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
18936         for the same VAR_DECL.
18937
18938 2008-03-06  Tom Tromey  <tromey@redhat.com>
18939
18940         * treelang: Delete.
18941         * doc/standards.texi (Standards): Don't mention treelang.
18942         * doc/invoke.texi (Overall Options): Don't mention treelang.
18943         * doc/install.texi (Prerequisites): Don't mention bison or
18944         treelang.
18945         (Configuration): Don't mention treelang.
18946         (Building): Likewise.
18947         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
18948
18949 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
18950
18951         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
18952         word-extractions out of a multi-word object.
18953
18954 2008-03-06  Richard Guenther  <rguenther@suse.de>
18955
18956         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
18957         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
18958         result type and precision.
18959         * expr.c (get_inner_reference): Set unsignedp based on the result
18960         type of BIT_FIELD_REF.
18961         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
18962         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
18963         (try_instantiate_multiple_fields): Likewise.  Use the correct type
18964         for BIT_FIELD_REF.
18965         (sra_build_assignment): Likewise.
18966         (sra_build_elt_assignment): Likewise.
18967         (sra_explode_bitfield_assignment): Likewise.
18968         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
18969         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
18970         set BIT_FIELD_REF_UNSIGNED.
18971         (vectorizable_load): Likewise.
18972
18973 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
18974
18975         * cse.c (cse_extended_basic_block): Invalidate artificial defs
18976         at bb start.
18977
18978 2008-03-06  Richard Guenther  <rguenther@suse.de>
18979
18980         * alias.c (struct alias_set_entry): Move has_zero_child field
18981         to pack with alias_set.
18982
18983 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
18984
18985         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18986         32bit host.
18987
18988 2008-03-05  Ian Lance Taylor  <iant@google.com>
18989
18990         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
18991
18992 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
18993
18994         * fwprop.c (update_df): Support width and offset parameters of
18995         df_ref_create.
18996         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
18997         global_conflicts): Change DF_REF_EXTRACT to either
18998         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18999         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19000         * df-scan.c (df_ref_record, df_defs_record,
19001         df_ref_create_structure, df_def_record_1, df_uses_record,
19002         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
19003         df_bb_refs_collect, df_entry_block_defs_collect,
19004         df_exit_block_uses_collect): Support new width and offset fields.
19005         (ref_extract_pool): New storage pool.
19006         (df_free_ref): New function.
19007         (df_reg_chain_unlink, df_free_collection_rec,
19008         df_sort_and_compress_refs): Call df_free_ref.
19009         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
19010         of df_ref_extract.
19011         (df_ref_create_structure): Allocate df_ref_extract if offset and
19012         width fields are used.
19013         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
19014         (df_uses_record): Get offset and width from ZERO_EXTRACT
19015         and SIGN_EXTRACT.
19016         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
19017         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
19018         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19019         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
19020         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
19021         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
19022         (df_ref_extract): New structure.
19023         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
19024         (df_ref_create): Add width and offset parameters.
19025
19026 2008-03-05  Richard Guenther  <rguenther@suse.de>
19027
19028         * tree-ssa-structalias.c (get_constraint_for_component_ref):
19029         Use ranges_overlap_p.
19030         (offset_overlaps_with_access): Rename
19031         to ranges_overlap_p and move ...
19032         * tree-flow-inline.h (ranges_overlap_p): ... here.
19033
19034         * tree.h (get_inner_reference, handled_component_p): Update
19035         comments.
19036
19037         * tree.h (record_component_aliases, get_alias_set,
19038         alias_sets_conflict_p, alias_sets_must_conflict_p,
19039         objects_must_conflict_p): Move declarations ...
19040         * alias.h (record_component_aliases, get_alias_set,
19041         alias_sets_conflict_p, alias_sets_must_conflict_p,
19042         objects_must_conflict_p): ... here.
19043         Include coretypes.h.
19044         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
19045
19046 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
19047
19048         * cfg.c: Include tree-flow.h.
19049         (remove_edge_raw): Call redirect_edge_var_map_clear.
19050         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
19051         * tree-flow-inline.h (redirect_edge_var_map_def): New.
19052         (redirect_edge_var_map_result): New.
19053         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
19054         PENDING_STMT use with redirect_edge_var_map_*.
19055         * tree-ssa.c (edge_var_maps): New definition.
19056         (redirect_edge_var_map_add): New.
19057         (redirect_edge_var_map_clear): New.
19058         (redirect_edge_var_map_dup): New.
19059         (redirect_edge_var_map_vector): New.
19060         (redirect_edge_var_map_destroy): New.
19061         (ssa_redirect_edge): Replace PENDING_STMT use with
19062         redirect_edge_var_map_*.
19063         (flush_pending_stmts): Same.
19064         (delete_tree_ssa): Destroy edge var map.
19065         * tree-flow.h (struct _edge_var_map): New.
19066         Define edge_var_map vector type.
19067         Declare redirect_edge_var_map_* prototypes.
19068         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
19069         * tree-cfg.c (reinstall_phi_args): Replace
19070         PENDING_STMT use with redirect_edge_var_map_*.
19071
19072 2008-03-05  Richard Guenther  <rguenther@suse.de>
19073
19074         PR tree-optimization/35472
19075         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
19076         whose single use_stmt has a overlapping set of loaded and
19077         stored symbols as that use_stmt might be a noop assignment then.
19078
19079 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
19080
19081         * gthr-rtems.h: Implement __gthread_mutex_destroy.
19082
19083 2008-03-05  Richard Guenther  <rguenther@suse.de>
19084
19085         PR c++/35336
19086         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
19087         should be constants.
19088         * tree-cfg.c (verify_expr): Verify it.
19089         * fold-const.c (fold_truthop): Remove code generating
19090         BIT_FIELD_REFs of structure bases.
19091         (fold_binary): Likewise.
19092         (fold_ternary): Position and size of BIT_FIELD_REFs are
19093         always host integers.
19094         (make_bit_field_ref): Remove.
19095         (optimize_bit_field_compare): Remove.
19096         (all_ones_mask_p): Remove.
19097
19098 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
19099
19100         PR gcc/33009
19101         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
19102         (split_block_and_df_analyze): New. Split basic block and rebuild
19103         dataflow.
19104         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
19105         SPLIT_BLOCK.
19106         (split_pattern_seq): Likewise.
19107         (erase_matching_seqs): Likewise.
19108         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
19109
19110 2008-03-04  Geoff Keating  <geoffk@apple.com>
19111
19112         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
19113         declaration and code.
19114         (tree_invalid_nonnegative_warnv_p): Likewise.
19115
19116 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
19117
19118         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
19119         examples.  Truncate option-names then causing overfull hbox.
19120
19121 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19122
19123         PR target/35222
19124         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
19125         on hpux10.
19126         * configure: Rebuilt.
19127
19128 2008-03-04  Rafael Espíndola  <espindola@google.com>
19129
19130         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
19131         (tree_unary_nonnegative_warnv_p): New.
19132         (tree_binary_nonnegative_warnv_p): New.
19133         (tree_single_nonnegative_warnv_p): New.
19134         (tree_invalid_nonnegative_warnv_p): New.
19135         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
19136
19137 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19138
19139         PR 28322
19140         * opts.c (handle_option): Postpone 'unknown option' errors only for
19141         warning options.
19142
19143 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
19144
19145         PR target/35453
19146         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
19147         (_SIDD_XXX): This.
19148
19149 2008-03-04  Rafael Espíndola  <espindola@google.com>
19150
19151         * fold-const.c (tree_unary_nonzero_warnv_p): New.
19152         (tree_binary_nonzero_warnv_p): New.
19153         (tree_single_nonzero_warnv_p): New.
19154         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
19155
19156 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
19157
19158         PR middle-end/35456
19159         * fold-const.c (fold_cond_expr_with_comparison): Prevent
19160         transformations for modes that have signed zeros.
19161         * ifcvt.c (noce_try_abs): Ditto.
19162
19163 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
19164
19165         * config/i386/i386.c (override_options): Force
19166         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
19167
19168 2008-03-04  Jan Hubicka  <jh@suse.cz>
19169
19170         PR c++/35262
19171         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
19172         in last commit.
19173
19174 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
19175
19176         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
19177         label to probe the stack.
19178
19179 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
19180
19181         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
19182         (__gthr_win32_mutex_destroy): Declare.
19183         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
19184         __gthr_win32_mutex_destroy.
19185         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
19186
19187 2008-03-03  Jan Hubicka  <jh@suse.cz>
19188
19189         PR c++/35262
19190         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
19191         aggressive on inlining cold calls.
19192
19193 2008-03-03  Richard Guenther  <rguenther@suse.de>
19194
19195         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
19196         struct copies into the expression table.
19197         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
19198         (try_to_simplify): Likewise.
19199         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
19200         integral and pointer arguments which do not change the
19201         precision to NOP_EXPRs.
19202         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
19203         VIEW_CONVERT_EXPR case.
19204
19205 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
19206
19207         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
19208         defined in a loop at depth 0 is invariant.
19209         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
19210         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
19211         be called at loop depth 0.
19212
19213 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
19214
19215         PR driver/35420
19216         * gcc.c (process_command): Update copyright notice dates.
19217         * gcov.c (print_version): Likewise.
19218         * gcov-dump.c (print_version): Likewise.
19219         * mips-tfile.c (main): Likewise.
19220         * mips-tdump.c (main): Likewise.
19221
19222 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19223
19224         PR 24924
19225         * c-common.c (flag_permissive): Delete.
19226         (constant_expression_warnings): Check flags first.
19227         (constant_expression_error): New.
19228         * c-common.h (flag_permissive): Delete.
19229         (constant_expression_error): Declare.
19230         * flags.h (flag_permissive): Declare. Update description.
19231         * diagnostic.c (pedwarn): Update.
19232         (permerror): New.
19233         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
19234         (permissive_error_kind): New.
19235         * toplev.c (flag_permissive): Define. Update description.
19236         * toplev.h (permissive_error_kind): Declare.
19237         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
19238         (pedwarn_c90): Use pedantic_warning_kind.
19239         * c-opts.c (c_common_post_options): flag_permissive does not affect
19240         flag_pedantic_errors.
19241
19242 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
19243
19244         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
19245         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
19246         __absvsi2, __absvDI2): Use unsigned arithmetic.
19247
19248 2008-03-02  Andi Kleen  <ak@suse.de>
19249             Richard Guenther  <rguenther@suse.de>
19250
19251         * struct-equiv.c: Remove file.
19252         * cfg_cleanup.c (condjump_equiv_p): Remove.
19253         * Makefile.in (OBJS-common): Remove struct-equiv.o.
19254         (struct-equiv.o): Remove rule.
19255         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
19256         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
19257         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
19258
19259 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19260
19261         * ifcvt.c (noce_process_if_block): Try to handle only the then
19262         block if the else block exists but isn't suitable.
19263
19264 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19265
19266         PR gcc/35063
19267         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
19268         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
19269         regression from previous patch.
19270
19271 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19272
19273         PR gcc/35063
19274         * gthr.h: Add __gthread_mutex_destroy as a function that must be
19275         implemented.
19276         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
19277         * gthr-single.h (__gthread_mutex_destroy): Likewise.
19278         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
19279         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
19280         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
19281         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
19282         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
19283         (__gthread_mutex_destroy_function): Rename to
19284         __gthread_mutex_destroy.
19285         * gthr-dce.h (__gthread_mutex_destroy): Call
19286         pthread_mutex_destroy.
19287         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
19288         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
19289         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
19290
19291 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19292
19293         * df-scan.c (df_ref_chain_change_bb): Simplify.
19294         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
19295         set_block_for_insn if there's any change.
19296         * df.h ((df_insn_change_bb): Fix prototype.
19297         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
19298         df_insn_change_bb, don't call set_block_for_insn.
19299         * emit-rtl.c (reorder_insns): Likewise.
19300         * haifa-sched.c (move_insn): Likewise.
19301
19302 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19303
19304         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
19305
19306 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19307
19308         * tree-flow-inline.h (next_readonly_imm_use): Return
19309         NULL_USE_OPERAND_P after the end.
19310
19311 2008-03-01  Richard Guenther  <rguenther@suse.de>
19312
19313         PR tree-optimization/35411
19314         * tree-sra.c (sra_build_assignment): Split conversion to
19315         final type to a separate statement if we are not assigning
19316         to a register.
19317
19318 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19319
19320         * fold-const.c (fold_convertible_p): Correct the logic to follow
19321         that in fold_convert().
19322
19323 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
19324
19325         PR c++/35315
19326         * tree-inline.c (build_duplicate_type): When we make a
19327         duplicate type, make it unique in the canonical types system.
19328
19329 2008-02-29  Tom Tromey  <tromey@redhat.com>
19330
19331         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
19332         input_file_stack_history, input_file_stack_restored): Remove.
19333         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
19334         * input.h (struct file_stack): Remove.
19335         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
19336         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
19337         Likewise.
19338         * diagnostic.h (struct diagnostic_context) <last_module>: Change
19339         type.
19340         (diagnostic_last_module_changed): Add 'map' argument.
19341         (diagnostic_set_last_function): Likewise.
19342         * diagnostic.c (undiagnostic_report_current_module): Iterate using
19343         line map, not input_file_stack.
19344         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
19345
19346 2008-02-29  Paul Brook  <paul@codesourcery.com>
19347
19348         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
19349
19350 2008-02-29  Paul Brook  <paul@codesourcery.com>
19351
19352         * config/arm/ieee754-df.S (muldf3): Use RET macros.
19353
19354 2008-02-29  Richard Guenther  <rguenther@suse.de>
19355
19356         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
19357         vn_lookup_or_add.
19358         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
19359         value for comparing for a store match.
19360         (simplify_unary_expression): Do nothing for SSA_NAMEs.
19361         (try_to_simplify): Do not do a full-blown reference lookup.
19362
19363 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
19364
19365         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
19366         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
19367
19368         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
19369
19370 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
19371
19372         * tree-loop-linear.c (try_interchange_loops): Compare memory access
19373         strides against cache sizes.
19374
19375 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
19376
19377         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
19378         constant to fpul.
19379
19380 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
19381
19382         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
19383         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
19384         is smaller than the original promoted value.
19385         (simplify_subreg): If OP is a SUBREG, try to preserve its
19386         SUBREG_PROMOTED_VAR_P information.
19387
19388 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
19389
19390         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
19391         (VN_INFO_GET): Allocate new objects on the obstack.
19392         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
19393         for rpo_numbers_temp, for consistency.
19394         (free_scc_vn): Free the obstack.
19395
19396 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
19397
19398         * doc/invoke.texi: Document -ftree-loop-distribution.
19399         * tree-loop-distribution.c: New.
19400         * tree-pass.h (pass_loop_distribution): New.
19401         * graphds.h (struct graph): Add htab_t indices.
19402         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
19403         * tree-vectorizer.c (rename_variables_in_loop): Extern.
19404         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
19405         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
19406         * tree-data-ref.c (debug_data_dependence_relations): New.
19407         (dump_data_dependence_relation): Also print data references.
19408         (free_data_ref): Extern.
19409         (same_access_functions): Moved...
19410         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
19411         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
19412         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
19413         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
19414         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
19415         (stmts_from_loop): Skip LABEL_EXPR.
19416         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
19417         New.
19418         (build_rdg): Initialize rdg->indices htab.
19419         (free_rdg, stores_from_loop, ref_base_address,
19420         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
19421         have_similar_memory_accesses_1, ref_base_address_1,
19422         remove_similar_memory_refs): New.
19423         * tree-data-ref.h: Depend on tree-chrec.h.
19424         (debug_data_dependence_relations, free_data_ref): Declared.
19425         (same_access_functions): ... here.
19426         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
19427         New.
19428         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
19429         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
19430         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
19431         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
19432         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
19433         rdg_vertex_for_stmt): Declared.
19434         (struct rdg_edge): Add level.
19435         (RDGE_LEVEL): New.
19436         (free_rdg, stores_from_loop, remove_similar_memory_refs,
19437         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
19438         Declared.
19439         (rdg_has_similar_memory_accesses): New.
19440         * tree-vect-analyze.c: Remove unused static decls.
19441         * lambda.h (dependence_level): New.
19442         * common.opt (ftree-loop-distribution): New.
19443         * tree-flow.h (mark_virtual_ops_in_bb,
19444         slpeel_tree_duplicate_loop_to_edge_cfg,
19445         rename_variables_in_loop): Declared.
19446         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
19447         (OBJS-common): Add tree-loop-distribution.o.
19448         (tree-loop-distribution.o): New rule.
19449         * tree-cfg.c (mark_virtual_ops_in_bb): New.
19450         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
19451         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
19452
19453 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
19454
19455         PR target/33963
19456         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
19457         other than structures and unions.
19458
19459 2008-02-28  Richard Guenther  <rguenther@suse.de>
19460
19461         Revert:
19462         2008-02-26  Richard Guenther  <rguenther@suse.de>
19463
19464         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19465         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19466         (lookup_decl_from_uid): Declare.
19467         (remove_decl_from_map): Likewise.
19468         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19469         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19470         (decl_for_uid_map): New global hashtable mapping DECL_UID
19471         to the decl tree.
19472         (init_ttree): Allocate it.
19473         (insert_decl_to_uid_decl_map): New helper function.
19474         (make_node_stat): Insert new decls into the map.
19475         (copy_node_stat): Likewise.
19476         (lookup_decl_from_uid): New function.
19477         (remove_decl_from_map): Likewise.
19478         (print_decl_for_uid_map_statistics): New helper.
19479         (dump_tree_statistics): Call it.
19480
19481         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19482         (referenced_var_iterator): Adjust.
19483         (FOR_EACH_REFERENCED_VAR): Adjust.
19484         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19485         (num_referenced_vars): Adjust.
19486         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19487         (first_referenced_var): Remove.
19488         (end_referenced_vars_p): Likewise.
19489         (next_referenced_var): Likewise.
19490         (referenced_var_iterator_set): New helper function.
19491         * tree-dfa.c (referenced_var_lookup): Adjust.
19492         (referenced_var_check_and_insert): Likewise.
19493         (remove_referenced_var): Likewise.
19494         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19495         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19496         (verify_call_clobbering): Likewise.
19497         (verify_memory_partitions): Likewise.
19498         (init_tree_ssa): Allocate bitmap instead of hashtable for
19499         referenced_vars.
19500         (delete_tree_ssa): Adjust.
19501         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19502         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19503         (compute_tag_properties): Likewise.
19504         (set_initial_properties): Likewise.
19505         (find_partition_for): Likewise.
19506         (update_reference_counts): Likewise.
19507         (dump_may_aliases_for): Likewise.
19508         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19509         (add_call_clobber_ops): Likewise.
19510         (add_call_read_ops): Likewise.
19511         (get_asm_expr_operands): Likewise.
19512         * tree-into-ssa.c (dump_decl_set): Likewise.
19513         (update_ssa): Likewise.
19514         * tree-sra.c (scan_function): Likewise.
19515         (decide_instantiations): Likewise.
19516         (scalarize_parms): Likewise.
19517         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19518         (dsa_named_for): Likewise.
19519         * tree-ssa-structalias.c (update_alias_info): Likewise.
19520         (merge_smts_into): Likewise.
19521
19522 2008-02-27  David Daney  <ddaney@avtrex.com>
19523
19524         PR target/34409
19525         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
19526         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
19527         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
19528         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
19529         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
19530
19531 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
19532
19533         PR target/25477
19534         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
19535         (BUILT_IN_NEXTTOWARD): Remove.
19536         (BUILT_IN_NEXTTOWARDF): Ditto.
19537         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
19538         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
19539
19540 2008-02-27  Tom Tromey  <tromey@redhat.com>
19541
19542         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
19543         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
19544
19545 2008-02-27  Jan Beulich  <jbeulich@novell.com>
19546
19547         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
19548         update the respective field on newdecl.
19549
19550 2008-02-27  Revital Eres  <eres@il.ibm.com>
19551
19552         PR rtl-optimization/34999
19553         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
19554         crossing edges that ends with a call insn.
19555         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
19556         call insn and clear the EDGE_CROSSING flag of the crossing edge
19557         when fixing fallthru edges.
19558
19559 2008-02-27  Richard Guenther  <rguenther@suse.de>
19560
19561         PR middle-end/35390
19562         * fold-const.c (fold_unary): Return the correct argument,
19563         converted to the result type.
19564
19565 2008-02-27  Richard Guenther  <rguenther@suse.de>
19566
19567         PR middle-end/34971
19568         * expr.c (expand_expr_real_1): Assert on rotates that operate
19569         on partial modes.
19570         * fold-const.c (fold_binary): Use the types precision, not the
19571         bitsize of the mode if folding rotate expressions.  Build rotates
19572         only for full modes.
19573
19574 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
19575
19576         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
19577         and CPP_PRAGMA_EOL.
19578         * c-pragma.c (pragma_ns_name): New typedef.
19579         (registered_pp_pragmas): New variable.
19580         (c_pp_lookup_pragma): New function.
19581         (c_register_pragma_1): If flag_preprocess_only, do nothing
19582         for non-expanded pragmas, for expanded ones push pragma's
19583         namespace and name into registered_pp_pragmas vector.
19584         (c_invoke_pragma_handler): Register OpenMP pragmas even when
19585         flag_preprocess_only, don't register GCC pch_preprocess
19586         pragma if flag_preprocess_only.
19587         * c-opts.c (c_common_init): Call init_pragma even if
19588         flag_preprocess_only.
19589         * c-pragma.c (c_pp_lookup_pragma): New prototype.
19590         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
19591         cpp_register_pragma if flag_preprocess_only.
19592
19593 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19594
19595         PR c/28800
19596         * c-parser.c (c_parser_translation_unit): Warn for empty
19597         translation unit, not empty source file.
19598
19599 2008-02-26  Paul Brook  <paul@codesourcery.com>
19600
19601         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
19602         operand for Thumb-2.
19603         * config/arm/arm.h (reg_class): Add CORE_REGS.
19604         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
19605         (BASE_REG_CLASS): Use CORE_REGS.
19606         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
19607         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
19608         (REGNO_OK_FOR_INDEX_P): Exclude SP.
19609         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
19610         ARM_REGNO_OK_FOR_INDEX_P.
19611         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
19612         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
19613         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
19614         (ldm/stm peepholes): Ditto.
19615         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
19616         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
19617         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
19618         * config/arm/constraints.md: Enable "k" constraint on ARM.
19619
19620 2008-02-27  Ben Elliston  <bje@au.ibm.com>
19621
19622         * config/rs6000/rs6000.c: Annotate cache line size field in all
19623         instances of struct processor_costs.
19624
19625 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
19626
19627         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
19628         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
19629         jump_bypass): New counters.
19630         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
19631         * dce.c (gate_ud_dce): Same.
19632         (gate_fast_dce): Same.
19633         * dse.c (gate_dse1): New function.
19634         (gate_dse2): New function.
19635         (gate_dse): Merge results of new gate functions.
19636         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
19637         (gate_handle_jump_bypass): Add dbg_cnt.
19638         (gate_handle_gcse): Add dbg_cnt.
19639         * ifcvt.c (gate_handle_if_conversion): Same.
19640         (gate_handle_if_after_combine): Same.
19641         (gate_handle_if_after_reload): Same.
19642         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
19643
19644 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
19645
19646         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
19647         line sizes.
19648         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
19649
19650 2008-02-26  Jason Merrill  <jason@redhat.com>
19651
19652         PR c++/35315
19653         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
19654         alone if it's the naming decl for the type's main variant.
19655
19656 2008-02-26  Tom Tromey  <tromey@redhat.com>
19657
19658         * system.h (USE_MAPPED_LOCATION): Poison.
19659         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
19660         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
19661         (make_goto_expr_edges): Likewise.
19662         (remove_bb): Likewise.
19663         (execute_warn_function_return): Likewise.
19664         * basic-block.h (struct edge_def) <goto_locus>: Change type to
19665         location_t.
19666         * c-common.c (fname_decl): Remove old location code.
19667         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
19668         location code.
19669         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
19670         variant.
19671         (ASM_INPUT_SOURCE_LOCATION): Likewise.
19672         (gen_rtx_ASM_INPUT): Likewise.
19673         (gen_rtx_ASM_INPUT_loc): Likewise.
19674         (get_rtx_asm_OPERANDS): Remove.
19675         * cfglayout.c (insn_locators_alloc): Remove old location code.
19676         (set_curr_insn_source_location): Likewise.
19677         (curr_insn_locator): Likewise.
19678         * print-tree.c (print_node): Remove old location code.
19679         * tree-mudflap.c (mf_varname_tree): Remove old location code.
19680         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
19681         * cfgexpand.c (expand_gimple_cond_expr): Don't use
19682         location_from_locus.
19683         (construct_exit_block): Remove old location code.
19684         * emit-rtl.c (force_next_line_note): Remove old location code.
19685         * profile.c (branch_prob): Remove old location code.
19686         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
19687         LOC_LINE): Remove old-location variants.
19688         * langhooks.c (lhd_print_error_function): Remove old location
19689         code.
19690         * configure, config.in: Rebuilt.
19691         * configure.ac (--enable-mapped-location): Remove.
19692         * c-decl.c (c_init_decl_processing): Remove old location code.
19693         (finish_function): Likewise.
19694         * recog.c (decode_asm_operands): Remove old location code.
19695         * c-pch.c (c_common_read_pch): Remove old location code.
19696         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
19697         variants.
19698         * gimple-low.c (lower_function_body): Remove old location code.
19699         * toplev.c (unknown_location): Remove.
19700         (push_srcloc): Remove old-location variant.
19701         (process_options): Remove old location code.
19702         (lang_dependent_init): Likewise.
19703         * input.h (UNKNOWN_LOCATION): Move definition.
19704         (location_t): Undeprecate.
19705         (source_locus): Remove.
19706         (location_from_locus): Remove.
19707         (struct location_s): Remove.
19708         Remove all old-location code.
19709         (input_line, input_filename): Remove.
19710         * final.c (final_scan_insn): Remove old location code.
19711         * diagnostic.c (diagnostic_build_prefix): Remove
19712         USE_MAPPED_LOCATION test.
19713         * tree.h (gimple_stmt) <locus>: Now a location_t.
19714         (tree_exp) <locus>: Likewise.
19715         (DECL_IS_BUILTIN): Remove old-location variant.
19716         (annotate_with_file_line, annotate_with_locus): Likewise.
19717         (expr_locus, set_expr_locus): Update.
19718         * tree.c (build1_stat): Remove old location code.
19719         (last_annotated_node): Remove.
19720         (annotate_with_file_line): Remove old-location variant.
19721         (annotate_with_locus): Likewise.
19722         (expr_location): Remove old location code.
19723         (set_expr_location): Likewise.
19724         (expr_has_location): Likewise.
19725         (expr_locus): Likewise.
19726         (set_expr_locus): Likewise.
19727         (expr_filename): Don't use location_from_locus.
19728         (expr_lineno): Likewise.
19729         * rtl-error.c (location_for_asm): Remove old location code.
19730         * c-lex.c (cb_line_change): Remove old location code.
19731         (fe_file_change): Likewise.
19732         (cb_def_pragma): Likewise.
19733         (c_lex_with_flags): Likewise.
19734         * gengtype.c (do_typedef): Don't special-case location types.
19735         (define_location_structures): Remove.
19736         (main): Don't call define_location_structures.
19737         * tree-pretty-print.c (dump_implicit_edges): Remove old location
19738         code.
19739
19740 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19741
19742         PR 26264
19743         * builtins.def (BUILT_IN_STDARG_START): Remove.
19744         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
19745         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
19746         * tree-inline.c (inline_forbidden_p_1): Likewise.
19747
19748 2008-02-26  Richard Guenther  <rguenther@suse.de>
19749
19750         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19751         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19752         (lookup_decl_from_uid): Declare.
19753         (remove_decl_from_map): Likewise.
19754         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19755         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19756         (decl_for_uid_map): New global hashtable mapping DECL_UID
19757         to the decl tree.
19758         (init_ttree): Allocate it.
19759         (insert_decl_to_uid_decl_map): New helper function.
19760         (make_node_stat): Insert new decls into the map.
19761         (copy_node_stat): Likewise.
19762         (lookup_decl_from_uid): New function.
19763         (remove_decl_from_map): Likewise.
19764         (print_decl_for_uid_map_statistics): New helper.
19765         (dump_tree_statistics): Call it.
19766
19767         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19768         (referenced_var_iterator): Adjust.
19769         (FOR_EACH_REFERENCED_VAR): Adjust.
19770         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19771         (num_referenced_vars): Adjust.
19772         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19773         (first_referenced_var): Remove.
19774         (end_referenced_vars_p): Likewise.
19775         (next_referenced_var): Likewise.
19776         (referenced_var_iterator_set): New helper function.
19777         * tree-dfa.c (referenced_var_lookup): Adjust.
19778         (referenced_var_check_and_insert): Likewise.
19779         (remove_referenced_var): Likewise.
19780         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19781         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19782         (verify_call_clobbering): Likewise.
19783         (verify_memory_partitions): Likewise.
19784         (init_tree_ssa): Allocate bitmap instead of hashtable for
19785         referenced_vars.
19786         (delete_tree_ssa): Adjust.
19787         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19788         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19789         (compute_tag_properties): Likewise.
19790         (set_initial_properties): Likewise.
19791         (find_partition_for): Likewise.
19792         (update_reference_counts): Likewise.
19793         (dump_may_aliases_for): Likewise.
19794         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19795         (add_call_clobber_ops): Likewise.
19796         (add_call_read_ops): Likewise.
19797         (get_asm_expr_operands): Likewise.
19798         * tree-into-ssa.c (dump_decl_set): Likewise.
19799         (update_ssa): Likewise.
19800         * tree-sra.c (scan_function): Likewise.
19801         (decide_instantiations): Likewise.
19802         (scalarize_parms): Likewise.
19803         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19804         (dsa_named_for): Likewise.
19805         * tree-ssa-structalias.c (update_alias_info): Likewise.
19806         (merge_smts_into): Likewise.
19807
19808 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19809
19810         PR 34351
19811         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
19812         * c-opts.c (c_common_handle_option): Wall enables
19813         Wvolatile-register-var.
19814         * common.opt: Move Wvolatile-register-var to...
19815         * c.opt: ...here.
19816
19817 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19818
19819         * common.opt (Wlarger-than=): New.
19820         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
19821         -Wlarger-than=.
19822         * opts.c (common_handle_option): Handle -Wlarger-than=.
19823         * optc-gen.awk: Likewise.
19824         * opth-gen.awk: Likewise.
19825         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
19826         * tree-optimize.c (tree_rest_of_compilation): Likewise.
19827
19828 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
19829
19830         * c-common.c (match_case_to_enum_1): Add appropriate
19831         OPT_W* parameter to warning.
19832         (c_do_switch_warnings): Likewise.
19833         * c-typeck.c (warning_init): Add one more parameter following
19834         'warning' function.
19835         (push_init_level): Update call to warning_init.
19836         (pop_init_level): Likewise.
19837         (add_pending_init): Likewise.
19838         (output_init_element: Likewise.
19839
19840 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19841
19842         PR 28322
19843         * toplev.c (toplev_main): If there are warnings or error, print
19844         errors for ignored options.
19845         * opts.c (ignored_options): New static variable.
19846         (postpone_unknown_option_error): New.
19847         (print_ignored_options): New.
19848         (handle_option): Postpone errors for unknown -Wno-* options.
19849         * opts.h (print_ignored_options): Declare.
19850
19851 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
19852
19853         * config/mips/mips.md (loadgp_blockage, blockage): Change type
19854         to "ghost".
19855
19856 2008-02-25  Richard Guenther  <rguenther@suse.de>
19857
19858         Revert:
19859         2008-02-25  Richard Guenther  <rguenther@suse.de>
19860
19861         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19862         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19863         (lookup_decl_from_uid): Declare.
19864         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19865         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19866         (decl_for_uid_map): New global hashtable mapping DECL_UID
19867         to the decl tree.
19868         (init_ttree): Allocate it.
19869         (insert_decl_to_uid_decl_map): New helper function.
19870         (make_node_stat): Insert new decls into the map.
19871         (copy_node_stat): Likewise.
19872         (lookup_decl_from_uid): New function.
19873         (print_decl_for_uid_map_statistics): New helper.
19874         (dump_tree_statistics): Call it.
19875
19876         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19877         (referenced_var_iterator): Adjust.
19878         (FOR_EACH_REFERENCED_VAR): Adjust.
19879         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19880         (num_referenced_vars): Adjust.
19881         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19882         (first_referenced_var): Remove.
19883         (end_referenced_vars_p): Likewise.
19884         (next_referenced_var): Likewise.
19885         (referenced_var_iterator_set): New helper function.
19886         * tree-dfa.c (referenced_var_lookup): Adjust.
19887         (referenced_var_check_and_insert): Likewise.
19888         (remove_referenced_var): Likewise.
19889         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19890         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19891         (verify_call_clobbering): Likewise.
19892         (verify_memory_partitions): Likewise.
19893         (init_tree_ssa): Allocate bitmap instead of hashtable for
19894         referenced_vars.
19895         (delete_tree_ssa): Adjust.
19896         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19897         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19898         (compute_tag_properties): Likewise.
19899         (set_initial_properties): Likewise.
19900         (find_partition_for): Likewise.
19901         (update_reference_counts): Likewise.
19902         (dump_may_aliases_for): Likewise.
19903         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19904         (add_call_clobber_ops): Likewise.
19905         (add_call_read_ops): Likewise.
19906         (get_asm_expr_operands): Likewise.
19907         * tree-into-ssa.c (dump_decl_set): Likewise.
19908         (update_ssa): Likewise.
19909         * tree-sra.c (scan_function): Likewise.
19910         (decide_instantiations): Likewise.
19911         (scalarize_parms): Likewise.
19912         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19913         (dsa_named_for): Likewise.
19914         * tree-ssa-structalias.c (update_alias_info): Likewise.
19915         (merge_smts_into): Likewise.
19916
19917 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19918
19919         PR fortran/29549
19920         * doc/invoke.texi (-fcx-limited-range): Document new option.
19921         * toplev.c (process_options): Handle -fcx-fortran-rules.
19922         * common.opt: Add documentation for -fcx-fortran-rules.
19923
19924 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19925
19926         PR c/35162
19927         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
19928         actual behaviour and C99.
19929
19930 2008-02-26  Ben Elliston  <bje@au.ibm.com>
19931
19932         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
19933         (ASM_CPU_POWER6_SPEC): Likewise.
19934         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
19935         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
19936         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
19937
19938 2008-02-25  Richard Guenther  <rguenther@suse.de>
19939
19940         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19941         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19942         (lookup_decl_from_uid): Declare.
19943         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19944         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19945         (decl_for_uid_map): New global hashtable mapping DECL_UID
19946         to the decl tree.
19947         (init_ttree): Allocate it.
19948         (insert_decl_to_uid_decl_map): New helper function.
19949         (make_node_stat): Insert new decls into the map.
19950         (copy_node_stat): Likewise.
19951         (lookup_decl_from_uid): New function.
19952         (print_decl_for_uid_map_statistics): New helper.
19953         (dump_tree_statistics): Call it.
19954
19955         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19956         (referenced_var_iterator): Adjust.
19957         (FOR_EACH_REFERENCED_VAR): Adjust.
19958         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19959         (num_referenced_vars): Adjust.
19960         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19961         (first_referenced_var): Remove.
19962         (end_referenced_vars_p): Likewise.
19963         (next_referenced_var): Likewise.
19964         (referenced_var_iterator_set): New helper function.
19965         * tree-dfa.c (referenced_var_lookup): Adjust.
19966         (referenced_var_check_and_insert): Likewise.
19967         (remove_referenced_var): Likewise.
19968         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19969         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19970         (verify_call_clobbering): Likewise.
19971         (verify_memory_partitions): Likewise.
19972         (init_tree_ssa): Allocate bitmap instead of hashtable for
19973         referenced_vars.
19974         (delete_tree_ssa): Adjust.
19975         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19976         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19977         (compute_tag_properties): Likewise.
19978         (set_initial_properties): Likewise.
19979         (find_partition_for): Likewise.
19980         (update_reference_counts): Likewise.
19981         (dump_may_aliases_for): Likewise.
19982         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19983         (add_call_clobber_ops): Likewise.
19984         (add_call_read_ops): Likewise.
19985         (get_asm_expr_operands): Likewise.
19986         * tree-into-ssa.c (dump_decl_set): Likewise.
19987         (update_ssa): Likewise.
19988         * tree-sra.c (scan_function): Likewise.
19989         (decide_instantiations): Likewise.
19990         (scalarize_parms): Likewise.
19991         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19992         (dsa_named_for): Likewise.
19993         * tree-ssa-structalias.c (update_alias_info): Likewise.
19994         (merge_smts_into): Likewise.
19995
19996 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
19997
19998         PR target/35258
19999         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
20000         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
20001         * alias.h (nonoverlapping_memrefs_p): Likewise.
20002
20003 2008-02-25  Jan Beulich  <jbeulich@novell.com>
20004
20005         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
20006         * config/i386/netware-libgcc.exp: Add __bswap?i2,
20007         __emultls_get_address, __emultls_register_common,
20008         __floatundi?f, and _Unwind_GetIPInfo.
20009         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
20010         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
20011         (gen_regparm_prefix): Likewise.
20012         (i386_nlm_encode_section_info): Sync with
20013         config/i386/winnt.c:i386_pe_encode_section_info().
20014         (i386_nlm_maybe_mangle_decl_assembler_name): New.
20015         i386_nlm_mangle_decl_assembler_name): New.
20016         (netware_override_options): New.
20017         * config/i386/netware.h (netware_override_options): Declare.
20018         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
20019         (i386_nlm_mangle_decl_assembler_name): Declare.
20020         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
20021
20022 2008-02-25  Ben Elliston  <bje@au.ibm.com>
20023
20024         PR other/32948
20025         * c-decl.c (grokdeclarator): Remove unused local variables
20026         `typedef_type' and `type_as_written'.
20027         * bb-reorder.c
20028         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
20029         unused local variable `has_hot_blocks'.
20030         (fix_crossing_conditional_branches): Remove unused local variable
20031         `prev_bb'.
20032
20033 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
20034
20035         PR middle-end/19984
20036         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
20037         using DEF_C99_BUILTIN.
20038         (BUILT_IN_NANF): Ditto.
20039         (BUILT_IN_NANL): Ditto.
20040
20041 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
20042             Revital Eres  <eres@il.ibm.com>
20043
20044         * modulo-sched.c (calculate_must_precede_follow): Address TODO
20045         regarding the order of two dependent insns in the same row.
20046
20047 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
20048
20049         * stor-layout.c (layout_decl): Do not bump the alignment of a
20050         bit-field to more than byte alignment if it is packed.
20051
20052 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
20053
20054         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
20055         e300c2 and e300c3.
20056
20057 2008-02-24  Diego Novillo  <dnovillo@google.com>
20058
20059         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
20060
20061         PR 33738
20062         * tree-vrp.c (vrp_evaluate_conditional): With
20063         -Wtype-limits, emit a warning when comparing against a
20064         constant outside the natural range of OP0's type.
20065         * c.opt (Wtype-limits): Move ...
20066         * common.opt (Wtype-limits): ... here.
20067
20068 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
20069
20070         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
20071         * config/rs6000/e300c2c3.md: New file.
20072         * config/rs6000/rs6000.c (processor_costs): Add new costs for
20073         e300c2 and e300c3.
20074         (rs6000_override_options): Add e300c2 and e300c3 cases to
20075         processor_target_table. Do not allow usage of Altivec or Spe
20076         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
20077         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
20078         * config/rs6000/rs6000.h (processor_type): Add
20079         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
20080         (ASM_CPU_SPEC): Add e300c2 and e300c3.
20081         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
20082         and ppce300c3. Include e300c2c3.md.
20083
20084 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
20085
20086         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
20087         instead of TARGET_STRICT_ALIGN.
20088
20089 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
20090
20091         * explow.c (memory_address): Assert that the generated address is
20092         valid.
20093
20094 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20095
20096         PR target/25477
20097         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
20098         * config/darwin-ppc-ldouble-patch.def: New file.
20099         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
20100         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
20101         SUBTARGET_INIT_BUILTINS if defined.
20102         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
20103         New functions.
20104
20105 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20106
20107         PR rtl-opt/33512
20108         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
20109         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
20110
20111 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20112
20113         PR pch/35027
20114         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
20115         file" warning condtional on -Winvalid-PCH.
20116
20117 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
20118
20119         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
20120
20121 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
20122
20123         PR target/22076
20124         PR target/34256
20125         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
20126         prevent reload from using MMX registers.
20127         (*mov<mode>_internal): Ditto.
20128         (*movv2sf_internal_rex64): Ditto.
20129         (*movv2sf_internal): Ditto.
20130
20131 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20132
20133         PR documentation/31569
20134         * doc/install.texi2html: Use makeinfo --no-number-sections.
20135
20136 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20137
20138         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
20139         ensure that we can address an entire entity > 8 bytes.  Don't
20140         generate reg+reg addressing for such data.
20141
20142 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20143
20144         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
20145         strings when optimizing for size, unless the target cares about
20146         alignment.
20147
20148 2008-02-22  Tom Tromey  <tromey@redhat.com>
20149
20150         * regclass.c (current_pass): Remove declaration.
20151
20152 2008-02-22  Anatoly Sokolov <aesok@post.ru>
20153
20154         * config/avr/libgcc.S (__RAMPZ__): Define.
20155         (__do_copy_data): Add for devices with 128KB code memory.
20156
20157 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
20158
20159         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
20160         Use spe_abi.
20161         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
20162
20163 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
20164
20165         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
20166         GENNONACR_REGS.
20167
20168 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20169
20170         PR c/19999
20171         * c-typeck.c (build_binary_op): Warn about floating point
20172         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
20173
20174 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
20175
20176         PR target/34526
20177         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
20178         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
20179         add vrsave.
20180         (rs6000_override_options): Set altivec_abi as default, not override,
20181         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
20182         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
20183         is used; use new member spe_abi.
20184         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
20185         spe_abi and altivec_abi.
20186
20187 2008-02-22  Tomas Bily  <tbily@suse.cz>
20188
20189         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
20190
20191 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20192
20193         PR bootstrap/35273
20194         * config.build (build_file_translate): Set to `CMD //c' only if
20195         it works.
20196         * Makefile.in (build_file_translate): Improve comment.
20197
20198 2008-02-21  Jan Hubicka  <jh@suse.cz>
20199
20200         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
20201         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
20202         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
20203
20204 2008-02-21  Michael Matz  <matz@suse.de>
20205
20206         PR target/35264
20207         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
20208
20209 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
20210
20211         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
20212         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
20213         as insn constraint.
20214         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
20215         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
20216         SSE_VEC_FLOAT_MODE_P as insn constraint.
20217         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
20218         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
20219         sse4a_movntdf using MODEF mode iterator.
20220         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
20221         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
20222         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
20223         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
20224         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
20225         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
20226         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
20227
20228 2008-02-21  Richard Guenther  <rguenther@suse.de>
20229
20230         * tree.def (PAREN_EXPR): New tree code.
20231         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
20232         and PAREN_EXPR.
20233         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
20234         * expr.c (expand_expr_real_1): Likewise.
20235         * tree-inline.c (estimate_num_insns_1): Likewise.
20236         * tree-complex.c (expand_complex_move): Likewise.
20237         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
20238         as plain x.
20239
20240 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20241
20242         PR target/35225
20243         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
20244
20245 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20246
20247         PR target/35190
20248         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
20249
20250         * config/sh/sh.c (find_barrier): Don't go past
20251         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
20252
20253 2008-02-20  DJ Delorie  <dj@redhat.com>
20254
20255         * config/h8300/h8300.md (insv): Force source operand to be a register.
20256
20257         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
20258         as a jump, not as a plain insn.
20259
20260 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
20261
20262         * doc/invoke.texi (Warning Options): Add new option
20263         -Wframe-larger-than=.
20264         (-Wframe-larger-than): Document.
20265
20266         * flags.h (warn_frame_larger_than, frame_larger_than_size):
20267         Add declarations for new option variables.
20268
20269         * final.c (final_start_function): Check the frame size
20270         before emission and issue a Wframe-larger-than warning.
20271
20272         * opts.c (warn_frame_larger_than, frame_larger_than_size):
20273         Add definitions for new option variables.
20274         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
20275
20276         * common.opt (Wframe-larger-than=): New option.
20277
20278 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
20279
20280         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
20281         (<sse>_div<mode>3): Ditto.
20282         (<sse>_vmdiv<mode>3): Ditto.
20283         (<sse>_vmsqrt<mode>2): Ditto.
20284         (*smax<mode>3): Ditto.
20285         (sse5_frcz<mode>2): Ditto.
20286         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
20287         as insn constraint.
20288
20289 2008-02-20  Richard Guenther  <rguenther@suse.de>
20290
20291         PR middle-end/35265
20292         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
20293         be happy with INTEGRAL_TYPE_P.
20294
20295 2008-02-20  Richard Guenther  <rguenther@suse.de>
20296
20297         * fold-const.c (split_tree): Associate floatig-point expressions
20298         if flag_associative_math is set.
20299
20300 2008-02-20  Richard Guenther  <rguenther@suse.de>
20301
20302         * tree.h (fold_real_zero_addition_p): Declare.
20303         * fold-const.c (fold_real_zero_addition_p): Export.
20304         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
20305         floating-point operations with zero and one.
20306
20307 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
20308
20309         * doc/install.texi: Correct references to CFLAGS, replacing them
20310         with BOOT_CFLAGS.  Document flags used during bootstrap for
20311         target libraries.
20312
20313 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
20314
20315         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
20316         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
20317         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
20318         insn constraint.
20319         (smin<mode>3): Ditto from similar patterns.
20320         (smax<mode>3): Ditto.
20321         (*ieee_smin<mode>3): Ditto.
20322         (*ieee_smax<mode>3): Ditto.
20323         * config/i386/sse.md (sse): New mode attribute.
20324         (mov<mode>): Macroize expander from movv4sf and movv2df using
20325         SSEMODEF2P mode iterator.
20326         (<sse>_movnt<mode>): Ditto from similar patterns. Use
20327         SSE_VEC_FLOAT_MODE_P as insn constraint.
20328         (storent<mode>): Ditto.
20329         (storent<mode>): Macroize expander from storentsf and storentdf using
20330         MODEF mode iterator.
20331         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
20332         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
20333         (abs<mode>2): Ditto from similar patterns.
20334         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
20335         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
20336         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
20337         (<sse>_vmsqrt<mode>2): Ditto.
20338         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
20339         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
20340         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
20341         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
20342         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
20343         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
20344         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
20345         insn constraint.
20346         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
20347         iterator and SSE_FLOAT_MODE_P as insn constraint.
20348         (<sse>_ucomi): Ditto from similar patterns.
20349         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
20350         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
20351         SSE_VEC_FLOAT_MODE_P as insn constraint.
20352         (vcond<mode>): Ditto from similar patterns.
20353         (and<mode>3, *and<mode>3): Ditto.
20354         (<sse>_nand<mode>3): Ditto.
20355         (ior<mode>3, *ior<mode>3): Ditto.
20356         (xor<mode>3, *xor<mode>3): Ditto.
20357         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
20358         iterator and SSE_FLOAT_MODE_P as insn constraint.
20359         (*nand<mode>3): Ditto from similar patterns.
20360         (*ior<mode>3): Ditto.
20361         (*xor<mode>3): Ditto.
20362
20363 2008-02-20  Ira Rosen  <irar@il.ibm.com>
20364
20365         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
20366         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
20367         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
20368
20369 2008-02-19  Jan Hubicka  <jh@suse.cz>
20370
20371         * predict.c (tree_bb_level_predictions): Remove variable next
20372         mistakely introduced by previous commit.
20373
20374 2008-02-19  Jan Hubicka  <jh@suse.cz>
20375
20376         * predict.c (predict_paths_leading_to): Rewrite.
20377         (predict_paths_for_bb): New.
20378         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
20379
20380 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20381
20382         PR bootstrap/35218
20383         * Makefile.in (build_file_translate): New.
20384         (gcc-vers.texi): Use it for translating $(abs_srcdir).
20385         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
20386         * configure.ac (build_file_translate): Substitute it.
20387         * configure: Regenerate.
20388
20389 2008-02-19  Jan Hubicka  <jh@suse.cz>
20390
20391         PR rtl-optimization/34408
20392         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
20393         invalid sharing.
20394
20395 2008-02-19  Jan Hubicka  <jh@suse.cz>
20396
20397         PR middle-end/28779
20398         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
20399         call_expr.
20400
20401 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
20402
20403         PR Ada/35186
20404         * config/i386/i386-modes.def: Revert the last DI alignment
20405         change until Ada people can look into it.
20406
20407 2008-02-19  Nick Clifton  <nickc@redhat.com>
20408
20409         * opts.c (print_specific_help): Fix typo in --help text.
20410
20411 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
20412
20413         PR target/35239
20414         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
20415         32-bit inline asm without asm alternatives for host GCC < 3.0.
20416
20417 2008-02-19  Richard Guenther  <rguenther@suse.de>
20418
20419         PR tree-optimization/34989
20420         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
20421         Allow propagation to INDIRECT_REF if we can simplify only.
20422
20423 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20424
20425         * c-common.c (warn_for_collisions_1): Use appropriate option when
20426         warning.
20427
20428 2008-02-19  Nick Clifton  <nickc@redhat.com>
20429
20430         PR other/31349
20431         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
20432         (handle_options): Fix indentation.
20433         (print_filtered_help): If no language-specific options were
20434         displayed tell the user how to list all the options supported by
20435         the language's front-end.
20436         (print_specific_help): Fix indentation and remove duplicate line.
20437         (common_handle_option): Handle the -v option.
20438         For --help enable the display of undocumented options if the -v
20439         switch has been included on the command line.
20440         For --help= check for overlaps in the arguments between the option
20441         classes and the language names and issue a warning when they
20442         cannot be disambiguated.
20443         * c.opt (v): Pass on to the common option handler.
20444
20445 2008-02-19  Revital Eres  <eres@il.ibm.com>
20446
20447         * modulo-sched.c (sms_schedule): Change dump message when
20448         create_ddg function fails.
20449         (try_scheduling_node_in_cycle): Rename row to cycle.
20450         (print_partial_schedule): Rename CYCLE to ROW.
20451
20452 2008-02-19  Christian Bruel  <christian.bruel@st.com>
20453             Zdenek Dvorak  <ook@ucw.cz>
20454
20455         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
20456
20457 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
20458
20459         PR target/33555
20460         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
20461         (*x86_movdicc_0_m1_se): Ditto.
20462
20463 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
20464
20465         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
20466         (CMPtype): Define as __gcc_CMPtype.
20467         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
20468         (CMPtype): Define as __gcc_CMPtype.
20469
20470 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
20471
20472         Support valgrind 3.3 for --enable-checking=valgrind.
20473         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
20474         here.
20475         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
20476         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
20477         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
20478         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
20479         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
20480         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
20481         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
20482         respectively.
20483         * ggc-zone.c: Similar.
20484         * ggc-page.c: Similar.
20485
20486 2008-02-19  Paul Brook  <paul@codesourcery.com>
20487
20488         PR target/35071
20489         * config/arm/ieee754-df.S: Fix do_it typo.
20490         * config/arm/ieee754-sf.S: Fix do_it typo.
20491
20492 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
20493
20494         PR target/35189
20495         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
20496         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
20497         (OPTION_MASK_ISA_SSE_SET): Likewise.
20498         (OPTION_MASK_ISA_SSE2_SET): Likewise.
20499         (OPTION_MASK_ISA_SSE3_SET): Likewise.
20500         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
20501         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
20502         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
20503         (OPTION_MASK_ISA_SSE4_SET): Likewise.
20504         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
20505         (OPTION_MASK_ISA_SSE5_SET): Likewise.
20506         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
20507         (OPTION_MASK_ISA_MMX_UNSET): Updated.
20508         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
20509         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
20510         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
20511         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
20512         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
20513         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
20514         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
20515         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
20516         (OPTION_MASK_ISA_SSE4): Removed.
20517         (ix86_handle_option): Turn on bits in ix86_isa_flags and
20518         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
20519         (override_options): Don't turn on implied SSE/MMX bits in
20520         ix86_isa_flags.
20521
20522 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
20523
20524         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
20525         32bit host.
20526
20527 2008-02-18  Joey Ye  <joey.ye@intel.com>
20528
20529         PR middle-end/34921
20530         * tree-nested.c (insert_field_into_struct): Set type alignment
20531         to field alignment if the former is less than the latter.
20532
20533 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
20534
20535         * BASE-VER: Set to 4.4.0.
20536
20537 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20538
20539         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
20540         * doc/cfg.texi: Likewise.
20541         * doc/extend.texi: Likewise.
20542         * doc/gty.texi: Likewise.
20543         * doc/invoke.texi: Likewise.
20544         * doc/loop.texi: Likewise.
20545         * doc/md.texi: Likewise.
20546         * doc/passes.texi: Likewise.
20547         * doc/rtl.texi: Likewise.
20548         * doc/sourcebuild.texi: Likewise.
20549         * doc/tm.texi: Likewise.
20550         * doc/tree-ssa.texi: Likewise.
20551
20552 2008-02-17  Richard Guenther  <rguenther@suse.de>
20553
20554         PR middle-end/35227
20555         * tree-complex.c (init_parameter_lattice_values): Handle parameters
20556         without default definition.
20557
20558 2008-02-17  Richard Guenther  <rguenther@suse.de>
20559
20560         PR tree-optimization/35231
20561         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
20562         if A | B != 1.
20563
20564 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
20565
20566         Revert:
20567         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20568         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
20569         libgcc_cmp_return mode.
20570
20571 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20572
20573         PR c/28368
20574         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
20575
20576 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
20577
20578         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
20579         multilibs.
20580
20581 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20582
20583         * doc/c-tree.texi: Use `@.' where appropriate.
20584         * doc/extend.texi: Likewise.
20585         * doc/install.texi: Likewise.
20586         * doc/invoke.texi: Likewise.
20587         * doc/loop.texi: Likewise.
20588         * doc/makefile.texi: Likewise.
20589         * doc/md.texi: Likewise.
20590         * doc/passes.texi: Likewise.
20591         * doc/standards.texi: Likewise.
20592         * doc/tm.texi: Likewise.
20593
20594 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
20595
20596         PR middle-end/35196
20597         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
20598         in entry_bb.
20599         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
20600         rather than in entry_bb.
20601
20602 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20603
20604         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
20605         libgcc_cmp_return mode.
20606
20607 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
20608
20609         PR middle-end/35130
20610         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
20611         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
20612
20613 2008-02-15  Richard Guenther  <rguenther@suse.de>
20614             Zdenek Dvorak  <ook@ucw.cz>
20615
20616         PR tree-optimization/35164
20617         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
20618         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
20619         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20620         Only propagate addresses which do not have abnormal SSA_NAMEs
20621         in their operands.
20622
20623 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
20624
20625         PR target/35088
20626         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
20627
20628 2008-02-15  Jan Hubicka  <jh@suse.cz>
20629
20630         PR middle-end/35149
20631         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
20632
20633 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20634
20635         PR middle-end/34621
20636         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
20637         when calculating alignment_pad.
20638
20639 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20640
20641         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
20642         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
20643         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
20644         and STACK_BOUNDARY define.
20645
20646 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
20647
20648         PR preprocessor/35061
20649         * c-pragma.c (handle_pragma_pop_macro): Check that
20650         pushed_macro_table has been allocated.
20651
20652 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
20653
20654         PR middle-end/35136
20655         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
20656         (force_gimple_operand): Likewise.
20657         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
20658         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
20659         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
20660         (find_interesting_uses_address): Check addressability and alignment
20661         of the base expression only after substituting bases of IVs into it.
20662
20663 2008-02-14  Michael Matz  <matz@suse.de>
20664
20665         PR target/34930
20666         * function.c (instantiate_virtual_regs_in_insn): Reload address
20667         before falling back to reloading the whole operand.
20668
20669 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
20670
20671         * config/s390/s390.c (s390_mainpool_start): Emit the pool
20672         before the first section switch note.
20673
20674 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20675
20676         * doc/bugreport.texi: Update copyright years.
20677         * doc/c-tree.texi: Likewise.
20678         * doc/cfg.texi: Likewise.
20679         * doc/cpp.texi: Likewise.
20680         * doc/cppinternals.texi: Likewise.
20681         * doc/fragments.texi: Likewise.
20682         * doc/frontends.texi: Likewise.
20683         * doc/gcc.texi: Likewise.
20684         * doc/gty.texi: Likewise.
20685         * doc/hostconfig.texi: Likewise.
20686         * doc/implement-c.texi: Likewise.
20687         * doc/libgcc.texi: Likewise.
20688         * doc/loop.texi: Likewise.
20689         * doc/makefile.texi: Likewise.
20690         * doc/options.texi: Likewise.
20691         * doc/passes.texi: Likewise.
20692         * doc/rtl.texi: Likewise.
20693         * doc/sourcebuild.texi: Likewise.
20694         * doc/standards.texi: Likewise.
20695         * doc/tree-ssa.texi: Likewise.
20696         * doc/trouble.texi: Likewise.
20697
20698         * doc/extend.texi: Use @: or add comma where appropriate.
20699         * doc/invoke.texi: Likewise.
20700         * doc/tm.texi: Likewise.
20701
20702 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
20703
20704         PR target/34393
20705         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
20706         to a reg.
20707
20708 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
20709
20710         * doc/md.texi (clz, ctz): Add reference.
20711         * doc/rtl.texi (clz, ctz): Likewise.
20712
20713 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20714
20715         PR other/35148
20716         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
20717         srcdir.
20718
20719 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
20720
20721         * config/s390/s390.c (struct constant_pool): New field
20722         emit_pool_after added.
20723         (s390_mainpool_start): Set the emit_pool_after flag according
20724         to the section switch notes.
20725         (s390_mainpool_finish): Consider emit_pool_after when emitting
20726         the literal pool at the end of the function.
20727         (s390_chunkify_start): Force literal pool splits at section
20728         switch notes.
20729
20730 2008-02-13  Michael Matz  <matz@suse.de>
20731
20732         PR debug/35065
20733         * var-tracking.c (clobber_variable_part): Correctly traverse the
20734         list.
20735
20736 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20737
20738         PR 29673
20739         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
20740         Add -fdump-ipa-inline.
20741         * tree-dump.c (dump_files): Remove tree-inlined dump.
20742         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
20743
20744 2008-02-12  Richard Guenther  <rguenther@suse.de>
20745
20746         PR tree-optimization/35171
20747         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
20748         default defs.
20749
20750 2008-02-12  Richard Guenther  <rguenther@suse.de>
20751
20752         PR middle-end/35163
20753         * fold-const.c (fold_widened_comparison): Use get_unwidened in
20754         value-preserving mode.  Disallow final truncation.
20755
20756 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20757
20758         PR middle-end/35136
20759         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
20760         code from here to...
20761         (force_gimple_operand): ...here.
20762
20763 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
20764
20765         PR c++/35144
20766         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
20767         non-compatible pointers.
20768         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
20769         different FIELD_DECLs, try harder by comparing field offsets, sizes
20770         and types.
20771
20772         PR inline-asm/35160
20773         * function.c (match_asm_constraints_1): Don't replace the same input
20774         multiple times.
20775
20776 2008-02-12  Anatoly Sokolov <aesok@post.ru>
20777
20778         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
20779         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
20780         (expand_epilogue): Restore RAMPZ register.
20781         * config/avr/avr.md (RAMPZ_ADDR): New constant.
20782
20783 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
20784
20785         * config/i386/cygwin.asm: (__alloca): Correct calling
20786         convention and alignment.
20787         (__chkstk): Force 8 byte stack alignment.
20788
20789 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
20790             Richard Guenther  <rguenther@suse.de>
20791
20792         PR tree-optimization/33992
20793         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
20794         the zero we compare against.
20795
20796 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
20797
20798         PR libfortran/35063
20799         * gthr-win32.h (__gthread_mutex_destroy_function): New function
20800         to CloseHandle after unlocking to prevent accumulation of handle
20801         count.
20802
20803 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20804
20805         PR middle_end/34150
20806         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
20807         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
20808         and update LABEL_NUSES during and after reload.
20809
20810 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
20811
20812         PR middle-end/34627
20813         * combine.c (simplify_if_then_else): Make sure the comparison is
20814         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
20815
20816 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
20817
20818         PR bootstrap/35051
20819         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
20820         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
20821         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
20822         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
20823         * tree.h (get_type_static_bounds): Likewise.
20824
20825 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20826
20827         * doc/invoke.texi (Option Summary, C++ Dialect Options)
20828         (Objective-C and Objective-C++ Dialect Options, Warning Options):
20829         Make -Wfoo language annotations match what the compiler outputs.
20830
20831 2008-02-08  Sa Liu  <saliu@de.ibm.com>
20832
20833         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
20834         intrinsics spu_convts, spu_convtu, spu_convtf.
20835
20836 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
20837
20838         * doc/extend.texi (Function Attributes) <noinline>: Mention
20839         asm ("") as method to keep calls.
20840
20841 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20842
20843         PR other/32754
20844         * doc/options.texi (Options): Replace references to opts.sh with
20845         optc-gen.awk.
20846         * opts-common.c: Likewise.
20847         * optc-gen.awk: Likewise.
20848
20849 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
20850
20851         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
20852
20853 2008-02-07  Richard Henderson  <rth@redhat.com>
20854
20855         PR rtl-opt/33410
20856         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
20857         EXPR_LIST for the REG_EQUAL instead of a comparison with a
20858         funny mode.
20859
20860 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
20861
20862         PR tree-optimization/35085
20863         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
20864         for operand entry oe2 in addition to operand entry oe3 in order to
20865         expose more opportunities for vectorizer sum reduction.
20866
20867 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20868
20869         PR other/35107
20870         * Makefile.in (LIBS): Remove $(GMPLIBS).
20871         (cc1-dummy, cc1): Add $(GMPLIBS).
20872
20873 2008-02-06  Jan Hubicka  <jh@suse.cz>
20874
20875         PR target/23322
20876         * i386.md (moddf_integer): Do not produce partial memory stalls for
20877         targets where it hurts.
20878
20879 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
20880
20881         PR target/35083
20882         * optabs.c (expand_float): Do not check for decimal modes when
20883         expanding unsigned integer through signed conversion.
20884
20885 2008-02-06  Nick Clifton  <nickc@redhat.com>
20886
20887         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
20888         inside the clobber with a match_operand and duplicated operand
20889         number in the constraint.
20890         (ineqbranchsi): Delete redundant comment.
20891
20892 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
20893
20894         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
20895         builtin_define ("__USE_INIT_FINI__").
20896         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
20897         -msx multilibs.
20898         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
20899
20900 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20901
20902         PR documentation/30330
20903         * doc/invoke.texi (C++ Dialect Options)
20904         (Objective-C and Objective-C++ Dialect Options, Warning Options):
20905         For each warning option -Wfoo that allows -Wno-foo, ensure both
20906         -Wfoo and -Wno-foo are listed in the option index.  Fix index
20907         entry of -Wswitch-default, index -Wnormalized= including the
20908         `=', and -Wlarger-than-@var{len} including @var{len}.
20909
20910 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20911
20912         * config/i386/i386.md (floatunssisf2): Use
20913         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
20914         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
20915         Macroize expander using MODEF mode iterator.
20916
20917 2008-02-05  Diego Novillo  <dnovillo@google.com>
20918
20919         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
20920
20921         PR 33738
20922         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
20923
20924 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20925
20926         PR other/35070
20927         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
20928
20929 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
20930
20931         PR target/35084
20932         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
20933         to indicate if a message should be generated.
20934         (init_cumulative_args): Updated.
20935         (function_value_32): Likewise.
20936
20937 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
20938
20939         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
20940
20941 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20942
20943         PR target/35083
20944         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
20945         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
20946
20947 2008-02-04  Diego Novillo  <dnovillo@google.com>
20948
20949         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
20950
20951         PR 33738
20952         * tree-vrp.c (vrp_evaluate_conditional): With
20953         -Wtype-limits, emit a warning when comparing against a
20954         constant outside the natural range of OP0's type.
20955
20956 2008-02-04  Richard Guenther  <rguenther@suse.de>
20957
20958         PR middle-end/33631
20959         * expr.c (count_type_elements): Give for unions instead of
20960         guessing.
20961
20962 2008-02-04  Richard Guenther  <rguenther@suse.de>
20963
20964         PR middle-end/35043
20965         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
20966         to TYPE_DOMAINs base type instead of using bitsizetype here.
20967
20968 2008-02-03  Jason Merrill  <jason@redhat.com>
20969
20970         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
20971
20972 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20973
20974         PR other/29972
20975         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
20976         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
20977         (RS/6000 and PowerPC Options): Fix typos and markup.
20978         * doc/passes.texi (Tree-SSA passes): Likewise.
20979
20980 2008-02-02  Michael Matz  <matz@suse.de>
20981
20982         PR target/35045
20983         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
20984         from record_last_reg_set_info.
20985         (record_last_reg_set_info): Take an RTX argument, iterate over all
20986         constituent hardregs.
20987         (record_last_set_info, record_opr_changes): Change calls to
20988         new signature or to record_last_reg_set_info_regno.
20989
20990 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
20991
20992         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
20993
20994 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
20995
20996         PR rtl-optimization/34773
20997         * reg-notes.def (EQUAL): Mention significance of combination of
20998         REG_EQUAL and REG_RETVAL.
20999         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
21000         insn that has a REG_RETVAL.
21001
21002 2008-02-01  Roger Sayle  <roger@eyesopen.com>
21003
21004         PR bootstrap/33781
21005         * configure.ac (--enable-fixed-point): Disable unless explicitly
21006         requested on IRIX.
21007         * configure: Regenerate.
21008
21009 2008-02-01  Richard Guenther  <rguenther@suse.de>
21010
21011         PR other/35042
21012         * invoke.texi (-finline-limit): Remove no longer true parts
21013         of the documentation.  Note that there is no default value.
21014
21015 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
21016             Mark Mitchell  <mark@codesourcery.com>
21017             Ben Elliston  <bje@au.ibm.com>
21018
21019         PR c/29326
21020         * doc/extend.texi (Other Builtins): Document.
21021
21022 2008-01-31  Tom Browder <tom.browder@gmail.com>
21023
21024         * doc/c-tree.texi (Types): Fix grammar.
21025         (Expression trees): Ditto.
21026         * doc/passes.texi (Tree-SSA passes): Ditto.
21027
21028         * doc/configterms.texi (Configure Terms): Fix typo.
21029         * doc/cpp.texi (Common Predefined Macros): Ditto.
21030         * doc/md.texi (Machine Constraints): Ditto.
21031
21032         * doc/makefile.texi (Makefile): Add comma.
21033
21034 2008-01-31  Tom Browder  <tom.browder@gmail.com>
21035             Gerald Pfeifer  <gerald@pfeifer.com>
21036
21037         * doc/sourcebuild.texi (Front End): Remove references to CVS
21038         and CVSROOT/modules.
21039         (Texinfo Manuals): Replace reference to CVS by one to SVN.
21040         (Back End): Remove reference to CVS.
21041
21042 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
21043
21044         PR target/34900
21045         * config/mips/mips.c (gen_load_const_gp): New function, taking a
21046         comment from...
21047         (mips16_gp_pseudo_reg): ...here.
21048         * config/mips/mips.md (load_const_gp): Replace with...
21049         (load_const_gp_<mode>): ...this :P-based insn.
21050
21051 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21052
21053         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
21054         options. Minor fixes.
21055         (-std): Move reference to standards closer to where language
21056         standards are first mentioned.
21057
21058 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
21059
21060         PR rtl-optimization/34995
21061         * reload.c (alternative_allows_const_pool_ref): Take an rtx
21062         parameter and return a bool.  If the rtx parameter is nonnull,
21063         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
21064         (find_reloads): Update call accordingly.  Pass the new operand
21065         if it needed no address reloads, otherwise pass null.
21066
21067 2008-01-30  Richard Henderson  <rth@redhat.com>
21068
21069         PR c/34993
21070         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
21071         for unbounded arrays.
21072
21073 2008-01-30  Silvius Rus  <rus@google.com>
21074
21075         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
21076
21077 2008-01-30  Jan Hubicka  <jh@suse.cz>
21078
21079         PR target/34982
21080         * i386.c (init_cumulative_args): Use real function declaration when
21081         calling locally.
21082
21083 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
21084
21085         PR rtl-optimization/34998
21086         * global.c (build_insn_chain): Treat non-subreg_lowpart
21087         SUBREGs of pseudos as clobbering all the words covered by the
21088         SUBREG, not just all the bytes.
21089         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
21090         original df_ref rather than an extract parameter.
21091         (global_conflicts): Update call accordingly.
21092
21093 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
21094
21095         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
21096         the overflow check to make it easier to read.
21097         (__fixtfdi): Change the type of the ll member in union
21098         long_double to UDItype_x.
21099
21100 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
21101
21102         PR middle-end/34969
21103         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
21104         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
21105         * tree-inline.c (fold_marked_statements): Call
21106         cgraph_update_edges_for_call_stmt if folding a call statement.
21107         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
21108         debug_generic_stmt calls, reset it back afterwards.
21109
21110         PR c/35017
21111         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
21112         static decls.
21113         * c-typeck.c (build_external_ref): Don't pedwarn about
21114         static vars in current function's scope.
21115
21116 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
21117
21118         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
21119
21120 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
21121
21122         PR c/35002
21123         * ipa-struct-reorg.c: Fix spelling.
21124         * params.def: Ditto.
21125
21126 2008-01-29  Richard Guenther  <rguenther@suse.de>
21127
21128         PR middle-end/35006
21129         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
21130         field.
21131         * tree-inline.c (remap_type): Increment remapping_type_depth
21132         around remapping types.
21133         (copy_body_r): Only add referenced variables if they are referenced
21134         from code, not types.
21135
21136 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
21137
21138         PR c++/34055
21139         PR c++/34103
21140         PR c++/34219
21141         PR c++/34606
21142         PR c++/34753
21143         PR c++/34754
21144         PR c++/34755
21145         PR c++/34919
21146         PR c++/34961
21147         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
21148         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
21149
21150 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
21151
21152         PR target/34412
21153         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
21154         pointer for tiny stack.
21155
21156 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
21157
21158         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
21159
21160 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
21161
21162         * config/vx-common.h: Fix typo in comment.
21163
21164 2008-01-28  Ian Lance Taylor  <iant@google.com>
21165
21166         PR c++/34862
21167         PR c++/33407
21168         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
21169         coalesce pointers if they have different DECL_NO_TBAA_P values.
21170         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
21171         between variables with different DECL_NO_TBAA_P values.
21172
21173 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
21174
21175         PR 31535
21176         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
21177         are not legitimate small data references on SPE targets.
21178
21179 2008-01-28  David Daney  <ddaney@avtrex.com>
21180
21181         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
21182
21183 2008-01-28  David Daney  <ddaney@avtrex.com>
21184
21185         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
21186
21187 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
21188
21189         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
21190         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
21191         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
21192         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
21193         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
21194         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
21195         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
21196         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
21197
21198 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21199
21200         * basic-block.h (condjump_equiv_p): Fix comment.
21201
21202 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21203
21204         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
21205         print_generic_stmt_indented): Fix comment.
21206
21207 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21208
21209         * configure.ac (__stack_chk_fail): Add detecion for availability
21210         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
21211         * configure: Regenerate.
21212
21213 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
21214
21215         PR middle-end/34688
21216         * final.c (output_addr_const): Handle TRUNCATE.
21217
21218 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
21219
21220         PR target/34711
21221         * tree-ssa-loop-ivopts.c (comp_cost): New type.
21222         (zero_cost, infinite_cost): New constants.
21223         (struct cost_pair): Change type of cost to comp_cost.
21224         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
21225         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
21226         New functions.
21227         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
21228         split_address_cost, ptr_difference_cost, difference_cost,
21229         get_computation_cost_at, get_computation_cost,
21230         determine_use_iv_cost_generic, determine_use_iv_cost_address,
21231         determine_use_iv_cost_condition, determine_use_iv_costs,
21232         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
21233         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
21234         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
21235         Change type of cost to comp_cost.
21236         (determine_iv_cost): Increase cost of non-original ivs, instead
21237         of decreasing the cost of original ones.
21238         (get_address_cost): Indicate the complexity of the addressing mode
21239         in comp_cost.
21240         (try_add_cand_for): Prefer using ivs not specific to some object.
21241         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
21242
21243 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
21244             Janis Johnson  <janis187@us.ibm.com>
21245
21246         PR target/34814
21247         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
21248         (TARGET_INSTANTIATE_DECLS): Likewise.
21249         * target.h (expand_to_rtl_hook): New target hook.
21250         (instantiate_decls): Likewise.
21251         * function.c (instantiate_decl): Make non-static.  Rename to...
21252         (instantiate_decl_rtl): ... this.
21253         (instantiate_expr): Use instantiate_decl_rtl.
21254         (instantiate_decls_1): Likewise.
21255         (instantiate_decls): Likewise.
21256         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
21257         * function.h (instantiate_decl_rtl): Add prototype.
21258         * cfgexpand.c (target.h): New include.
21259         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
21260         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
21261         (TARGET_INSTANTIATE_DECLS): Likewise.
21262         (TARGET_INITIALIZER): New target hooks added.
21263         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
21264         New prototype.
21265         * config/rs6000/rs6000.c (tree-flow.h): New include.
21266         (machine_function): Add sdmode_stack_slot field.
21267         (rs6000_alloc_sdmode_stack_slot): New function.
21268         (rs6000_instantiate_decls): Likewise.
21269         (rs6000_secondary_memory_needed_rtx): Likewise.
21270         (rs6000_check_sdmode): Likewise.
21271         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
21272         (TARGET_INSTANTIATE_DECLS): Likewise.
21273         (rs6000_hard_regno_mode_ok): Allow SDmode.
21274         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
21275         (rs6000_emit_move): Handle SDmode.
21276         (function_arg_advance): Likewise.
21277         (function_arg): Likewise.
21278         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
21279         SDmode var args for 32-bit compiles.
21280         (rs6000_secondary_reload_class): Handle SDmode.
21281         (rs6000_output_function_epilogue): Likewise.
21282         (rs6000_function_value): Simplify if statement.
21283         (rs6000_libcall_value): Likewise.
21284         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
21285         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
21286         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
21287         (movsd_hardfloat): New define_insn.
21288         (movsd_softfloat): Likewise.
21289         (movsd_store): Likewise.
21290         (movsd_load): Likewise.
21291         (extendsddd2): Likewise.
21292         (extendsdtd2): Likewise.
21293         (truncddsd2): Likewise.
21294         (movdd_hardfloat64): Fixup comment.
21295         (UNSPEC_MOVSD_LOAD): New constant.
21296         (UNSPEC_MOVSD_STORE): Likewise.
21297
21298 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
21299
21300         PR c++/34965
21301         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
21302         TRUTH_XOR_EXPR.
21303         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
21304         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
21305         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
21306         and TRUTH_XOR_EXPR.
21307
21308 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
21309
21310         PR target/34794
21311         * config.gcc: Separate AIX 5.3 from AIX 6.1.
21312         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
21313         __LONGDOUBLE128 too.
21314         * config/rs6000/aix61.h: New file.
21315
21316 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
21317
21318         PR rtl-optimization/34959
21319         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
21320         popcount and parity rtxes the same mode as their operand.
21321         Truncate or extend the result to the return value's mode
21322         if necessary.
21323
21324 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
21325
21326         PR target/34981
21327         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
21328         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
21329         to GOT_VERSION_REGNUM.
21330         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
21331         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
21332         * config/mips/mips.c (mips_emit_call_insn): New function.
21333         (mips_call_tls_get_addr): Call mips_expand_call directly.
21334         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
21335         emit_call_insn.
21336         (mips16_build_call_stub): Likewise.  Return the call insn or null.
21337         (mips_expand_call): Update the call to mips16_build_call_stub
21338         accordingly and a remove redundant condition.  Assert that MIPS16
21339         stubs do not use lazy binding.  Use mips_emit_call_insn and return
21340         the call insn.
21341         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
21342         TARGET_USE_GOT.
21343         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
21344         (mips_avoid_hazard): Remove hazard_set handling.
21345         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
21346         (UNSPEC_RESTORE_GP): ...this.
21347         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
21348         (FAKE_CALL_REGNO): Rename to...
21349         (GOT_VERSION_REGNUM): ...this.
21350         (type): Add "ghost" value.  Add an associated insn reservation.
21351         (hazard_set): Remove.
21352         (exception_receiver): Rename to...
21353         (restore_gp): ...this and update the unspec identifier accordingly.
21354         (exception_receiver, nonlocal_got_receiver): New expanders.
21355         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
21356         FAKE_CALL_REGNO.  Remove hazard_set attribute.
21357         (set_got_version, update_got_version): New patterns.
21358
21359 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
21360
21361         PR target/34970
21362         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
21363
21364 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
21365
21366         PR other/31955
21367         * doc/install.texi2html: Generate gcc-vers.texi.
21368
21369 2008-01-25  DJ Delorie  <dj@redhat.com>
21370
21371         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
21372
21373 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
21374
21375         * config/c4x: Remove directory.
21376         * config.gcc (crx-*, mt-*): Mark obsolete.
21377         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
21378         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
21379         sh-*-rtemscoff*): Remove cases.
21380         * defaults.h (C4X_FLOAT_FORMAT): Remove.
21381         * real.c (encode_c4x_single, decode_c4x_single,
21382         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
21383         c4x_extended_format): Remove.
21384         * real.h (c4x_single_format, c4x_extended_format): Remove.
21385         * doc/extend.texi (interrupt, naked): Remove mention of attributes
21386         on C4x.
21387         (Pragmas): Remove comment about c4x pragmas.
21388         * doc/install.texi (c4x): Remove target-specific instructions.
21389         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
21390         * doc/md.texi (Machine Constraints): Remove C4x documentation.
21391         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
21392         refer to C4x source files as examples.
21393         (C4X_FLOAT_FORMAT): Remove documentation.
21394
21395 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
21396
21397         * config/bfin/bfin.c (override_options): Reorder tests so that
21398         flag_pic gets enabled for -msep-data.
21399
21400 2008-01-25  Richard Guenther  <rguenther@suse.de>
21401
21402         PR middle-end/32244
21403         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
21404         to its bitfield precision if required.
21405
21406 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
21407
21408         PR middle-end/33880
21409         * tree-nested.c (walk_omp_for): New function.
21410         (convert_nonlocal_reference, convert_local_reference): Call
21411         walk_omp_for on OMP_FOR.
21412         (convert_call_expr): Call walk_body on OMP_FOR's
21413         OMP_FOR_PRE_INIT_BODY.
21414
21415 2008-01-25  Richard Guenther  <rguenther@suse.de>
21416
21417         PR tree-optimization/34966
21418         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
21419         default defs and PHI_NODEs we have to insert after the
21420         defining statement.
21421
21422 2008-01-24  Nick Clifton  <nickc@redhat.com>
21423
21424         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
21425         Provide a default definition.
21426         (LIBGCC2_UNITS_PER_WORD): Likewise.
21427
21428         * config/stormy16/stormy16.c: Include df.h for the prototype
21429         for df_regs_ever_live_p.
21430         (xstormy16_expand_builtin_va_start): Convert the stack offset
21431         into a component_ref and then use POINTER_PLUS_EXPR to add it
21432         to the incoming_virtual_args_rtx.
21433         (xstormy16_gimplify_va_arg_expr): Rename to
21434         xstormy16_gimplify_va_arg_expr.
21435         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
21436         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
21437         xstormy16_gimplify_va_arg_expr.
21438         Fix up some formatting issues.
21439
21440         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
21441         Move to predicates.md.
21442         (xs_hi_general_operand): Likewise.
21443         (xs_hi_nonmemory_operand): Likewise.
21444         * config/stormy16/predicates.md:
21445         (xstormy16_carry_plus_operand): New predicate.
21446         (xs_hi_general_operand): New predicate.
21447         (xs_hi_nonmemory_operand): New predicate.
21448         * config/stormy16/stormy16-protos.h:
21449         (xstormy16_carry_plus_operand): Delete prototype.
21450         (xs_hi_general_operand): Likewise.
21451         (xs_hi_nonmemory_operand): Likewise.
21452
21453         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
21454         modifiers as they are no longer needed and they can trigger
21455         reload spill failures.
21456
21457         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
21458         with a match_operand in order to help reload.
21459
21460         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
21461         constraint with 'e' for the 8th alternative as this version of
21462         the mov.w instruction only accepts the lower 8 registers.
21463
21464 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
21465
21466         PR target/34856
21467         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
21468         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
21469         vector elements.
21470
21471 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
21472
21473         PR middle-end/33333
21474         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
21475
21476 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
21477
21478         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
21479         New functions.
21480         (remove_structure): Update allocations list before removing structure.
21481
21482 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
21483
21484         * ipa-struct-reorg.c (is_safe_cond_expr,
21485         create_new_stmts_for_cond_expr): Use integer_zerop function,
21486         that recognize not only zero-pointer, but zero-integer too.
21487
21488 2008-01-25  Ben Elliston  <bje@au.ibm.com>
21489
21490         PR other/22232
21491         * fixproto: Escape "." in sed expression that strips leading "./".
21492
21493 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
21494
21495         PR driver/34904
21496         * gcc.c (SWITCH_OK): Removed.
21497         (SWITCH_LIVE): Changed to bit.
21498         (SWITCH_FALSE): Likewise.
21499         (SWITCH_IGNORE): Likewise.
21500         (switchstr): Change live_cond to unsigned int.
21501         (process_command): Replace SWITCH_OK with 0.
21502         (do_self_spec): Likewise.
21503         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
21504         (give_switch): Likewise.
21505         (used_arg): Likewise.
21506         (do_spec_1): Set the SWITCH_IGNORE bit.
21507         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
21508         bits.  Set the SWITCH_LIVE bit.
21509
21510 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21511
21512         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
21513
21514 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
21515
21516         PR tree-optimization/34472
21517         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
21518         parameter to a "bool *" and set *DATA to false if there is
21519         an unsafe access.  Do not delete the structure here.
21520         (check_cond_exprs): Delete it here instead.
21521         (check_cond_exprs, exclude_cold_structs): Do not increase
21522         I when removing a structure.
21523
21524 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
21525
21526         PR target/34856
21527         * config/i386/i386.c (ix86_expand_vector_init): Consider only
21528         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
21529
21530 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
21531
21532         PR middle-end/34934
21533         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
21534         a fixed vector for stack.
21535
21536 2008-01-24  Ben Elliston  <bje@au.ibm.com>
21537
21538         PR c++/25701
21539         * doc/gcc.texi (Software development): Add a direntry for g++.
21540
21541 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
21542
21543         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
21544         stale and straggling -fforce-addr comments above.
21545
21546         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
21547         define.
21548         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
21549         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
21550
21551 2008-01-23  Michael Matz  <matz@suse.de>
21552
21553         PR debug/34895
21554         * dwarf2out.c (force_type_die): Use modified_type_die instead of
21555         gen_type_die.
21556
21557 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
21558
21559         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
21560         malloc result type.
21561
21562 2008-01-23 Anatoly Sokolov <aesok@post.ru>
21563
21564         * config/avr/avr.c (avr_current_arch): New variable.
21565         (avr_arch_types): Add 'avr31' and 'avr51' entries.
21566         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
21567         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
21568         (avr_override_options): Init 'avr_current_arch'.
21569         (base_arch_s): Move from here...
21570         * config/avr/avr.h (base_arch_s): ... here. Add new members
21571         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
21572         'mega' to 'have_jmp_call'.
21573         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
21574         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
21575         macros.
21576         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
21577         architectures.
21578         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
21579         MULTILIB_MATCHES): Ditto.
21580
21581 2008-01-23  Richard Guenther  <rguenther@suse.de>
21582
21583         PR middle-end/31529
21584         * cgraphunit.c (cgraph_reset_node): Always mark the node
21585         not reachable if it is not queued already.
21586
21587 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
21588
21589         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
21590         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
21591         (cputype_selected): New static variable.
21592         (bfin_handle_option): Set it if -mcpu is used.
21593         (override_option): Select default set of workarounds if no cpu type
21594         selected on the command line.
21595         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
21596
21597         From  Michael Frysinger  <michael.frysinger@analog.com>
21598         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
21599         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
21600
21601         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
21602         for bf547, bf523, bf524, and bf526.
21603         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
21604         bf526.
21605         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
21606         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
21607         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
21608         __ADSPBF547__ and __ADSPBF54x__ for bf547.
21609         * doc/invoke.texi (Blackfin Options): Document that
21610         -mcpu now accept bf547, bf523, bf524, and bf526.
21611
21612 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
21613
21614         PR rtl-optimization/34628
21615         * combine.c (try_combine): Stop and undo after the first combination
21616         if an autoincrement side-effect on the first insn has effectively
21617         been lost.
21618
21619 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
21620
21621         PR target/34529
21622         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
21623         Offset addresses are not valid for Altivec or paired float modes.
21624
21625 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
21626
21627         PR c++/34607
21628         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
21629         if DECL_INITIAL (decl) is error_mark_node.
21630
21631         PR c++/34914
21632         * c-common.c (handle_vector_size_attribute): Only allow
21633         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
21634         the same way as pointer, array etc. types.
21635         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
21636
21637         PR c++/34917
21638         * tree.c (build_type_attribute_qual_variant): Call
21639         build_qualified_type if attributes are equal, but quals are not.
21640
21641 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21642
21643         PR 32102
21644         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
21645         * flags.h (warn_strict_aliasing): Remove.
21646         (warn_strict_overflow): Remove.
21647         * opts.c (warn_strict_aliasing): Remove.
21648         (warn_strict_overflow): Remove.
21649         * c-opts.c (c_common_handle_option): -Wall only sets
21650         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
21651         (c_common_post_options): Give default values to -Wstrict-aliasing
21652         and -Wstrict-overflow if they are uninitialized.
21653         * common.opt (Wstrict-aliasing): Specify Var and Init.
21654         (Wstrict-overflow): Likewise.
21655
21656 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
21657
21658         PR rtl-optimization/26854
21659         PR rtl-optimization/34400
21660         PR rtl-optimization/34884
21661         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
21662         DF_RD->gen.
21663         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
21664         (df_rd_bb_info.expanded_lr_out): Deleted
21665         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
21666         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
21667         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
21668         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
21669         Removed code to allocate, initialize or free expanded_lr_out.
21670         (df_rd_bb_local_compute_process_def): Restructured to make more
21671         understandable.
21672         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
21673         sets if the sets are being trimmed.
21674
21675 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
21676
21677         PR bootstrap/32287
21678         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
21679         (as_vers): Likewise.
21680         * configure: Regenerated.
21681
21682 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21683
21684         PR middle-end/33092
21685         * tree-pass.h (pass_build_alias): New pass.
21686         * tree-ssa-alias.c (gate_build_alias): New.
21687         (pass_build_alias): New.
21688         * passes.c (init_optimization_passes): Add pass_build_alias after
21689         pass_create_structure_vars.
21690
21691 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
21692
21693         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
21694         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
21695         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
21696         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
21697         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
21698         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
21699         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
21700         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
21701         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
21702         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
21703         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
21704         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
21705         * config/s390/s390.md (FP_ALL): New mode iterator.
21706         (_d): New mode attribute.
21707         ("*signbit<mode>2>"): Changed mode of first operand.
21708         ("isinf<mode>2"): Changed mode of first operand.
21709         ("*TDC_insn"): Adaptation for DFP modes.
21710
21711 2008-01-22  Ben Elliston  <bje@au.ibm.com>
21712
21713         * tree.c (check_qualified_type): Improve function description.
21714
21715 2008-01-21  Jason Merrill  <jason@redhat.com>
21716
21717         PR c++/34196
21718         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
21719         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
21720         if it is set.
21721
21722 2008-01-21  DJ Delorie  <dj@redhat.com>
21723
21724         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
21725         return zero.
21726
21727 2008-01-21  Richard Guenther  <rguenther@suse.de>
21728
21729         PR middle-end/34856
21730         * tree-cfg.c (verify_expr): Allow all invariant expressions
21731         instead of just constant class ones as reference argument.
21732         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
21733         like any other constant.
21734         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
21735
21736 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
21737
21738         * regmove.c (fixup_match_1): Update call crossed frequencies.
21739
21740 2008-01-21  Richard Guenther  <rguenther@suse.de>
21741
21742         PR c/34885
21743         * tree-inline.c (setup_one_parameter): Deal with mismatched
21744         types using a VIEW_CONVERT_EXPR.
21745
21746 2008-01-21  Alon Dayan  <alond@il.ibm.com>
21747             Olga Golovanevsky  <olga@il.ibm.com>
21748
21749         PR tree-optimization/34701
21750         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
21751         when the structure size is not a power of 2.
21752
21753 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
21754
21755         * doc/install.texi: Add doc for --enable-checking=df.
21756
21757 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21758
21759         PR rtl-optimization/34808
21760         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
21761
21762 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
21763
21764         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
21765         input.
21766
21767 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
21768
21769         PR rtl-optimization/26854
21770         PR rtl-optimization/34400
21771         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
21772         DF_RD->gen.
21773         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
21774         (df_rd_bb_info.expanded_lr_out): New.
21775         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
21776         * loop_iv.c (iv_analysis_loop_init): Ditto.
21777         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
21778         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
21779         Added code to allocate, initialize or free expanded_lr_out.
21780         (df_rd_bb_local_compute_process_def): Restructured to make
21781         more understandable.
21782         (df_rd_confluence_n): Add code to do nothing with fake edges and
21783         code to no apply invalidate_by_call sets if the sets are being trimmed.
21784         (df_lr_local_finalize): Renamed to df_lr_finalize.
21785         (df_live_local_finalize): Renamed to df_live_finalize.
21786
21787 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
21788
21789         PR target/34831
21790         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
21791         deciding whether to use reciprocal instructions.
21792
21793 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
21794
21795         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
21796         dwarf2out_note_section_used if cold_text_section is NULL.
21797
21798 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
21799
21800         PR gcov-profile/34610
21801         * tree-cfg.c (make_edges): Mark both outgoing edges from
21802         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
21803         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
21804         from OMP_FOR and OMP_CONTINUE outgoing edges.
21805
21806         * tree-profile.c (tree_profiling): Return early if
21807         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
21808         at the end.
21809         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
21810         from cfun to child_cfun.
21811         * function.h (struct function): Add after_tree_profile bit.
21812
21813 2008-01-19 Anatoly Sokolov <aesok@post.ru>
21814
21815         * config/avr/avr.S (_exit): Disable interrupt.
21816
21817 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
21818             Steven Bosscher  <stevenb.gcc@gmail.com>
21819
21820         PR rtl-optimization/26854
21821         PR rtl-optimization/34400
21822         * df-problems.c (df_live_scratch): New scratch bitmap.
21823         (df_live_alloc): Allocate df_live_scratch when doing df_live.
21824         (df_live_reset): Clear the proper bitmaps.
21825         (df_live_bb_local_compute): Only process the artificial defs once
21826         since the order is not important.
21827         (df_live_init): Init the df_live sets only with the variables
21828         found live by df_lr.
21829         (df_live_transfer_function): Use the df_lr sets to prune the
21830         df_live sets as they are being computed.
21831         (df_live_free): Free df_live_scratch.
21832
21833 2008-01-18  Ian Lance Taylor  <iant@google.com>
21834
21835         * common.opt: Add fmerge-debug-strings.
21836         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
21837         flag_merge_debug_strings rather than flag_merge_constants.
21838         * doc/invoke.texi (Option Summary): Mention
21839         -fmerge-debug-strings.
21840         (Debugging Options): Document -fmerge-debug-strings.
21841
21842 2008-01-18  Ian Lance Taylor  <iant@google.com>
21843
21844         PR c++/33407
21845         * tree.h (DECL_IS_OPERATOR_NEW): Define.
21846         (struct tree_function_decl): Add new field operator_new_flag.
21847         * tree-inline.c (expand_call_inline): When inlining a call to
21848         operator new, force the return value to go into a variable, and
21849         set DECL_NO_TBAA_P on that variable.
21850         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
21851
21852 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
21853
21854         PR debug/34484
21855         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
21856         DWARF2_DEBUGGING_INFO.
21857         (dwarf2out_note_section_used): Ditto.  Add prototype.
21858         (have_multiple_function_sections, text_section_used,
21859         cold_text_section_used, *cold_text_sections): Move declarations
21860         before their uses.
21861
21862 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
21863
21864         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
21865         field and add signal_ra.
21866         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
21867         assignments to frame state pc.  Move end of stack check after
21868         MD_FALLBACK_FRAME_STATE_FOR.
21869         (uw_update_context_1): Use frame state signal_regs if set, instead
21870         of checking signal_frame flag.
21871         (uw_update_context): Use frame state signal_ra if set.
21872         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
21873         * config/xtensa/linux-unwind.h: New file.
21874
21875 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
21876
21877         * modulo-sched.c (get_sched_window): Fix comment typo.
21878
21879 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
21880
21881         PR tree-optimization/34648
21882         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
21883
21884 2008-01-17  Anatoly Sokolov <aesok@post.ru>
21885
21886         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
21887         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
21888
21889 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
21890
21891         PR rtl-optimization/34400
21892         * df-core.c (df_worklist_dataflow_overeager,
21893         df_worklist_dataflow_doublequeue): New functions.
21894         (df_worklist_dataflow): Two different worklist solvers.
21895         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
21896         New param.
21897
21898 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21899
21900         PR testsuite/34821
21901         * doc/invoke.texi: Document the dependence on pthread for fopenmp
21902         and ftree-parallelize-loops.
21903
21904 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
21905
21906         PR rtl-optimization/34826
21907         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
21908
21909 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
21910
21911         * global.c (find_reg): Mark the eh regs as used if necessary.
21912         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
21913         * ra.h (struct allocno): no_eh_reg field added.  Changed
21914         no_stack_reg type to bitfield.
21915
21916 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
21917
21918         * tree.c (substitute_in_expr): Add missing 'break'.
21919
21920 2008-01-17  Richard Guenther  <rguenther@suse.de>
21921
21922         PR tree-optimization/34825
21923         * tree-ssa-math-opts.c (is_division_by): Do not recognize
21924         x / x as division to handle.
21925
21926 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21927
21928         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
21929         "-pthread" is specified.
21930         * pa-hpux11.h (LIB_SPEC): Likewise.
21931
21932 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
21933             Peter Bergner  <bergner@vnet.ibm.com>
21934
21935         PR rtl-optimization/33796
21936         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
21937
21938 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21939
21940         PR libgfortran/34699
21941         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
21942         static links.
21943         * pa-hpux10.h (LINK_SPEC): Likewise.
21944         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
21945
21946 2008-01-16  Richard Guenther  <rguenther@suse.de>
21947
21948         PR middle-end/32628
21949         * fold-const.c (fold_convert_const_int_from_int): Do not
21950         set overflow if that occured only because of a sign extension
21951         change when converting from/to a sizetype with the same
21952         precision and signedness.
21953
21954 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
21955
21956         PR debug/34249
21957         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
21958         location address to the correct place.  Update copyright year.
21959
21960 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21961
21962         * lambda-code.c (lambda_transform_legal_p): Handle the case of
21963         no dependences in the dependence_relations vector.
21964
21965 2008-01-16  Jan Hubicka  <jh@suse.cz>
21966
21967         PR rtl-optimization/31396
21968         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
21969         * cfg.c (dump_reg_info): Print it.
21970         * regs.h (struct reg_info_t): add freq_calls_crossed.
21971         (REG_FREQ_CALLS_CROSSED): New macro.
21972         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
21973         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
21974         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
21975         regmove_optimize): Update call crossed frequencies.
21976         * local-alloc.c (struct qty): Add freq_calls_crossed.
21977         (alloc_qty): Copute freq_calls_crossed.
21978         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
21979         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
21980         * ra.h (struct allocno): Add freq_calls_crossed.
21981
21982 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21983
21984         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
21985         libgomp when compiling with ftree-parallelize-loops.
21986         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
21987
21988 2008-01-16  Richard Guenther  <rguenther@suse.de>
21989
21990         PR tree-optimization/34769
21991         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
21992         * tree.c (int_cst_value): Instead make this function more
21993         permissive in what it accepts as valid input.  Document this
21994         function always sign-extends the value.
21995
21996 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
21997             Richard Guenther  <rguenther@suse.de>
21998
21999         PR c/34668
22000         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
22001         (gimple_fold_indirect_ref_rhs): ... this.
22002         (gimple_fold_indirect_ref): New function with foldings
22003         that preserve lvalueness.
22004         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
22005         * tree-flow.h (gimple_fold_indirect_ref): Declare.
22006         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
22007         to fold an INDIRECT_REF, fall back to the old use of
22008         fold_indirect_ref_1.
22009
22010 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
22011
22012         * tree-data-ref.c (subscript_dependence_tester_1): Call
22013         free_conflict_function.
22014         (compute_self_dependence): Same.
22015
22016 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
22017
22018         PR debug/34249
22019         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
22020         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
22021         function global.
22022         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
22023         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
22024         for DWARF2_UNWIND_INFO targets.
22025
22026 2008-01-16  Richard Guenther  <rguenther@suse.de>
22027
22028         PR c/34768
22029         * c-typeck.c (common_pointer_type): Do not merge inconsistent
22030         type qualifiers for function types.
22031
22032 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
22033
22034         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
22035         loop_iterator li from previous commit.
22036
22037 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
22038
22039         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
22040
22041 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
22042
22043         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
22044         (parallelize_loops): Don't parallelize irreducible components.
22045
22046 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22047
22048         PR c++/24924
22049         * c-opts (c_common_post_options): Do not enable CPP
22050         flag_pedantic_errors by default.
22051
22052 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
22053
22054         PR rtl-optimization/31944
22055         * cse.c (remove_pseudo_from_table): New function.
22056         (merge_equiv_classes): Use above function to remove pseudo-registers.
22057         (invalidate): Likewise.
22058
22059 2008-01-13  Richard Guenther  <rguenther@suse.de>
22060
22061         PR middle-end/34601
22062         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
22063         instead of TYPE_MODE to deal with calls from expand_one_error_var.
22064
22065 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
22066
22067         * gcse.c (cprop_jump): Call validate_unshare_change instead of
22068         validate_change to unshare the source of the PC set.
22069
22070 2008-01-12  Jan Hubicka  <jh@suse.cz>
22071
22072         PR middle-end/32135
22073         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
22074         references above array bounds.  This might trigger bounds checks for
22075         pointers to arrays.
22076
22077 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
22078
22079         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
22080         new_replaceable_dependencies.
22081
22082 2008-01-12  Doug Kwan  <dougkwan@google.com>
22083
22084         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
22085         instead of OPT_Wreturn_type in warning due to ignored return type
22086         qualifiers.
22087         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
22088         options included in -Wextra.
22089         * c.opt: New option -Wignored_qualifiers.
22090         * doc/invoke.texi (Warning Options, -Wextra): Add new option
22091         -Wignore_qualifiers.
22092         (-Wignored-qualifiers): Document.
22093         (-Wreturn-type): Remove description of functionality now handled
22094         by -Wignored-qualifiers.
22095
22096 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
22097
22098         PR ada/33788
22099         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
22100         NOP_EXPR if it is between integral types with the same precision.
22101
22102 2008-01-12  Jan Hubicka  <jh@suse.cz>
22103
22104         PR other/28023
22105         * invoke.texi (max-inline-recursive-depth): Fix default value.
22106
22107 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
22108
22109         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
22110         correct type.
22111
22112 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
22113
22114         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
22115
22116 2008-01-11  James E. Wilson  <wilson@specifix.com>
22117
22118         PR target/26015
22119         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
22120
22121 2008-01-11  Anatoly Sokolov <aesok@post.ru>
22122
22123         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
22124         save/restore frame pointer register and don't use 'call-prologues'
22125         optimization in function with "OS_task" attribute.
22126
22127 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
22128
22129         PR middle-end/31309
22130         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
22131         when copying to memory.
22132
22133 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
22134
22135         PR rtl-optimization/30905
22136         * cfgcleanup.c: Include dce.h
22137         (crossjumps_occured): New global variable.
22138         (try_crossjump_bb): Exit loop after finding a fallthru edge.
22139         If something changed, set crossjumps_occured to true.
22140         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
22141         Don't add/remove fake edges to exit here...
22142         (cleanup_cfg): ...but do it here, when crossjumping.
22143         Run a fast DCE when successful crossjumps occured in the latest
22144         iteration of try_optimize_cfg.
22145
22146 2008-01-11  Richard Guenther  <rguenther@suse.de>
22147
22148         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
22149         (struct vn_unary_op_s): Likewise.
22150         (vn_reference_insert): Free old reference on hash collision.
22151
22152 2008-01-10  Raksit Ashok  <raksit@google.com>
22153
22154         PR rtl-optimization/27971
22155         * combine.c (find_split_point): Split PLUS expressions which are
22156         inside a MEM rtx, and whose first operand is complex.
22157
22158 2008-01-10  DJ Delorie  <dj@redhat.com>
22159
22160         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
22161         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
22162         (m32c_hard_regno_ok): Call the underlying function.
22163
22164 2008-01-10  Richard Guenther  <rguenther@suse.de>
22165
22166         PR middle-end/34683
22167         * tree-cfg.c (tree_merge_blocks): Do not go through the
22168         full-blown folding and stmt updating path if we just deal
22169         with virtual operands.
22170         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
22171         test for abnormal SSA_NAMEs.
22172
22173 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
22174
22175         PR middle-end/34641
22176         * reload.c (push_reload): Add assertions.  All constants from
22177         reg_equiv_constant should have been used for replacing the respective
22178         pseudo earlier.
22179         (find_reloads_address): Invoke find_reloads_address_part for
22180         constant taken from the reg_equiv_constant array.
22181
22182 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
22183
22184         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
22185         field (valnum) the first in the struct.  Replace bools with
22186         unit bit fields.
22187
22188 2008-01-10  Richard Guenther  <rguenther@suse.de>
22189
22190         PR tree-optimization/34651
22191         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
22192         types and ordering for masking and converting.
22193
22194 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
22195
22196         PR tree-optimization/34017
22197         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
22198         also for PHI_NODE expressions.
22199
22200 2008-01-09  Jan Hubicka  <jh@suse.cz>
22201
22202         PR tree-optimization/34708
22203         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
22204         based on number of case labels.
22205         (init_inline_once): Remove switch_cost.
22206         * tree-inline.h (eni_weights_d): Remove switch_cost.
22207
22208 2008-01-09  Richard Guenther  <rguenther@suse.de>
22209         Andrew Pinski  <andrew_pinski@playstation.sony.com>
22210
22211         PR middle-end/30132
22212         * gimplify.c (gimplify_cond_expr): Do not create an addressable
22213         temporary if an rvalue is ok or an lvalue is not required.
22214
22215 2008-01-09  Richard Guenther  <rguenther@suse.de>
22216
22217         PR middle-end/34458
22218         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
22219         adjust return type.
22220
22221 2008-01-09  Richard Guenther  <rguenther@suse.de>
22222
22223         PR middle-end/34679
22224         * tree.c (host_integerp): Check for sizetype only if the
22225         type is an integer type.
22226
22227 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
22228
22229         PR debug/26364
22230         * opts.c (decode_options): Disable inlining of functions called
22231         once if not in unit-at-a-time mode.
22232
22233 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
22234
22235         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
22236
22237 2008-01-08  Richard Guenther  <rguenther@suse.de>
22238
22239         PR middle-end/31863
22240         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
22241         out early if the result will be unused.
22242
22243 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22244
22245         PR target/34709
22246         Revert:
22247
22248         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22249         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
22250         for TARGET_RECIP.
22251
22252 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
22253
22254         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
22255         for vectorization tuned.
22256
22257 2008-01-08  Richard Guenther  <rguenther@suse.de>
22258
22259         PR tree-optimization/34683
22260         * tree-ssa-operands.c (operand_build_cmp): Export.
22261         * tree-ssa-operands.h (operand_build_cmp): Declare.
22262         * tree-vn.c (vuses_compare): Remove.
22263         (sort_vuses): Use operand_build_cmp.
22264         (sort_vuses_heap): Likewise.
22265         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
22266         to re-use old VEC if available.  Do not sort already sorted VUSEs.
22267         (vdefs_to_vec): Do not sort already sorted VDEFs.
22268
22269 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
22270
22271         PR middle-end/34694
22272         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
22273
22274 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22275
22276         PR target/34702
22277         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
22278         limitations of reciprocal sequences on x86 targets.
22279
22280 2008-01-08  Richard Guenther  <rguenther@suse.de>
22281
22282         PR tree-optimization/34683
22283         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
22284
22285 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
22286
22287         PR target/34622
22288         * config/darwin.c (darwin_mergeable_string_section): Don't use
22289         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
22290
22291 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
22292
22293         PR target/34682
22294         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
22295         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
22296         predicates of op0 and op1 to register_operand.
22297         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
22298         expander using X87MODEF mode iterator.  Change predicates of
22299         op0 and op1 to register_operand.
22300         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
22301         corresponding patterns and macroize using MODEF macro.  Change
22302         predicates of op0 and op1 to register_operand and remove
22303         "m" constraint. Disparage "r" alternative with "!".
22304         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
22305         macroize using X87MODEF macro.  Change predicates of op0 and op1
22306         to register_operand and remove "m" constraint.  Disparage "r"
22307         alternative with "!".
22308         (absneg splitter with memory operands): Remove.
22309         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
22310         patterns and macroize using X87MODEF mode iterator.
22311         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
22312         Change predicate of op1 to register_operand.
22313         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
22314         for memory operands.
22315
22316 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
22317
22318         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
22319
22320 2008-01-07  Richard Guenther  <rguenther@suse.de>
22321
22322         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
22323         fields.
22324
22325 2008-01-07  Richard Guenther  <rguenther@suse.de>
22326
22327         PR tree-optimization/34683
22328         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
22329         VOPs of the needed size to save memory.  Use VEC_quick_push
22330         to save compile-time.
22331         (vdefs_to_vec): Likewise.
22332
22333 2008-01-07  Sa Liu  <saliu@de.ibm.com>
22334
22335         * config/spu/spu.md (divdf3): Genetate inline code for double
22336         division.  The implementation doesn't handle INF or NAN, therefore it
22337         only applies when -ffinite-math-only is given.
22338
22339 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
22340
22341         PR libstdc++/34680
22342         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
22343         * doc/cpp.texi ([Common Predefined Macros]): Document.
22344
22345 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
22346
22347         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
22348         order to use commutative addition instead of subtraction.
22349
22350 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22351             Mircea Namolaru  <namolaru@il.ibm.com>
22352             Vladimir Yanovsky  <yanov@il.ibm.com>
22353             Revital Eres  <eres@il.ibm.com>
22354
22355         PR tree-optimization/34263
22356         * tree-outof-ssa.c (process_single_block_loop_latch,
22357         contains_tree_r): New functions.
22358         (analyze_edges_for_bb): Call process_single_block_loop_latch
22359         function to empty single-basic-block latch block if possible.
22360
22361 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22362
22363         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
22364         for TARGET_RECIP.
22365         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
22366
22367 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
22368
22369         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
22370
22371 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
22372
22373         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
22374
22375 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
22376
22377         PR tree-optimization/34618
22378         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
22379         flag from T.
22380
22381 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22382
22383         PR target/34673
22384         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
22385         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
22386         Update copyright year.
22387
22388         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
22389         Update copyright year.
22390         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
22391         using NR fixup.
22392
22393 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
22394
22395         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
22396         edge does not point to current bb before changing need_assert.
22397
22398 2008-01-04  Richard Guenther  <rguenther@suse.de>
22399
22400         PR middle-end/34029
22401         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
22402         for verifying purposes if they are is_gimple_min_invariant.
22403
22404 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
22405
22406         PR tree-optimization/34448
22407         PR tree-optimization/34465
22408         * gimplify.c (gimplify_init_constructor): Add new parameter
22409         notify_temp_creation.  Use it.
22410         (gimplify_modify_expr_rhs): Take volatiles into account when
22411         optimizing constructors.
22412         Do not optimize constructors if gimplify_init_constructor will dump to
22413         memory.
22414         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
22415         * gcc.c-torture/compile/pr34448.c: New.
22416
22417 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
22418
22419         PR gcov-profile/34609
22420         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
22421         return_slot if result is TREE_ADDRESSABLE.
22422
22423 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
22424
22425         * config/mips/mips.md (sqrt_condition): Tweak comment.
22426         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
22427
22428 2008-01-03  Tom Tromey  <tromey@redhat.com>
22429
22430         PR c/34457
22431         * c-common.c (c_type_hash): Handle VLAs.
22432
22433 2008-01-03  Jan Hubicka  <jh@suse.cz>
22434
22435         PR tree-optimization/31081
22436         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
22437         0 when inlining and not inlining to first basic block.
22438         (remap_decl): When var is initialized to 0, don't set default_def.
22439         (expand_call_inline): Set entry_bb.
22440         * tree-inline.h (copy_body_data): Add entry_bb.
22441
22442 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
22443
22444         PR c++/34619
22445         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
22446         before returning.
22447
22448         PR tree-optimization/29484
22449         * tree-inline.c (inline_forbidden_p_2): New function.
22450         (inline_forbidden_p): Disallow inlining if some static var
22451         has an address of a local LABEL_DECL in its initializer.
22452         * doc/extend.texi (Labels as Values): Document &&foo behaviour
22453         vs. inlining.
22454
22455 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
22456
22457         PR tree-optimization/34635
22458         * tree-data-ref.c (add_other_self_distances): Make sure that the
22459         evolution step is constant.
22460
22461 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
22462
22463         PR middle-end/34608
22464         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
22465
22466 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
22467
22468         * tree-sra.c (scalarize_init): Insert the generate_element_init
22469         statements after the generate_element_zero statements.
22470
22471 2008-01-02  Richard Guenther  <rguenther@suse.de>
22472
22473         PR middle-end/34093
22474         PR middle-end/31976
22475         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
22476         for very large number of operands instead of ICEing.
22477
22478 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
22479
22480         PR target/34013
22481         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
22482         while stack probing.
22483
22484 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
22485
22486         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
22487         in C++0x mode.
22488
22489 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
22490
22491         PR libmudflap/26442
22492         * tree-mudflap.c (mx_register_decls): Guard warning by
22493         !DECL_ARTIFICIAL check.
22494
22495 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
22496
22497         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
22498         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
22499         sse5_perm<mode>): Fix constraints.