OSDN Git Service

* i386.c (decide_alg): Be more conservative about optimizing for size.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-04  Jan Hubicka  <jh@suse.cz>
2
3         * i386.c (decide_alg): Be more conservative about optimizing for size.
4
5 2008-09-04  Ian Lance Taylor  <iant@google.com>
6
7         * varasm.c (narrowing_initializer_constant_valid_p): New
8         static function.
9         (initializer_constant_valid_p): Call it.
10
11 2008-09-04  Jeff Law  <law@redhat.com>
12
13         * fold-const.c (native_encode_real): Fix computation of WORDS.
14         (native_interpret_real): Likewise.
15
16 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
17
18         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
19
20 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
21
22         * ira-conflicts.c (process_regs_for_copy): Check insn to check
23         that the cost is already taken into account in ira-costs.c
24
25         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
26
27         * ira-build.c (print_copy, print_copies, ira_debug_copy,
28         ira_debug_copies): New.
29         (ira_bulid): Call print_copies.
30         
31         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
32         
33 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
34
35         PR target/32783
36         * config/rs6000/rs6000.c (optimization_options): Remove check of
37         flag_toplevel_order.
38
39 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
40
41         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
42         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
43         second operand is a reg_imm10_operand.
44         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
45         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
46         (*seq_<GPR:mode><GPR2:mode>): Rename to
47         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
48         ISA_HAS_SEQ_SNE.
49         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
50         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
51         ISA_HAS_SEQ_SNE.
52         (*sne_<GPR:mode><GPR2:mode>): Rename to
53         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
54         ISA_HAS_SEQ_SNE.
55
56 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
57
58         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
59         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
60         combining an arithmetic right shift by more than 31 and a
61         trunction.  Don't match for out-of-range shift amounts.  Set
62         attribute mode to <MODE>.
63         (*lshr32_trunc<mode>): Name the pattern combining a logical right
64         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
65         (*<optab>_trunc<mode>_exts): New pattern for truncated right
66         shifts by less than 32.
67         (extv): Change predicate on first operand to accept registers.
68         Change predicate of the other operands from immediate_operand to
69         const_int_operand.  Expand exts when source is a register.
70         (extzv): Change predicate of the constant operands from
71         immediate_operand to const_int_operand.
72         (extzv<mode>): Change predicate of the constant operands from
73         immediate_operand to const_int_operand and no constraint. Also
74         remove mode.
75         (*extzv_trunc<mode>_exts): New pattern.
76
77 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
78
79         * config/mips/mips.h (ISA_HAS_CINS): New macro.
80         * config/mips/mips-protos.h (mask_low_and_shift_p,
81         mask_low_and_shift_len): Declare.
82         * config/mips/mips.c (mask_low_and_shift_p,
83         mask_low_and_shift_len): New functions.
84         (mips_print_operand): Handle new operand prefix "m".
85         * config/mips/mips.md (*cins<mode>): New pattern.
86
87 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
88
89         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
90         optimizing for size.
91
92 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
93
94         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
95         regardless of epilogue_completed.
96
97 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
98
99         PR middle-end/37359
100         * ira-lives.c (process_bb_node_lives): Check setjmp.
101
102 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
103
104         PR middle-end/37243
105         * ira-build.c (form_loop_tree): Reverse BB walk.
106         (create_bb_allocnos): Likewise.
107         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
108         (mark_reg_store): Rename to...
109         (mark_ref_live): ...this and take a df_ref argument instead of
110         note_stores arguments.  Assert that we have a register.
111         (mark_reg_clobber): Delete.
112         (def_conflicts_with_inputs_p): New function.
113         (mark_reg_conflicts): Delete.
114         (mark_reg_death): Rename to...
115         (mark_ref_dead): ...this and take a df_ref argument instead of
116         a register.  Assert that we have a register.
117         (process_bb_node_lives): Hoist frequency calculation out of
118         instruction walk.  Convert from a forwards scan to a backwards scan.
119         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
120         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
121         (create_allocno_live_ranges): Don't create regs_set.
122
123 2008-09-04  Ian Lance Taylor  <iant@google.com>
124
125         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
126         or REG_LABEL_TARGET.
127         * calls.c (emit_library_call_value_1): Use MEM_P rather than
128         comparing MODE with MEM.
129         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
130         comparing with GF_PREDICT_TAKEN.
131         (gimple_get_lhs): Change code to enum gimple_code.
132         (gimple_set_lhs): Likewise.
133         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
134         * omp-low.c (find_omp_clause): Change kind parameter to enum
135         omp_clause_code.
136         * tree-flow.h (find_omp_clause): Update declaration.
137         * regrename.c (clear_dead_regs): Change kind parameter to enum
138         reg_note.
139         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
140         GET_MODE.
141         * see.c (see_get_extension_data): Change return type to enum
142         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
143         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
144         (see_gen_normalized_extension): Change extension_code parameter to
145         enum entry_type.
146         (see_seek_pre_extension_expr): Change extension_code to enum
147         entry_type.
148         (see_merge_one_def_extension): Likewise.
149         (see_handle_relevant_defs): Likewise.
150         (see_handle_relevant_uses): Likewise.
151         (see_analyze_one_def): Likewise.
152         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
153         GIMPLE_ASM rather than ASM_EXPR.
154         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
155         GIMPLE_RETURN rather than RETURN_EXPR.
156         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
157         (evaluate_stmt): Likewise.
158         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
159         to enum vect_relevant.
160         (vect_mark_stmts_to_be_vectorized): Change assertion to not
161         compare gimple codes with tree codes.
162
163 2008-09-04  Paul Brook  <paul@codesourcery.com>
164
165         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
166
167 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
168
169         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
170         pointer check lost in the recent no-unit-at-a-time patch.
171         
172 2008-09-04  Jan Hubicka  <jh@suse.cz>
173
174         PR middle-end/37343
175         * tree-switch-conversion.c (check_final_bb): Accept only IP
176         invariants.
177
178 2008-09-04  Jan Hubicka  <jh@suse.cz>
179
180         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
181         Break out from ...
182         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
183         using_ranges argument.
184         (vrp_evaluate_conditional): Avoid bogus warning for type range.
185         (vrp_visit_cond_stmt): Update call of
186         vrp_evaluate_conditional_warnv_with_ops
187
188 2008-09-04  Jan Hubicka  <jh@suse.cz>
189
190         PR tree-optimization/37345
191         PR tree-optimization/37358
192         PR tree-optimization/37357
193         * tree.c (build_function_type_skip_args): Build distinct type copy;
194         set TYPE_CONTEXT.
195         (build_function_decl_skip_args): Set type of new decl not orig decl;
196         clear DECL_VINDEX for methods turned into functions.
197
198 2008-09-04  Nick Clifton  <nickc@redhat.com>
199
200         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler
201         check.
202         * configure: Regenerate.
203         * config.in: Regenerate.
204         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
205         alignment field, if it is supported.
206
207 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
208
209         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
210         libraries.
211
212 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
213
214         * config/rs6000/rs6000.c (processor_target_table): Do not
215         enable VMX for POWER6.
216
217 2008-09-03  Anton Blanchard  <anton@samba.org>
218
219         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
220         emit memory barrier before operation.
221
222 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
223
224         PR testsuite/37325
225         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
226         default_elf_asm_output_external.
227
228 2008-09-03  Jeff Law  <law@redhat.com>
229
230         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
231
232 2008-09-03  Richard Henderson  <rth@redhat.com>
233
234         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
235         memory barrier to below the test-and-set.
236         (alpha_split_lock_test_and_set_12): Likewise.
237
238 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
239
240         PR rtl-opt/37243
241
242         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
243         all_allocnos.
244
245         * ira-color.c (print_loop_title): Use all_allocnos.
246         (color_pass): Ditto.  Don't add border_allocnos.  Check that
247         subloop allocno in the correspdoning bitmap all_allocnos.
248
249         * ira-emit.c (change_loop): Use all_allocnos.
250
251         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
252         Ditto.
253         (ira_create_allocno): Set up all_allocnos bit for the created
254         allocno.
255         (create_cap_allocno): Remove setting mentioned_allocnos.
256         (create_insn_allocnos): Ditto.
257         (remove_unnecessary_allocnos): Use all_allocnos.
258         (check_allocno_creation): Check that allocnos are in the
259         corresponding bitmap all_allocnos.
260         
261 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
262
263         PR rtl-opt/37243
264         
265         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
266         (process_regs_for_copy): Process subregs.  Refine check when cost
267         is taken into account in ira-costs.c.
268         (process_reg_shuffles): Use REG_SUBREG_P.
269         (add_insn_allocno_copies): Ditto.  Ignore modes.
270
271         * ira-color.c (conflict_allocno_vec): New.
272         (COST_HOP_DIVISOR): New macro.
273         (update_copy_costs_1): Use it.
274         (update_conflict_hard_regno_costs): New function.
275         (assign_hard_reg): Use it.
276         (ira_color): Allocate and free conflict_allocno_vec.
277  
278 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
279
280         PR rtl-opt/37296
281
282         * ira-int.h (ira_sort_insn_chain): Remove.
283
284         * ira.c (basic_block_order_nums, chain_insn_order,
285         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
286         (ira): Don't call ira_sort_insn_chain.
287
288         * reload1.c (reload): Don't call ira_sort_insn_chain.
289
290 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
291
292         PR middle-end/37293
293         * cgraphunit.c (update_call_expr): Remove eh regions from statements
294         which become non throw.
295         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
296         update_call_expr after updating the flags on the decl.
297
298 2008-09-03  Jan Hubicka  <jh@suse.cz>
299
300         PR tree-optimization/37315
301         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
302         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
303         (cgraph_analyze_functions): Use node->analyzed
304         (cgraph_mark_functions_to_output): Likewise.
305         (cgraph_expand_function): All functions can be released after
306         expanding.
307         (cgraph_optimize): Use gimple_has_body_p.
308         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
309         (cgraph_decide_inlining_incrementally): Likewise.
310         (inline_transform): Inline transform.
311         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
312         copy fields needed.
313         (inlinable_function_p): Drop gimple_body check.
314         (expand_call_inline): Use gimple_has_body_p.
315         * gimple.c (gimple_has_body_p): New.
316         * gimple.h (gimple_has_body_p): Add prototype.
317         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
318         (dump_function_to_file): Use gimple_has_body_p check.
319
320 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
321
322         PR c++/37346
323         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
324         substatements.
325         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
326
327 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
328
329         From Michael Frysinger  <michael.frysinger@analog.com>
330         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
331         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
332         for bf538.
333
334 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
335
336         Add picoChip port.
337         * doc/extend.texi: Document picoChip builtin functions.
338         * doc/invoke.texi: Document picoChip options.
339         * doc/contrib.texi: Add picoChip contribution.
340         * doc/md.texi: Document picoChip constraints.
341         * config.gcc: Add picochip-*-*.
342         * config/picochip/: Add new port.
343
344 2008-09-03  Richard Guenther  <rguenther@suse.de>
345
346         PR tree-optimization/37328
347         * tree-sra.c (sra_build_assignment): Gimplify properly.
348         (generate_copy_inout): Take the correct stmt as definition,
349         remove bogus assert.
350
351 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
352
353         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
354         attributes.
355
356         From Michael Frysinger  <michael.frysinger@analog.com>
357         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
358
359 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
360
361         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is
362         defined.
363         (__gthread_setspecific): Revert 2008-08-31 change to
364         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API
365         case.
366
367 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
368
369         * diagnostic.c (error_at): New.
370         * toplev.h (error_at): New prototype.
371         * c-typeck.c (build_array_ref): Call error_at instead of error.
372         Pass location to pedwarn.
373
374 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
375
376         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
377
378 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
379
380         * dwarf2out.c (tree_add_const_value_attribute): Only handle
381         VAR_DECL and CONST_DECL.
382
383 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
384             Jakub Jelinek  <jakub@redhat.com>
385
386         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
387         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
388         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
389         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
390         Don't set ix86_save_varrargs_registers.
391         (ix86_setup_incoming_varargs): Assume cum != NULL.
392         (ix86_va_start): Check ix86_varargs_gpr_size and
393         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
394         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
395         from frame pointer if ix86_varargs_gpr_size == 0.
396         (ix86_compute_frame_layout): Updated.
397         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
398         (ix86_varargs_gpr_size): Define.
399         (ix86_varargs_fpr_size): Likewise.
400         (machine_function): Remove save_varrargs_registers.
401         Add varargs_gpr_size and varargs_fpr_size.
402
403 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
404
405         * config/alpha/alpha.c (va_list_skip_additions,
406         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
407         (alpha_gimplify_va_arg): Call unshare_expr on second use of
408         offset_field.
409
410         PR tree-optimization/36766
411         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
412         for already removed basic blocks.
413
414         PR target/36332
415         * real.c (real_maxval): Clear a lower bit to make real_maxval
416         match get_max_float for IBM long double format.
417
418 2008-09-02  Andreas Schwab  <schwab@suse.de>
419
420         * configure.ac: Use m4_quote to quote the expansion of m4_do.
421         * configure: Regenerate.
422
423 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
424
425         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
426         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
427         checking for a non-VOID CONSTANT_P.
428
429 2008-09-02  Jan Hubicka  <jh@suse.cz>
430
431         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
432         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and sdiv_pow2_cheap
433
434 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
435
436         * expr.c (emit_group_store): Don't assert stack temp mode size.
437
438 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
439             Tobias Grosser  <grosser@fim.uni-passau.de>
440             Jan Sjodin  <jan.sjodin@amd.com>
441             Harsha Jagasia  <harsha.jagasia@amd.com>
442             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
443             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
444             Adrien Eliche  <aeliche@isty.uvsq.fr>
445
446         Merge from graphite branch.
447         * graphite.c: New.
448         * graphite.h: New.
449         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
450         * doc/invoke.texi (-floop-block, -floop-interchange,
451         -floop-strip-mine): Document new flags.
452         * tree-into-ssa.c (gimple_vec): Moved...
453         * tree-loop-distribution.c (rdg_component): Moved...
454         * cfgloopmanip.c: Include tree-flow.h.
455         (update_dominators_in_loop): New.
456         (create_empty_if_region_on_edge): New.
457         (create_empty_loop_on_edge): New.
458         (loopify): Use update_dominators_in_loop.
459         * tree-pass.h (pass_graphite_transforms): Declared.
460         * configure: Regenerate.
461         * tree-phinodes.c (make_phi_node): Export.
462         (add_phi_node_to_bb): New, split from create_phi_node.
463         * tree-chrec.c (for_each_scev_op): New.
464         * tree-chrec.h (for_each_scev_op): Declared.
465         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
466         (remove_statement): Call get_phi_with_result.
467         * config.in (HAVE_cloog): Undef.
468         * gdbinit.in (pgg): New.
469         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
470         * tree-ssa-loop.c (graphite_transforms): New.
471         (gate_graphite_transforms): New.
472         (pass_graphite_transforms): New.
473         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
474         HAVE_cloog): Defined.
475         * tree-vectorizer.c (rename_variables_in_bb): Export.
476         * tree-data-ref.c (dr_may_alias_p): Export.
477         (stmt_simple_memref_p): New.
478         (find_data_references_in_stmt): Export.
479         (find_data_references_in_loop): Export.
480         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
481         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
482         (create_rdg_vertices): Export.
483         (build_empty_rdg): New.
484         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
485         * tree-data-ref.h (rdg_component): ... here.
486         (scop_p): New.
487         (struct data_reference): Add a field scop.
488         (DR_SCOP): New.
489         (find_data_references_in_loop): Declared.
490         (find_data_references_in_stmt): Declared.
491         (create_rdg_vertices): Declared.
492         (dr_may_alias_p): Declared.
493         (stmt_simple_memref_p): Declared.
494         (struct rdg_edge): Add a field ddr_p relation.
495         (build_empty_rdg): Declared.
496         * lambda.h (lambda_matrix): Declare a VEC of.
497         (find_induction_var_from_exit_cond): Declared.
498         (lambda_vector_compare): New.
499         * common.opt (fgraphite, floop-strip-mine,
500         floop-interchange, floop-block): New flags.
501         * lambda-code.c (find_induction_var_from_exit_cond): Export.
502         * cfgloop.c (is_loop_exit): New.
503         * cfgloop.h (is_loop_exit): Declared.
504         (create_empty_if_region_on_edge): Declared.
505         (create_empty_loop_on_edge): Declared.
506         * tree-flow.h (add_phi_node_to_bb): Declared.
507         (make_phi_node): Declared.
508         (rename_variables_in_bb): Declared.
509         (perfect_loop_nest_depth): Declared.
510         (graphite_transform_loops): Declared.
511         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
512         (graphite.o-warn): Add -Wno-error.
513         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
514         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
515         (INCLUDES): Add PPLINC, CLOOGINC.
516         (OBJS-common): Add graphite.o.
517         (graphite.o): Add rule.
518         * gimple.h (gimple_vec): ... here.
519         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
520         * passes.c (init_optimization_passes): Schedule 
521         pass_graphite_transforms.
522
523 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
524
525         PR target/37283
526         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
527         and -fno-toplevel-reorder after handle_options.
528
529 2008-09-02  Paul Brook  <paul@codesourcery.com>
530
531         * config/arm/arm.c (arm_tune_cortex_a9): Define.
532         (arm_override_options): Set arm_tune_cortex_a9.
533         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
534         (arm_issue_rate): Handle cortexa9.
535         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
536         * config/arm/arm-cores.def: Add cortex-a9.
537         * config/arm/arm-tune.md: Regenerate.
538         * config/arm/arm.md: Include cortex-a9.md.
539         (generic_sched, generic_vfp): Add cortexa9.
540         * config/arm/cortex-a9.md: New file.
541
542 2008-09-02  Richard Guenther  <rguenther@suse.de>
543
544         PR tree-optimization/37327
545         * tree-vrp.c (register_new_assert_for): Make sure to not have
546         TREE_OVERFLOW set on the bound.
547
548 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
549
550         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
551
552         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
553         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
554         spec_info->mask.
555
556 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
557
558         * gcc/config/spu/spu.md (divdf3): Removed.
559
560 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
561
562         PR tree-optimization/37095
563         * cgraph.c (cgraph_node): When creating new cgraph node after
564         assembler_name_hash has been populated, record it in the hash
565         table.
566
567 2008-09-01  Paul Brook  <paul@codesourcery.com>
568
569         * doc/invoke.texi: Document -mword-relocations.
570         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
571         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
572         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
573         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
574         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
575         (arm_emit_movpair): New function.
576         (arm_print_operand <c>): Handle sybolic addresses.
577         * config/arm/arm.h (TARGET_USE_MOVT): Define.
578         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
579         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
580         * config/arm/arm.opt: Add -mword-relocations.
581         * config/arm/arm.md (movsi): Use arm_emit_movpair.
582         (arm_movt, arm_movw): New.
583
584 2008-09-01  Paul Brook  <paul@codesourcery.com>
585
586         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
587         Allow Interworking on ARMv4 EABI based targets.
588         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
589         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
590
591 2008-09-01  Paul Brook  <paul@codesourcery.com>
592
593         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
594         optimized LT0 test.  Remove optimization for GT.
595
596 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
597
598         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
599         openmp applications.
600         * pa-hpux11.h (LIB_SPEC): Likewise.
601
602         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS is
603         defined.
604
605 2008-09-01  Jan Hubicka  <jh@suse.cz>
606
607         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
608         present, use only counts; when guessed use only frequencies.
609         (estimate_bb_frequencies): Use function_frequency.
610         * profile.c (compute_branch_probabilities): Exit early when
611         profile reading failed. Set profile_status.
612         (branch_prob): Do not set profile_status.
613
614 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
615
616         * tree.c (protected_set_expr_location): New.
617         * tree.h (protected_set_expr_location): New prototype.
618         * c-tree.h (build_array_ref): Add argument.
619         (parser_build_unary_op): Same.
620         * c-typeck.c (build_indirect_ref): Handle new location argument.
621         (build_array_ref): Same.
622         (parser_build_unary_op): Same.
623         * gimplify.c (gimplify_asm_expr): Set input_location before calling
624         error.
625         * c-omp.c (c_finish_omp_atomic): Pass location when calling
626         build_indirect_ref.
627         * c-common.c (finish_label_address_expr): Handle new location
628         argument.
629         * c-common.h (build_indirect_ref): Add argument.
630         (finish_label_address_expr): Same.
631         * c-parser.c (c_parser_unary_expression): Pass location to build
632         functions.
633         (c_parser_postfix_expression): Same.
634
635 2008-09-01  Paul Brook  <paul@codesourcery.com>
636
637         * config/arm/arm.md: Include cortex-r4f.md.
638         (attr fpu): Update type list.
639         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
640         fconstd, fcmps and fcmpd.
641         (attr tune_cortexr4): Define.
642         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
643         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
644         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
645         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
646         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn
647         types.
648         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
649         cortex_a8_vfp_farith: Ditto.
650         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
651         * config/arm/cortex-r4.md: Use tune_cortexr4.
652         * config/arm/cortex-r4f.md: New file.
653
654 2008-09-01  Richard Guenther  <rguenther@suse.de>
655
656         PR tree-optimization/37305
657         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
658         the result of constant conversions.
659         (fold_gimple_assign): Likewise.
660
661 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
662
663         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
664         #ifdef ENABLE_CHECKING.
665
666 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
667
668         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
669         * sched-int.h (print_insn, print_pattern, print_value): Declare also
670         when !INSN_SCHEDULING.
671
672 2008-09-01  Andreas Schwab  <schwab@suse.de>
673
674         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
675
676 2008-09-01  Paul Brook  <paul@codesourcery.com>
677
678         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
679
680 2008-09-01  Jan Hubicka  <jh@suse.cz>
681
682         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
683
684         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
685         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
686         * gimplify.c (gimplify_init_constructor): Add speed operand.
687         * tree-sra.c (decide_block_copy): Likewise.
688         * tree-inline.c (estimate_move_cost): Likewise.
689         * config/alpha/alpha.h (MOVE_RATIO): Update.
690         * config/frv/frv.c (MOVE_RATIO): Update.
691         * config/spu/spu.h (MOVE_RATIO): Update.
692         * config/sparc/sparc.h (MOVE_RATIO): Update.
693         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
694         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
695         * config/cris/cris.h (MOVE_RATIO): Update.
696         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
697         * config/arm/arm.h (MOVE_RATIO): Update.
698         * config/pa/pa.md: Update uses of MOVE_RATIO
699         * config/pa/pa.h (MOVE_RATIO): Update.
700         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
701         * config/h8300/h8300.h (MOVE_RATIO): Update.
702         * config/v850/v850.h (MOVE_RATIO): Update.
703         * config/bfin/bfin.h (MOVE_RATIO): Update.
704
705 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
706         Dmitry Melnik  <dm@ispras.ru>
707         Dmitry Zhurikhin  <zhur@ispras.ru>
708         Alexander Monakov  <amonakov@ispras.ru>
709         Maxim Kuvyrkov  <maxim@codesourcery.com>
710
711         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
712         sel-sched-dump.c, sel-sched-ir.c: New files.
713         * Makefile.in (OBJS-common): Add selective scheduling object
714         files.
715         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
716         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
717         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
718         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
719         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
720         (make_forwarder_block): Update loop latch if we have redirected
721         the loop latch edge.
722         * cfgloop.c (get_loop_body_in_custom_order): New function.
723         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
724         (CP_FALLTHRU_PREHEADERS): Likewise.
725         (get_loop_body_in_custom_order): Declare.
726         * cfgloopmanip.c (has_preds_from_loop): New.
727         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
728         Assert that the preheader edge will be fall thru when it is set.
729         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
730         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
731         fsel-sched-substitution, fselective-scheduling): New flags.
732         * cse.c (hash_rtx_cb): New.
733         (hash_rtx): Use it.
734         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
735         sel_sched_insn_cnt): New counters.
736         * final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
737         * genattr.c (main): Output maximal_insn_latency prototype.
738         * genautomata.c (output_default_latencies): New. Factor its code from ...
739         (output_internal_insn_latency_func): ... here.
740         (output_internal_maximal_insn_latency_func): New.
741         (output_maximal_insn_latency_func): New.
742         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
743         (struct hard_reg_set_iterator): New.
744         (hard_reg_set_iter_init, hard_reg_set_iter_set,
745         hard_reg_set_iter_next): New functions.
746         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
747         * lists.c (remove_free_INSN_LIST_node,
748         remove_free_EXPR_LIST_node): New functions.
749         * loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
750         set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
751         (loop_optimizer_finalize): Do not verify flow info after reload.
752         * recog.c (validate_replace_rtx_1): New parameter simplify.
753         Default it to true.  Update all uses.  Factor out simplifying
754         code to ...
755         (simplify_while_replacing): ... this new function.
756         (validate_replace_rtx_part,
757         validate_replace_rtx_part_nosimplify): New.
758         * recog.h (validate_replace_rtx_part,
759         validate_replace_rtx_part_nosimplify): Declare.
760         * rtl.c (rtx_equal_p_cb): New.
761         (rtx_equal_p): Use it.
762         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
763         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
764         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
765         * vecprim.h: Add a vector type for unsigned int.
766         * haifa-sched.c: Include vecprim.h and cfgloop.h.
767         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
768         ready_try, cycle_issued_insns, spec_info): Make global.
769         (readyp): Initialize.
770         (dfa_lookahead): New global variable.
771         (old_max_uid, old_last_basic_block): Remove.
772         (h_i_d): Make it a vector.
773         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
774         through HID macro.
775         (after_recovery, adding_bb_to_current_region_p):
776         New variables to handle correct insertion of the recovery code.
777         (struct ready_list): Move declaration to sched-int.h.
778         (rgn_n_insns): Removed.
779         (rtx_vec_t): Move to sched-int.h.
780         (find_insn_reg_weight): Remove.
781         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
782         (haifa_init_h_i_d, haifa_finish_h_i_d):
783         New functions to initialize / finalize haifa instruction data.
784         (extend_h_i_d, init_h_i_d): Rewrite.
785         (unlink_other_notes): Move logic to add_to_note_list.  Handle
786         selective scheduler.
787         (ready_lastpos, ready_element, ready_sort, reemit_notes,
788         find_fallthru_edge): Make global, remove static prototypes.
789         (max_issue): Make global.  Add privileged_n and state parameters.  Use
790         them.
791         (extend_global, extend_all): Removed.
792         (init_before_recovery): Add new param.  Fix the handling of the case
793         when we insert a recovery code before the EXIT which has a predecessor
794         with a fallthrough edge to it.
795         (create_recovery_block): Make global.  Rename to
796         sched_create_recovery_block.  Update.
797         (change_pattern): Rename to sched_change_pattern.  Make global.
798         (speculate_insn): Rename to sched_speculate_insn.  Make global.
799         Split haifa-specific functionality into ...
800         (haifa_change_pattern): New static function.
801         (sched_extend_bb): New static function.
802         (sched_init_bbs): New function.
803         (current_sched_info): Change type to struct haifa_sched_info.
804         (insn_cost): Adjust for selective scheduling.
805         (dep_cost_1): New function.  Move logic from ...
806         (dep_cost): ... here.
807         (dep_cost): Use dep_cost_1.
808         (contributes_to_priority_p): Use sched_deps_info instead of
809         current_sched_info.
810         (priority): Adjust to work with selective scheduling.  Process the
811         corner case when all dependencies don't contribute to priority.
812         (rank_for_schedule): Use ds_weak instead of dep_weak.
813         (advance_state): New function.  Move logic from ...
814         (advance_one_cycle): ... here.
815         (add_to_note_list, concat_note_lists): New functions.
816         (rm_other_notes): Make static.  Adjust for selective scheduling.
817         (remove_notes, restore_other_notes): New functions.
818         (move_insn): Add two arguments.  Update assert.  Don't call
819         reemit_notes.
820         (choose_ready): Remove lookahead variable, use dfa_lookahead.
821         Remove more_issue, max_points.  Move the code to initialize
822         max_lookahead_tries to max_issue.
823         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
824         ready.  Adjust use of move_insn.  Call restore_other_notes.
825         (luid): Remove.
826         (sched_init, sched_finish): Move Haifa-specific initialization/
827         finalization to ...
828         (haifa_sched_init, haifa_sched_finish): ... respectively.
829         New functions.
830         (setup_sched_dump): New function.
831         (haifa_init_only_bb): New static function.
832         (haifa_speculate_insn): New static function.
833         (try_ready): Use haifa_* instead of speculate_insn and
834         change_pattern.
835         (extend_ready, extend_all): Remove.
836         (sched_extend_ready_list, sched_finish_ready_list): New functions.
837         (create_check_block_twin, add_to_speculative_block): Use
838         haifa_insns_init instead of extend_global.  Update to use new
839         initialization functions.  Change parameter.  Factor out code from
840         create_check_block_twin to ...
841         (sched_create_recovery_edges) ... this new function.
842         (add_block): Remove.
843         (sched_scan_info): New.
844         (extend_bb): Use sched_scan_info.
845         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
846         static functions for walking through scheduling region.
847         (sched_luids): New vector variable to replace uid_to_luid.
848         (luids_extend_insn): New function.
849         (sched_max_luid): New variable.
850         (luids_init_insn): New function.
851         (sched_init_luids, sched_finish_luids): New functions.
852         (insn_luid): New debug function.
853         (sched_extend_target): New function.
854         (haifa_init_insn): New static function.
855         (sched_init_only_bb): New hook.
856         (sched_split_block): New hook.
857         (sched_split_block_1): New function.
858         (sched_create_empty_bb): New hook.
859         (sched_create_empty_bb_1): New function.
860         (common_sched_info, ready): New global variables.
861         (current_sched_info_var): Remove.
862         (move_block_after_check): Use common_sched_info.
863         (haifa_luid_for_non_insn): New static function.
864         (init_before_recovery): Use haifa_init_only_bb instead of
865         add_block.
866         (increase_insn_priority): New.
867         * modulo-sched.c: (issue_rate): Remove static declaration.
868         (sms_sched_info): Change type to haifa_sched_info.
869         (sms_sched_deps_info, sms_common_sched_info): New variables.
870         (setup_sched_infos): New.
871         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
872         Do not call regstat_free_calls_crossed.
873         (sms_print_insn): Use const_rtx.
874         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
875         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
876         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
877         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
878         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
879         current_sched_info to use it.
880         (enum reg_pending_barrier_mode): Move to sched-int.h.
881         (h_d_i_d): New variable. Initialize to NULL.
882         ({true, output, anti, spec, forward}_dependency_cache): Initialize
883         to NULL.
884         (estimate_dep_weak): Remove static declaration.
885         (sched_has_condition_p): New function.  Adjust users of
886         sched_get_condition to use it instead.
887         (conditions_mutex_p): Add arguments indicating which conditions are
888         reversed.  Use them.
889         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
890         argument to indicate whether returned condition is reversed.  Do not
891         generate new rtx when condition should be reversed; indicate it by
892         setting new argument instead.
893         (add_dependence_list_and_free): Add deps parameter.
894         Update all users.  Do not free dependence list when
895         deps context is readonly.
896         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
897         contexts.
898         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
899         (remove_from_deps): New. Use the above functions.
900         (cur_insn, can_start_lhs_rhs_p): New static variables.
901         (add_or_update_back_dep_1): Initialize present_dep_type.
902         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
903         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
904         haifa_note_dep): New functions implementing dependence hooks for
905         the Haifa scheduler.
906         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
907         note_dep): New functions.
908         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
909         functions.
910         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
911         (free_deps): Initialize deps->reg_last.
912         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
913         sched_analyze_insn): Update to use dependency hooks infrastructure
914         and readonly contexts.
915         (deps_analyze_insn): New function.  Move part of logic from ...
916         (sched_analyze): ... here.  Also move some logic to ...
917         (deps_start_bb): ... here.  New function.
918         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
919         sel_sched_p.
920         (sched_deps_init): New function.  Move code from ...
921         (init_dependency_caches): ... here.  Remove.
922         (init_deps_data_vector): New.
923         (sched_deps_finish): New function.  Move code from ...
924         (free_dependency_caches): ... here.  Remove.
925         (init_deps_global, finish_deps_global): Adjust for use with
926         selective scheduling.
927         (get_dep_weak): Move logic to ...
928         (get_dep_weak_1): New function.
929         (ds_merge): Move logic to ...
930         (ds_merge_1): New static function.
931         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
932         (ds_get_max_dep_weak): New function.
933         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
934         (n_insns): Rename to rgn_n_insns.
935         (debug_ebb_dependencies): New function.
936         (init_ready_list): Use it.
937         (begin_schedule_ready): Use sched_init_only_bb.
938         (ebb_print_insn): Indicate when an insn starts a new cycle.
939         (contributes_to_priority, compute_jump_reg_dependencies,
940         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
941         (add_block1): Remove to ebb_add_block.
942         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
943         (schedule_ebb): Initialize them.  Use remove_notes instead of
944         rm_other_notes.  Use haifa_local_init/finish.
945         (schedule_ebbs): Use haifa_sched_init/finish.
946         * sched-int.h: Include vecprim.h, remove rtl.h.
947         (struct ready_list): Delete declaration.
948         (sched_verbose_param, enum sched_pass_id_t,
949         bb_vec_t, insn_vec_t, rtx_vec_t): New.
950         (struct sched_scan_info_def): New structure.
951         (sched_scan_info, sched_scan, sched_init_bbs,
952         sched_init_luids, sched_finish_luids, sched_extend_target,
953         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
954         (struct common_sched_info_def): New.
955         (common_sched_info, haifa_common_sched_info,
956         sched_emulate_haifa_p): Declare.
957         (sel_sched_p): New.
958         (sched_luids): Declare.
959         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
960         (sched_max_luid, insn_luid): Declare.
961         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
962         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
963         print_insn, print_pattern, print_value, haifa_classify_insn,
964         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
965         setup_sched_dump, sched_init, sched_finish,
966         sel_insn_is_speculation_check): Export.
967         (struct ready_list): Move from haifa-sched.c.
968         (ready_try, ready, max_issue): Export.
969         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
970         sched_init_only_bb, sched_split_block, sched_split_block_1,
971         sched_create_empty_bb, sched_create_empty_bb_1,
972         sched_create_recovery_block, sched_create_recovery_edges): Export.
973         (enum reg_pending_barrier_mode): Export.
974         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
975         (deps_t): New.
976         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
977         print_insn field.  Move add_block and fix_recovery_cfg to
978         common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
979         (struct sched_deps_info_def): ... this new structure.
980         (sched_deps_info): Declare.
981         (struct spec_info_def): Remove weakness_cutoff, add
982         data_weakness_cutoff and control_weakness_cutoff.
983         (spec_info): Declare.
984         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
985         dep_count field.
986         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
987         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
988         (current_sched_info): Change type to struct haifa_sched_info.
989         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
990         (h_d_i_d): New variable.
991         (HDID): New accessor macro.
992         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
993         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
994         and HDID.
995         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
996         (enum SCHED_FLAGS): Update for selective scheduler.
997         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
998         (init_dependency_caches, free_dependency_caches): Delete declarations.
999         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
1000         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
1001         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
1002         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
1003         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
1004         ds_to_dt): Export.
1005         (rm_other_notes): Delete declaration.
1006         (schedule_block): Remove one argument.
1007         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
1008         ready_element, ready_lastpos, sched_extend_ready_list,
1009         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
1010         concat_note_lists): Export.
1011         (struct region): Move from sched-rgn.h.
1012         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1013         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1014         BLOCK_TO_BB, CONTAINING_RGN): Export.
1015         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
1016         (current_nr_blocks, current_blocks, target_bb): Likewise.
1017         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
1018         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
1019         sched_rgn_local_init, extend_regions,
1020         rgn_make_new_region_out_of_new_block, compute_priorities,
1021         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
1022         extend_rgns, deps_join rgn_setup_common_sched_info,
1023         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
1024         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
1025         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
1026         increase_insn_priority): Likewise.
1027         * sched-rgn.c: Include sel-sched.h.
1028         (ref_counts): New static variable.  Use it ...
1029         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
1030         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
1031         (sched_is_disabled_for_current_region_p): Delete static declaration.
1032         (struct region): Move to sched-int.h.
1033         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
1034         ebb_head): Define and initialize.
1035         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
1036         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
1037         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
1038         sched-int.h.
1039         (find_single_block_region): Add new argument to indicate that EBB
1040         regions should be constructed.
1041         (debug_live): Delete declaration.
1042         (current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
1043         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
1044         declaration.
1045         (init_regions): Delete declaration.
1046         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
1047         rgn_estimate_number_of_insns): New.
1048         (too_large): Use estimate_number_of_insns.
1049         (haifa_find_rgns): New. Move the code from ...
1050         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
1051         (free_trg_info): New.
1052         (compute_trg_info): Allocate candidate tables here instead of ...
1053         (init_ready_list): ... here.
1054         (rgn_print_insn): Use const_rtx.
1055         (contributes_to_priority, extend_regions): Delete static declaration.
1056         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
1057         (add_block1): Rename to rgn_add_block.
1058         (debug_rgn_dependencies): Delete static qualifier.
1059         (new_ready): Use sched_deps_info.  Simplify.
1060         (rgn_common_sched_info, rgn_const_sched_deps_info,
1061         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
1062         (region_sched_info): Rename to rgn_const_sched_info.
1063         (deps_join): New, extracted from ...
1064         (propagate_deps): ... here.
1065         (compute_block_dependences, debug_dependencies): Update for selective
1066         scheduling.
1067         (free_rgn_deps, compute_priorities): New functions.
1068         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
1069         sched_rgn_compute_dependencies): New functions.
1070         (schedule_region): Use them.
1071         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
1072         rgn_setup_common_sched_info, rgn_setup_sched_infos):
1073         New functions.
1074         (schedule_insns): Call new functions that were split out.
1075         (rgn_make_new_region_out_of_new_block): New.
1076         (get_rgn_sched_max_insns_priority): New.
1077         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
1078         scheduling when appropriate.
1079         * sched-vis.c: Include insn-attr.h.
1080         (print_value, print_pattern): Make global.
1081         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
1082         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
1083         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1084         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1085         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
1086         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
1087         hooks.  Initialize them to 0.
1088         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1089         * target.h (struct gcc_target): Add them.  Rename gen_check field to
1090         gen_spec_check.
1091         * flags.h (sel_sched_switch_set): Declare.
1092         * opts.c (sel_sched_switch_set): New variable.
1093         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
1094         pipelining is disabled from command line.
1095         (common_handle_option): Record whether selective scheduling is
1096         requested from command line.
1097         * doc/invoke.texi: Document new flags and parameters.
1098         * doc/tm.texi: Document new target hooks.
1099         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
1100         (dfa_state_size): Do not declare locally.
1101         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
1102         * config/rs6000/rs6000.c (rs6000_init_sched_context,
1103         rs6000_alloc_sched_context, rs6000_set_sched_context,
1104         rs6000_free_sched_context): New functions.
1105         (struct _rs6000_sched_context): New.
1106         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
1107         scheduling.
1108         (rs6000_sched_finish): Do not run for selective scheduling.
1109
1110 2008-08-31  Jan Hubicka  <jh@suse.cz>
1111
1112         * frv.c (frv_rtx_costs): Update forward declaration.
1113         * spu.c (spu_rtx_costs): Likewise.
1114         * pdp11.c: Include df.h
1115         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
1116         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
1117         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
1118         * iq2000.c (iq2000_address_cost): Add speed argument.
1119         (iq2000_rtx_costs): Likewise.
1120         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
1121         update call of mn10300_address_cost.
1122         * mcore.c: Include df.h
1123         (mcore_rtx_costs): Update prototype.
1124         * score3.c: Include df.h
1125         (score3_rtx_costs): Remove speed argument.
1126         * score7.c: Include df.h
1127         (score7_address_cost): Remove speed argument.
1128         * score-protos.h (score_address_cost): Update prototype.
1129         * score.c: Include df.h
1130         (score_rtx_costs): Update call of costs functions.
1131         * v850.c (v850_rtx_costs): Add bool argument.
1132
1133 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
1134
1135         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
1136
1137 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1138
1139         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
1140         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
1141
1142 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
1143
1144         * mkmap-flat.awk: Add option pe_dll.
1145         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
1146         * config/i386/t-cygwin (SHLIB_LC): Add.
1147         * config/i386/t-mingw32 (SHLIB_LC): Add.
1148         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
1149         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
1150         (LINK_SPEC): Support libgcc_s.
1151         (LIBGCC_SPEC): Support libgcc_s.
1152         (LIBGCC_SONAME): New.
1153
1154 2008-08-31  Jan Hubicka  <jh@suse.cz>
1155
1156         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
1157         mistakely had old version of patch.
1158
1159         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
1160         (ipcp_estimate_growth): New.
1161         (ipcp_insert_stage): Use ipcp_estimate_growth.
1162         * profile.c (branch_prob): When reading failed, do not consider
1163         profile as read.
1164
1165 2008-08-31  Jan Hubicka  <jh@suse.cz>
1166
1167         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
1168         loop is optimized for speed.
1169
1170 2008-08-31  Richard Guenther  <rguenther@suse.de>
1171
1172         PR middle-end/37289
1173         * fold-const.c (fold_binary): Retain conversions in folding
1174         ~A + 1 to -A.
1175
1176 2008-08-31  Jan Hubicka  <jh@suse.cz>
1177
1178         * postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
1179         * predict.c (maybe_hot_frequency_p): Make inline.
1180         (maybe_hot_count_p): Break out from ...
1181         (maybe_hot_bb_p): ... this one.
1182         (maybe_hot_edge_p): Simplify.
1183         * basic-block.h (probably_cold_bb_p): Remove.
1184
1185 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1186
1187         PR target/37168
1188         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
1189         prototype.
1190         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
1191         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
1192         Also split V4SFmode.
1193         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
1194         vector float modes.
1195
1196 2008-08-31  Jan Hubicka  <jh@suse.cz>
1197
1198         * predict.c (PROB_VERY_LIKELY): Make small enough so things
1199         become cold.
1200         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
1201
1202 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
1203
1204         PR debug/37287
1205         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
1206         add source coords.
1207
1208         * dwarf2out.c (native_encode_initializer): Subtract min_index for
1209         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
1210
1211 2008-08-31  Jan Hubicka  <jh@suse.cz>
1212
1213         * sparc.h (BRANCH_COST): Fix macro definition.
1214         * avr.c (avr_operand_rtx_cost): Add speed argument.
1215         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
1216
1217 2008-08-31  Richard Guenther  <rguenther@suse.de>
1218
1219         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
1220         types instead of operands.  Re-instantiate verifying of
1221         binary expression operands.
1222
1223 2008-08-30  Jan Hubicka  <jh@suse.cz>
1224
1225         * fwprop.c (should_replace_address): Add speed attribute.
1226         (PR_OPTIMIZE_FOR_SPEED): New flag.
1227         (propagate_rtx_1): Use it.
1228         (propagate_rtx): Set it.
1229         (try_fwprop_subst): Update call of rtx_costs.
1230         (forward_propagate_and_simplify): LIkewise.
1231         * hooks.c (hook_int_rtx_bool_0): New
1232         (hook_bool_rtx_int_int_intp_false): Replace by ...
1233         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1234         * hooks.h (hook_int_rtx_bool_0): New
1235         (hook_bool_rtx_int_int_intp_false): Replace by ...
1236         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
1237         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
1238         (prepare_cmp_insn): UPdate call of rtx_cost.
1239         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
1240         (reload_cse_simplify_operands): Update call of rtx_cost.
1241         (reload_cse_move2add): call of rtx_cost.
1242         * target.h (struct gcc_target): Update rtx_costs and address_costs.
1243         * rtlanal.c (rtx_cost): Add speed argument.
1244         (address_cost): Add speed argument
1245         (default_address_cost): Likewise.
1246         (insn_rtx_cost): Likewise.
1247         * cfgloopanal.c (seq_cost): Add speed argument.
1248         (target_reg_cost, target_spill_cost): Turn to array.
1249         (init_set_costs): Update for speed.
1250         (estimate_reg_pressure_cost): Add speed argument.
1251         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
1252         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
1253         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
1254         (seq_cost): Add speed argument.
1255         (computation_cost): Add speed arugment.
1256         (add_cost, multiply_by_const, get_address_cost): add speed argument.
1257         (force_expr_to_var_cost): Update for profile info.
1258         (force_var_cost): Likewise.
1259         (split_address_cost): Likewise.
1260         (ptr_difference_cost): Likewise.
1261         (difference_cost): Likewise.
1262         (get_computation_cost_at): Likewise.
1263         (determine_iv_cost): Likewise.
1264         (ivopts_global_cost_for_size): Likewise.
1265         (rewrite_use_address): Likewise.
1266         (tree_ssa_iv_optimize_loop): Initialize speed field.
1267         * cse.c (optimize_this_for_speed_p): New static var.
1268         (notreg_cost): Update call of rtx_cost.
1269         (cse_extended_basic_block): set optimize_this_for_speed_p.
1270         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
1271         (noce_try_cmove_arith): Likewise.
1272         (noce_try_sign_mask): LIkewise.
1273         * expr.c (compress_float_constant): Update rtx_cost calls.
1274         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
1275         (addr_to_parts): Likewise.
1276         (create_mem_ref): Likewise.
1277         * dse.c (find_shift_sequence): Add speed argument.
1278         (replace_read): Update call.
1279         * calls.c (precompute_register_parameters): Update call of rtx_cost.
1280         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
1281         * neg_cost, shift_cost, shiftadd_cost,
1282         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
1283         mul_highpart_cost): Increase dimension.
1284         (init_expmed): Initialize for both size and speed.
1285         (expand_shift): Use profile.
1286         (synth_mult): Use profile.
1287         (choose_mult_variant): Use profile.
1288         (expand_mult): Use profile.
1289         (expand_mult_highpart_optab): Use profile.
1290         (expand_mult_highpart): Use profile.
1291         (expand_smod_pow2): Use profile.
1292         (expand_divmod): Use profile.
1293         * simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
1294         * loop-invariant.c (create_new_invariant): Use profile.
1295         (gain_for_invariant): Add speed parameter.
1296         (best_gain_for_invariant): Likewise.
1297         (find_invariants_to_move): Likewise.
1298         (move_single_loop_invariants): Set it.
1299         * target-def.h (TARGET_RTX_COSTS): Use hook.
1300         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
1301         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
1302         * output.h (default_address_cost): Update prototype.
1303         * combine.c (optimize_this_for_speed_p): New static var.
1304         (combine_validate_cost): Update call of rtx_cost.
1305         (combine_instructions): Set optimize_this_for_speed_p.
1306         (expand_compound_operation): Update call of rtx_cost.
1307         (make_extraction):Update call of rtx_cost.
1308         (force_to_mode):Update call of rtx_cost.
1309         (distribute_and_simplify_rtx):Update call of rtx_cost.
1310         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
1311         (estimate_reg_pressure_cost): Update prototype.
1312         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
1313         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
1314         Remove.
1315         * config/alpha/alpha.c (alpha_rtx_costs): Update.
1316         (alpha_rtx_costs): Update.
1317         * config/frv/frv.c (frv_rtx_costs): Update.
1318         * config/s390/s390.c (s390_rtx_costs): Update.
1319         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
1320         (m32c_rtx_costs): Update.
1321         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
1322         (spu_rtx_costs): Update.
1323         * config/sparc/sparc.c (sparc_rtx_costs): Update.
1324         * config/m32r/m32r.c (m32r_rtx_costs): Update.
1325         * config/i386/i386.c (:ix86_address_cost): Update.
1326         (ix86_rtx_costs): Update.
1327         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
1328         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
1329         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
1330         * config/crx/crx.c (crx_address_cost): Update.
1331         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
1332         * config/stormy16/stormy16.c
1333         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
1334         * config/m68hc11/m68hc11.c
1335         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
1336         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
1337         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
1338         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
1339         * config/ia64/ia64.c (ia64_rtx_costs): Update.
1340         * config/m68k/m68k.c (m68k_rtx_costs): Update.
1341         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
1342         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
1343         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
1344         (mcore_rtx_costs): update.
1345         * config/score/score3.c (score3_rtx_costs): Update.
1346         * config/score/score7.c (score7_rtx_costs): Update.
1347         * config/score/score3.h (score3_rtx_costs):Update.
1348         * config/score/score7.h (score7_rtx_costs): Update.
1349         * config/score/score.c (score_rtx_costs): Update.
1350         * config/arm/arm.c (arm_address_cost): Update.
1351         (arm_rtx_costs_1): Update.
1352         (arm_rtx_costs_1): Update.
1353         (arm_size_rtx_costs): Update.
1354         (arm_size_rtx_costs): Update.
1355         (arm_size_rtx_costs): Update.
1356         (arm_xscale_rtx_costs): Update.
1357         (arm_thumb_address_cost): Update.
1358         * config/pa/pa.c (hppa_address_cost): Update.
1359         * config/mips/mips.c (mips_rtx_costs): Update.
1360         * config/vax/vax.c (vax_address_cost): Update.
1361         * config/h8300/h8300.c (h8300_shift_costs): Update.
1362         (h8300_rtx_costs): Update.
1363         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
1364         (v850_rtx_costs): Update.
1365         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
1366         * config/bfin/bfin.c
1367         (bfin_address_cost): Update.
1368         (bfin_rtx_costs): Update.
1369         * stmt.c (lshift_cheap_p): Update.
1370
1371 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1372
1373         PR middle-end/36444
1374         * expmed.c (extract_bit_field_1): Check the mode size to make
1375         sure the vector modes have the same size.
1376
1377 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
1378
1379         * dojump.c (top level): Include basic-block.h to declare
1380         optimize_insn_for_speed_p
1381
1382         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
1383
1384         * opts.h (CL_SAVE): New option class for marking options that are
1385         target specific options usable in the target attribute.
1386         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
1387
1388         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
1389         can easily find the target specific options that are safe to use
1390         in the attribute or pragma.
1391
1392         * attribs.c (decl_attributes): Change #pragma GCC option to
1393         #pragma GCC target, and attribute((option(...))) to
1394         attribute((target(...))).
1395
1396         * doc/extend.texi (target attribute): Change from option
1397         attribute.  Delete push/pop/reset.
1398         (#pragma GCC target): Change from #pragma GCC option.  Delete
1399         push/pop/reset.
1400         (#pragma GCC push_options): Document new pragma.
1401         (#pragma GCC pop_options): Document new pragma.
1402         (#pragma GCC reset_options): Document new pragma.
1403
1404         * targhooks.c (default_target_option_valid_attribute_p): Add
1405         warning about port not supporting target attributes.
1406         (default_target_option_pragma_parse): New function, warn about
1407         #pragma GCC target not being supported.
1408
1409         * targhooks.h (default_target_option_pragma_parse): Add
1410         declaration.
1411
1412         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
1413         TI_CURRENT_OPTION_PRAGMA.
1414         (current_target_pragma): Rename from current_option_pragma.
1415
1416         * target.h: (struct target_option): Delete booleans for changing
1417         the optimization level on hot/cold functions.  Change signature of
1418         pragma_parse hook to take a second tree.
1419
1420         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
1421
1422         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
1423         that the declaration is done at global scope.
1424
1425         * langhooks.c (add_builtin_function_common): Move most of the code
1426         from add_builtin_function here, calling the hook passed in.
1427         (add_builtin_function): Call add_builtin_function_common with
1428         standard builtin hook.
1429         (add_builtin_function_ext_scope): New function to add builtins to
1430         global scope.
1431
1432         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
1433         hook.
1434         (add_builtin_function_ext_scope): Add declaration.
1435
1436         * c-pragma.c (handle_pragma_target): Rename from
1437         handle_pragma_option, #pragma GCC option is now #pragma GCC
1438         target.  Move warning about port not supporting target options to
1439         default pragma parse hook.  Remove push/pop/reset from this
1440         pragma.
1441         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
1442         (option_stack): Delete static variable.
1443         (optimize_stack): Ditto.
1444         (optons_stack): New stack of saved target and optimization
1445         options.
1446         (handle_pragma_push_options): New function to handle pushing both
1447         target and optimization options.
1448         (handle_pragma_pop_options): New function to handle popping both
1449         target and optimization options.
1450         (handle_pragma_reset_options): New function to handle resetting
1451         both target and optimization options to their initial state.
1452         (init_pragma): Rename handle_pragma_option to
1453         handle_pragma_target.  Add support for push_options, pop_options,
1454         and reset_options pragmas.
1455
1456         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
1457         default_target_option_pragma_parse.
1458         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
1459         default_target_option_valid_attribute_p.
1460         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1461         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1462         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
1463         optimization level on hot/cold functions.
1464
1465         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
1466         if the caller and callee have different optimization levels.
1467
1468         * c-common.c (handle_target_attribute): Rename from
1469         handle_option_attribute, attribute((option(...))) is now
1470         attribute((target(...))).  Move warning if the port does not
1471         support target attributes to the default hook.
1472         (handle_hot_attribute): Delete code to change the optimization
1473         level of hot functions.
1474         (handle_cold_attribute): Ditto.
1475
1476         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
1477         argument that is the binary tree options to use if there are no
1478         arguments.  Call ix86_valid_target_attribute_tree instead of
1479         ix86_valid_option_attribute_tree.
1480         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
1481         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
1482         ix86_pragma_option_parse.
1483
1484         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
1485         Rename from ix86_valid_option_attribute_tree.
1486
1487         * config/i386/i386.c (ix86_add_new_builtins): New function to add
1488         new builtins when the ISA changes.
1489         (ix86_valid_target_attribute_tree): Rename from
1490         ix86_valid_option_attribute_tree.  Change callers.  If the
1491         function specified optimization options, use those as the starting
1492         point before setting up the target attributes.  If the
1493         optimization options were changed in the course of setting the
1494         target attributes, record the new optimization options.
1495         (ix86_valid_target_attribute_tree_inner_p): Rename from
1496         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
1497         ix86_add_new_builtins if the ISA changed.
1498         (ix86_valid_target_attribute_p): Rename from
1499         ix86_valid_option_attribute_p.  Change callers.
1500         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
1501         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
1502         as delayed builtin functions.
1503         (struct builtin_isa): New structure to record builtin functions
1504         that should be delayed until the ISA for that function is used.
1505         (ix86_builtins_isa): Change from int to struct to track builtin
1506         functions we want to declare at some point.
1507         (def_builtin): If the front end can delay defining the builtin
1508         functions, don't create builtins for ISAs not part of the default
1509         options.
1510         (def_builtin_const): Ditto.
1511         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
1512         __builtin_ia32_pcmov_v2di to be different builtin functions.
1513         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
1514         a structure instead of an int.
1515         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
1516         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
1517         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1518         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1519
1520         * config/ia64/ia64.h
1521         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
1522         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
1523
1524         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
1525         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
1526         (LANG_HOOKS_INITIALIZER): Add
1527         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
1528
1529 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
1530
1531         PR target/37270
1532         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
1533         the reload address with the index register for SFmode
1534         access with a displacement.
1535
1536 2008-08-30  Jan Hubicka  <jh@suse.cz>
1537
1538         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
1539         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
1540         * dojump.c (do_jump): Likewise.
1541         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
1542         (note-if_info): Add BRANCH_COST.
1543         (noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
1544         noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
1545         noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
1546         branch cost.
1547         * expr.h (BRANCH_COST): Update default.
1548         * predict.c (predictable_edge_p): New function.
1549         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
1550         Update BRANCH_COST call.
1551         * basic-block.h (predictable_edge_p): Declare.
1552         * config/alpha/alpha.h (BRANCH_COST): Update.
1553         * config/frv/frv.h (BRANCH_COST): Update.
1554         * config/s390/s390.h (BRANCH_COST): Update.
1555         * config/spu/spu.h (BRANCH_COST): Update.
1556         * config/sparc/sparc.h (BRANCH_COST): Update.
1557         * config/m32r/m32r.h (BRANCH_COST): Update.
1558         * config/i386/i386.h (BRANCH_COST): Update.
1559         * config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
1560         * config/sh/sh.h (BRANCH_COST): Update.
1561         * config/pdp11/pdp11.h (BRANCH_COST): Update.
1562         * config/avr/avr.h (BRANCH_COST): Update.
1563         * config/crx/crx.h (BRANCH_COST): Update.
1564         * config/xtensa/xtensa.h (BRANCH_COST): Update.
1565         * config/stormy16/stormy16.h (BRANCH_COST): Update.
1566         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
1567         * config/iq2000/iq2000.h (BRANCH_COST): Update.
1568         * config/ia64/ia64.h (BRANCH_COST): Update.
1569         * config/rs6000/rs6000.h (BRANCH_COST): Update.
1570         * config/arc/arc.h (BRANCH_COST): Update.
1571         * config/score/score.h (BRANCH_COST): Update.
1572         * config/arm/arm.h (BRANCH_COST): Update.
1573         * config/pa/pa.h (BRANCH_COST): Update.
1574         * config/mips/mips.h (BRANCH_COST): Update.
1575         * config/vax/vax.h (BRANCH_COST): Update.
1576         * config/h8300/h8300.h (BRANCH_COST): Update.
1577         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
1578         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
1579         * doc/tm.texi (BRANCH_COST): Update.
1580
1581 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
1582
1583         PR target/37283
1584         * config/arm/arm.c (arm_optimization_options): Set
1585         flag_section_anchors to 2 instead of 1 to distinguish it from
1586         -fsection-anchors given explicitely on the command line.
1587
1588 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
1589
1590         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
1591         final insn of a split.
1592
1593 2008-08-30  Jan Hubicka  <jh@suse.cz>
1594
1595         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
1596         optimized for speed.
1597         * final.c (compute_alignments): Use optimize_bb_for_size_p.
1598         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
1599         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
1600         flag_gcse_after_reload_set): New static vars.
1601         (common_handle_option): Enable those flags for profile-use.
1602         (decode_options): Remove optimize_size flags that are handled
1603         on higher granuality.
1604         * tree-vectorizer.c (vectorize_loops): Use
1605         optimize_loop_nest_for_speed_p.
1606         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
1607         * tree-predcom.c (tree_predictive_commoning): Use
1608         optimize_loop_for_speed_p.
1609         * varasm.c (assemble_start_function): Use optimize_function_for_speed_p.
1610         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
1611         * predict.c (optimize_loop_for_speed_p): Fix walk.
1612
1613 2008-08-30  Jan Hubicka  <jh@suse.cz>
1614
1615         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
1616         functions.
1617         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
1618         profile presence locally.
1619
1620 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
1621
1622         PR bootstrap/37086
1623         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
1624         versions before 4.0.
1625
1626 2008-08-29  Jan Hubicka  <jh@suse.cz>
1627
1628         * tree-inline.c (insert_init_stmt): Insert sequence even when
1629         not in SSA form.
1630
1631 2008-08-29  Jeff Law  <law@redhat.com>
1632
1633         * mn10300.c (mn10300_secondary_reload_class): We need secondary
1634         reloads for AM33-2 if IN is a pseudo with an equivalent memory
1635         location and class is an FP register.
1636
1637 2008-08-29  Jan Hubicka  <jh@suse.cz>
1638
1639         * see.c (see_merge_one_def_extension): Silence used uninitialized
1640         warning.
1641         * matrix-reorg.c (check_allocation_function): Likewise.
1642         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
1643
1644 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
1645
1646         PR c/37261
1647         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
1648         compute new & and | in type rather than TREE_TYPE (arg0).
1649
1650         * dwarf2out.c (fortran_common): Update comment.
1651         (gen_variable_die): Swap com_die and var_die variables in Fortran
1652         COMMON block handling code.
1653
1654         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
1655
1656         * dwarf2out.c (gen_const_die): New function.
1657         (size_of_die, value_format, output_die): Output larger
1658         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
1659         (native_encode_initializer): New function.
1660         (tree_add_const_value_attribute): Call it.
1661         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
1662
1663         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
1664         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
1665         TREE_THIS_VOLATILE to add_type_attribute.
1666
1667         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
1668         types.
1669         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
1670         types.
1671
1672         * dwarf2out.c (loc_by_reference): New function.
1673         (add_location_or_const_value_attribute): Use it.
1674
1675         PR fortran/23057
1676         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
1677         as DW_TAG_variable children of DW_TAG_common_block rather than
1678         DW_TAG_member children.  Put DW_AT_external to individual
1679         DW_TAG_variable DIEs, not to DW_TAG_common_block.
1680
1681         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
1682         loc_descriptor_from_tree_1.
1683
1684         PR fortran/29635
1685         PR fortran/23057
1686         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
1687         arguments to imported_module_or_decl.
1688         (debug_nothing_tree_tree): Removed.
1689         (debug_nothing_tree_tree_tree_bool): New prototype.
1690         * debug.c (do_nothing_debug_hooks): Adjust.
1691         (debug_nothing_tree_tree): Removed.
1692         (debug_nothing_tree_tree_tree_bool): New function.
1693         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
1694         (gen_variable_die): Put all common vars for the
1695         same COMMON block under one DW_TAG_common_block.
1696         (declare_in_namespace): Return new context_die, for Fortran
1697         return the module DIE instead of adding extra declarations into
1698         the namespace.
1699         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
1700         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
1701         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
1702         DW_AT_declaration.
1703         (dwarf2out_global_decl): Don't skip Fortran global vars.
1704         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
1705         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
1706         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
1707         DW_TAG_imported_declaration as child of previous
1708         DW_TAG_imported_module.
1709         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
1710         * sdbout.c (sdb_debug_hooks): Likewise.
1711         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1712
1713 2008-08-29  Jan Hubicka  <jh@suse.cz>
1714
1715         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
1716
1717         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
1718         * ipa-cp.c (n_cloning_candidates): New static variable.
1719         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
1720         (ipcp_print_all_lattices): Improve debug output.
1721         (ipcp_cloning_candidate_p): New function.
1722         (ipcp_initialize_node_lattices): Use it.
1723         (ipcp_init_stage): Do only analyzis here; prettier debug output.
1724         (ipcp_propagate_stage): Prettier debug output.
1725         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
1726         (ipcp_print_all_structures): Remove.
1727         (ipcp_need_redirect_p): Test !n_cloning_candidates.
1728         (ipcp_insert_stage): Prettier debug output; call
1729         cgraph_remove_unreachable_nodes before propagating.
1730         (pass_ipa_cp): Schedule function removal pass.
1731         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
1732         debug output.
1733         (cgraph_maybe_hot_edge_p): Move to ...
1734         * predict.c (cgraph_maybe_hot_edge_p) ... here.
1735         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
1736         (common_handle_option): Set them; enable ipa-cp when profiling.
1737         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
1738         (ipa_print_all_jump_functions): Likewise.
1739         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
1740         (ipa_print_node_params, ipa_print_all_params): New.
1741         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
1742         ipa_print_all_param_flags): Remove.
1743         (ipa_print_node_params, ipa_print_all_params): New.
1744
1745 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
1746
1747         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
1748         change from 2008-04-03.
1749         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
1750
1751 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1752
1753         PR rtl-opt/37251
1754
1755         * ira-color.c (push_allocnos_to_stack): Truncate
1756         removed_splay_allocno_vec.
1757
1758 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
1759
1760         PR rtl-opt/37243
1761         * ira-color (ira_fast_allocation): Don't assign hard registers to
1762         global allocnos.
1763
1764 2008-08-29  Jan Hubicka  <jh@suse.cz>
1765
1766         PR middle-end/37278
1767         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
1768         for cold internal loops.
1769
1770 2008-08-29  Richard Guenther  <rguenther@suse.de>
1771
1772         * tree-ssa-structalias.c (create_variable_info_for): Do not
1773         create fields for heap vars or vars with a noalias state.
1774         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
1775         from ESCAPED.
1776
1777 2008-08-29  Richard Guenther  <rguenther@suse.de>
1778
1779         * common.opt (ftree-store-ccp): Mark as preserved for
1780         backward compatibility.
1781         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
1782         * tree-pass.h (pass_store_ccp): Remove.
1783         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
1784         (first_vdef): Remove declaration.
1785         (get_value_loaded_by): Likewise.
1786         * tree-ssa-ccp.c (do_store_ccp): Remove.
1787         (get_default_value): Simplify as do_store_ccp is always false
1788         now.  Do not initialize mem_ref.
1789         (set_value_varying): Likewise.
1790         (canonicalize_float_value): Likewise.
1791         (set_lattice_value): Likewise.
1792         (likely_value): Likewise.
1793         (surely_varying_stmt_p): Likewise.
1794         (ccp_initialize): Likewise.
1795         (ccp_lattice_meet): Likewise.
1796         (ccp_visit_phi_node): Likewise.
1797         (ccp_fold): Likewise.
1798         (evaluate_stmt): Likewise.
1799         (visit_assignment): Likewise.
1800         (ccp_visit_stmt): Likewise.
1801         (execute_ssa_ccp): Fold into ...
1802         (do_ssa_ccp): ... this.
1803         (do_ssa_store_ccp): Remove.
1804         (gate_store_ccp): Likewise.
1805         (pass_store_ccp): Likewise.
1806         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
1807         initialize mem_ref.
1808         * tree-ssa-propagate.c (first_vdef): Remove.
1809         (get_value_loaded_by): Likewise.
1810         (replace_vuses_in): Likewise.
1811         (substitute_and_fold): Do not call replace_vuses_in.
1812         * opts.c (decode_options): Do not set flag_tree_store_ccp.
1813
1814 2008-08-29  Richard Guenther  <rguenther@suse.de>
1815
1816         PR middle-end/37236
1817         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
1818         PARAM_NOALIAS tags with is_heapvar.
1819         * tree-ssa-operands.c (access_can_touch_variable): Offset
1820         based tests do not apply for heapvars.  Fix offset test.
1821
1822 2008-08-29  Jan Hubicka  <jh@suse.cz>
1823
1824         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
1825         (-fipa-cp-clone): Enabled by default at -O3.
1826         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
1827         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
1828
1829 2008-08-29  Jan Hubicka  <jh@suse.cz>
1830
1831         * tree.c (build_function_type_skip_args, build_function_decl_skip_args):
1832         New functions.
1833         * tree.h (build_function_type_skip_args, build_function_decl_skip_args):
1834         Declare.
1835         * gimple.c (giple_copy_call_skip_args): New function.
1836         (giple_copy_call_skip_args): Declare.
1837
1838         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
1839         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
1840         (ipcp_node_modifiable_p): ... this one; use tree_versionable_function_p.
1841         (ipcp_create_replace_map): Improve debug output.
1842         (ipcp_need_redirect_p): Return false when not clonning.
1843         (ipcp_update_callgraph): Skip args.
1844         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
1845         skip args.
1846         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
1847         (save_inline_function_body): Update call of tree_function_versioning.
1848         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
1849         * tree-inline.c (copy_arguments_for_versioning): Add skip_args argument.
1850         (tree_function_versioning): Likewise.
1851         * tree-inline.h (tree_function_versioning): Update prototype.
1852
1853 2008-08-29  Jan Hubicka  <jh@suse.cz>
1854
1855         * loop-unswitch.c (unswitch_single_loop): Use optimize_loop_for_speed_p.
1856         * tree-ssa-threadupdate.c (mark_threaded_blocks): Use optimize_function_for_size_p.
1857         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
1858         * postreload-gcse.c (eliminate_partially_redundant_load): Use optimize_bb_for_size_p.
1859         * value-prof.c (gimple_divmod_fixed_value_transform,
1860         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
1861         gimple_stringops_transform): Use optimize_bb_for_size_p.
1862         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
1863         * final.c (compute_alignments): Use optimize_function_for_size_p.
1864         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
1865         (fold_builtin_strcpy, fold_builtin_fputs): Use
1866         optimize_function_for_size_p.
1867         * fold-const.c (tree_swap_operands_p): Use optimize_function_for_size_p.
1868         * recog.c (relax_delay_slots): Likewise.
1869         * tree-ssa-math-opts.c (replace_reciprocal): Use optimize_bb_for_speed_p.
1870         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
1871         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
1872         optimize_function_for_size_p.
1873         (cgraph_decide_inlining_of_small_function): Use
1874         optimize_function_for_size_p.
1875         * global.c (find_reg): Use optimize_function_for_size_p.
1876         * opts.c (decode_options): Do not clear flag_tree_ch, flag_inline_functions,
1877         flag_unswitch_loops, flag_unroll_loops, flag_unroll_all_loops and
1878         flag_prefetch_loop_arrays. Those can work it out from profile.
1879         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
1880         optimize_loop_for_speed_p.
1881         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p): Constify
1882         argument.
1883         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
1884         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
1885         * tree-eh.c (decide_copy_try_finally): Use optimize_function_for_size_p.
1886         * local-alloc.c (block_alloc): Pass BB pointer.
1887         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
1888         * gcse.c (gcse_main): Use optimize_function_for_size_p.
1889         * loop-unroll.c (decide_unrolling_and_peeling): Use optimize_loop_for_size_p.
1890         (decide_peel_completely): Likewise.
1891         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
1892         optimize_loop_for_size_p.
1893         (vect_enhance_data_refs_alignment): Likewise.
1894         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
1895         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map): Update call.
1896         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
1897         (try_crossjump_bb): Use optimize_bb_for_size_p.
1898         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
1899         optimize_loop_for_speed_p.
1900         * bb-reorder.c (find_traces_1_round): Likewise.
1901         (copy_bb): Use optimize_bb_for_speed_p.
1902         (duplicate_computed_gotos): Likewise.
1903         * basic-block.h (optimize_loop_nest_for_size_p,
1904         optimize_loop_nest_for_speed_p): New.
1905         * stmt.c (expand_case): Use optimize_insn_for_size_p.
1906
1907 2008-08-29  Tristan Gingold  <gingold@adacore.com>
1908
1909         * gcov.c (main): Call expandargv.
1910
1911 2008-08-29  Jan Hubicka  <jh@suse.cz>
1912
1913         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
1914         is not cold.
1915         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1916         Constify arguments.
1917         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
1918         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
1919         Constify.
1920         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
1921
1922 2008-08-29  Jan Hubicka  <jh@suse.cz>
1923
1924         * tree-pass.h (pass_strip_predict_hints): Declare.
1925         * predict.c (strip_builtin_expect): Rename to ...
1926         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
1927         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
1928         (tree_estimate_probability): Do not strip builtin_expect.
1929         (pass_strip_predict_hints): New pass.
1930         * tree-inline.c (expand_call_inline): When inlining cold function, predict
1931         it as unlikely.
1932         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
1933
1934 2008-08-29  Richard Guenther  <rguenther@suse.de>
1935
1936         PR tree-optimization/37207
1937         * tree-vrp.c (extract_range_from_binary_expr): Also try
1938         to constant fold if only one of the operands is a constant.
1939
1940 2008-08-29  Nick Clifton  <nickc@redhat.com>
1941
1942         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
1943         the same way as SYMBOL_REFs.
1944
1945 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
1946
1947         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
1948
1949 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1950
1951         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
1952         * config/mips/mips.md (branch_likely): Remove const.  Fix
1953         comment formatting.
1954         (define_delay for type "branch"): Change to only apply for branch
1955         with likely variant.
1956         (define_delay for type "branch" and "branch_likely" no).  New delay
1957         definition.
1958         (equality_op): New code iterator.
1959         (bbv, bbinv): New code attributes.
1960         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
1961         patterns.
1962
1963 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1964             Andrew Pinski  <pinskia@gcc.gnu.org>
1965
1966         PR 18050
1967         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
1968
1969 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
1970
1971         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
1972         rule that a symbolic constant must be defined and >= 0 for the
1973         corresponding facility to be present at compile-time.
1974         * gthr-posix.c: Likewise.
1975
1976 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
1977
1978         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
1979         * config/mips/mips.md (D): New mode attribute.
1980         (mulsi3, muldi3): Merge it into ...
1981         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op
1982         patterns.
1983         (muldi3_mul3): New pattern.
1984         (mulsi3_mult3): Rename to mulsi3_mul3.
1985
1986 2008-08-28  Jan Hubicka  <jh@suse.cz>
1987
1988         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
1989         to fail.
1990         * predict.c (always_optimize_for_size_p): Rename to ...
1991         (optimize_function_for_size): ... this one; make extern.
1992         (optimize_function_for_speed_p): New.
1993         (optimize_bb_for_size_p, optimize_bb_for_size_p,
1994         optimize_edge_for_size_p,optimize_edge_for_size_p,
1995         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
1996         * basic-block.h (optimize_function_for_size_p,
1997         optimize_function_for_speed_p): Declare.
1998         * i386.md (optimize_size checks): Replace them by appropriate
1999         predicate.
2000         (standard_80387_constant_p, ix86_compute_frame_layout,
2001         ix86_expand_epilogue, ix86_decompose_address,
2002         print_operand, emit_i387_cw_initialization,
2003         inline_memory_move_cost, ix86_pad_returns,
2004         ix86_reorg): Replace optimize_size checks.
2005
2006 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
2007
2008         * rtl.h (simplify_subreg_regno): Declare.
2009         * rtlanal.c (simplify_subreg_regno): New function, split out from...
2010         * simplify-rtx.c (simplify_subreg): ...here.
2011         * reload.c (find_reloads): Use simplify_subreg_regno instead of
2012         subreg_offset_representable_p.
2013
2014 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2015
2016         PR c/30949
2017         * c-typeck.c (convert_for_assignment): Give a note describing what
2018         was passed and what was expected.
2019
2020 2008-08-28  Joey Ye  <joey.ye@intel.com>
2021
2022         * doc/extend.texi: Document AVX built-in functions.
2023         * doc/invoke.texi: Document -mavx.
2024
2025 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
2026             Joey Ye  <joey.ye@intel.com>
2027             Xuepeng Guo  <xuepeng.guo@intel.com>
2028
2029         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
2030
2031         * config/i386/cpuid.h (bit_FMA): New.
2032         (bit_XSAVE): Likewise.
2033         (bit_OSXSAVE): Likewise.
2034         (bit_AVX): Likewise.
2035
2036         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
2037         define.  Use ASM_OUTPUT_AVX_PREFIX.
2038
2039         * config/i386/gmmintrin.h: New.
2040
2041         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
2042         (OPTION_MASK_ISA_AVX_SET): New.
2043         (OPTION_MASK_ISA_FMA_SET): Likewise.
2044         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
2045         (OPTION_MASK_ISA_FMA_SET): Likewise.
2046         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
2047         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
2048         (pta_flags): Add PTA_AVX and PTA_FMA.
2049         (override_options): Handle PTA_AVX and PTA_FMA.
2050         (init_cumulative_args): Handle warn_avx.
2051         (classify_argument): Return 0 for COImode and OImode.  Return
2052         1 and X86_64_AVX_CLASS for 256bit vector types.
2053         (examine_argument): Handle X86_64_AVX_CLASS.
2054         (construct_container): Likewise.
2055         (function_arg_advance_32): Pass OImode and 256bit vector types
2056         in AVX register.
2057         (function_arg_advance_64): Take a new argument to indicate if a
2058         parameter is named.  Handle 256bit vector types.  Return
2059         immediately for unnamed 256bit vector mode parameters.
2060         (function_arg_advance): Updated.
2061         (function_arg_32): Add comments for TImode.  Handle OImode
2062         and 256bit vector types.
2063         (function_arg_64): Take a new argument to indicate if a
2064         parameter is named.  Handle 256bit vector types.  Return NULL
2065         for unnamed 256bit vector mode parameters.
2066         (function_arg): Updated.
2067         (setup_incoming_varargs_64): Support
2068         AVX encoding for *sse_prologue_save_insn.
2069         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
2070         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
2071         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
2072         enabled, otherwise return -3.
2073         (standard_sse_constant_opcode): Handle AVX and 256bit vector
2074         modes.
2075         (print_reg): Support AVX registers.  Handle 'x' and 't'.
2076         Handle 'd' to duplicate the operand.
2077         (print_operand): Likewise.  Also support AVX vector compare
2078         instructions.
2079         (output_387_binary_op): Support AVX.
2080         (output_fp_compare): Likewise.
2081         (ix86_expand_vector_move_misalign): Likewise.
2082         (ix86_attr_length_vex_default): New.
2083         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2084         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2085         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2086         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2087         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
2088         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2089         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
2090         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
2091         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
2092         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
2093         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
2094         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
2095         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
2096         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
2097         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2098         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
2099         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
2100         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2101         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
2102         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
2103         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2104         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2105         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2106         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
2107         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
2108         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
2109         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
2110         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2111         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
2112         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
2113         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
2114         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
2115         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
2116         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2117         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2118         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2119         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
2120         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
2121         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
2122         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
2123         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
2124         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
2125         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
2126         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
2127         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
2128         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
2129         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2130         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2131         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2132         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2133         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2134         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2135         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2136         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2137         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2138         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2139         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2140         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2141         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2142         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2143         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2144         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2145         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2146         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
2147         and IX86_BUILTIN_MOVMSKPS256,
2148         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
2149         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
2150         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
2151         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
2152         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
2153         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
2154         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
2155         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
2156         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
2157         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
2158         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
2159         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
2160         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
2161         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
2162         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
2163         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
2164         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
2165         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
2166         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
2167         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
2168         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
2169         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
2170         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
2171         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
2172         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
2173         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
2174         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
2175         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
2176         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
2177         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
2178         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
2179         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
2180         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
2181         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
2182         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
2183         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
2184         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
2185         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
2186         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
2187         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
2188         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
2189         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
2190         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
2191         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
2192         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
2193         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
2194         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
2195         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
2196         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
2197         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
2198         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
2199         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
2200         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
2201         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
2202         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
2203         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
2204         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
2205         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
2206         IX86_BUILTIN_CMPPS,
2207         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
2208         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
2209         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
2210         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
2211         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
2212         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
2213         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
2214         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
2215         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
2216         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2217         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
2218         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
2219         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
2220         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
2221         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
2222         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
2223         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
2224         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
2225         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
2226         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
2227         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
2228         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
2229         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
2230         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
2231         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
2232         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
2233         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
2234         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
2235         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
2236         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
2237         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
2238         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
2239         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
2240         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
2241         IX86_BUILTIN_MOVMSKPS256.
2242         (ix86_init_mmx_sse_builtins): Support AVX builtins.
2243         (ix86_expand_args_builtin): Likewise.
2244         (ix86_expand_special_args_builtin): Likewise.
2245         (ix86_hard_regno_mode_ok): Handle AVX modes.
2246         (ix86_expand_vector_init_duplicate): Likewise.
2247         (ix86_expand_vector_init_one_nonzero): Likewise.
2248         (ix86_expand_vector_init_one_var): Likewise.
2249         (ix86_expand_vector_init_concat): Likewise.
2250         (ix86_expand_vector_init_general): Likewise.
2251         (ix86_expand_vector_set): Likewise.
2252         (ix86_vector_mode_supported_p): Likewise.
2253         (x86_extended_reg_mentioned_p): Check INSN_P before using
2254         PATTERN.
2255
2256         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2257         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
2258
2259         * config/i386/i386.h (TARGET_AVX): New.
2260         (TARGET_FMA): Likewise.
2261         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
2262         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
2263         (VALID_AVX256_REG_MODE): New.
2264         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2265         (AVX_FLOAT_MODE_P): Likewise.
2266         (AVX128_VEC_FLOAT_MODE_P): Likewise.
2267         (AVX256_VEC_FLOAT_MODE_P): Likewise.
2268         (AVX_VEC_FLOAT_MODE_P): Likewise.
2269         (ASM_OUTPUT_AVX_PREFIX): Likewise.
2270         (ASM_OUTPUT_OPCODE): Likewise.
2271         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
2272         support.
2273         (SSE_REG_MODE_P): Allow 256bit vector modes.
2274         (ix86_args): Add a warn_avx field.
2275
2276         * config/i386/i386.md (UNSPEC_PCMP): New.
2277         (UNSPEC_VPERMIL): Likewise.
2278         (UNSPEC_VPERMIL2): Likewise.
2279         (UNSPEC_VPERMIL2F128): Likewise.
2280         (UNSPEC_MASKLOAD): Likewise.
2281         (UNSPEC_MASKSTORE): Likewise.
2282         (UNSPEC_CAST): Likewise.
2283         (UNSPEC_VTESTP): Likewise.
2284         (UNSPECV_VZEROALL): Likewise.
2285         (UNSPECV_VZEROUPPER): Likewise.
2286         (XMM0_REG): Likewise.
2287         (XMM1_REG): Likewise.
2288         (XMM2_REG): Likewise.
2289         (XMM3_REG): Likewise.
2290         (XMM4_REG): Likewise.
2291         (XMM5_REG): Likewise.
2292         (XMM6_REG): Likewise.
2293         (XMM8_REG): Likewise.
2294         (XMM9_REG): Likewise.
2295         (XMM10_REG): Likewise.
2296         (XMM11_REG): Likewise.
2297         (XMM12_REG): Likewise.
2298         (XMM13_REG): Likewise.
2299         (XMM14_REG): Likewise.
2300         (XMM15_REG): Likewise.
2301         (prefix): Likewise.
2302         (prefix_vex_imm8): Likewise.
2303         (prefix_vex_w): Likewise.
2304         (length_vex): Likewise.
2305         (maxmin): Likewise.
2306         (movoi): Likewise.
2307         (*avx_ashlti3): Likewise.
2308         (*avx_lshrti3): Likewise.
2309         (*avx_setcc<mode>): Likewise.
2310         (*fop_<mode>_comm_mixed_avx): Likewise.
2311         (*fop_<mode>_comm_avx): Likewise.
2312         (*fop_<mode>_1_mixed_avx): Likewise.
2313         (*fop_<mode>_1_avx): Likewise.
2314         (*avx_<code><mode>3): Likewise.
2315         (*avx_ieee_smin<mode>3): Likewise.
2316         (*avx_ieee_smax<mode>3): Likewise.
2317         (mode): Add OI, V8SF and V4DF.
2318         (length): Support VEX prefix.
2319         (*cmpfp_i_mixed): Set prefix attribute.
2320         (*cmpfp_i_sse): Likewise.
2321         (*cmpfp_iu_mixed): Likewise.
2322         (*cmpfp_iu_sse): Likewise.
2323         (*movsi_1): Support AVX.
2324         (*movdi_2): Likewise.
2325         (*movdi_1_rex64): Likewise.
2326         (*movti_internal): Likewise.
2327         (*movti_rex64): Likewise.
2328         (*movsf_1): Likewise.
2329         (*movdf_nointeger): Likewise.
2330         (*movdf_integer_rex64): Likewise.
2331         (*movtf_internal): Likewise.
2332         (zero_extendsidi2_32): Likewise.
2333         (zero_extendsidi2_rex64): Likewise.
2334         (*extendsfdf2_mixed): Likewise.
2335         (*extendsfdf2_sse): Likewise.
2336         (*truncdfsf_fast_mixed): Likewise.
2337         (*truncdfsf_fast_sse): Likewise.
2338         (*truncdfsf_mixed): Likewise.
2339         (fix_trunc<mode>di_sse): Likewise.
2340         (fix_trunc<mode>si_sse): Likewise.
2341         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
2342         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
2343         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
2344         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
2345         (*rcpsf2_sse): Likewise.
2346         (*rsqrtsf2_sse): Likewise.
2347         (*sqrt<mode>2_sse): Likewise.
2348         (sse4_1_round<mode>2): Likewise.
2349         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
2350         Support AVX.  Set length attribute properly for AVX.
2351
2352         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
2353         (VECTOR_MODES (FLOAT, 32)): Likewise.
2354         (VECTOR_MODE (INT, DI, 8)): Likewise.
2355         (VECTOR_MODE (INT, HI, 32)): Likewise.
2356         (VECTOR_MODE (INT, QI, 64)): Likewise.
2357         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
2358         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
2359         (VECTOR_MODE (INT, DI, 4)): Removed.
2360         (VECTOR_MODE (INT, SI, 8)): Likewise.
2361         (VECTOR_MODE (INT, HI, 16)): Likewise.
2362         (VECTOR_MODE (INT, QI, 32)): Likewise.
2363         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
2364         (INT_MODE (OI, 32)): Likewise.
2365
2366         * config/i386/i386.opt (mavx): New.
2367         (mfma): Likewise.
2368
2369         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
2370
2371         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
2372         (*mov<mode>_internal_avx): New.
2373         (*movv2sf_internal_rex64_avx): Likewise.
2374         (*movv2sf_internal_avx): Likewise.
2375
2376         * config/i386/predicates.md (const_4_to_5_operand): New.
2377         (const_6_to_7_operand): Likewise.
2378         (const_8_to_11_operand): Likewise.
2379         (const_12_to_15_operand): Likewise.
2380         (avx_comparison_float_operator): Likewise.
2381
2382         * config/i386/sse.md (AVX256MODEI): New.
2383         (AVX256MODE): Likewise.
2384         (AVXMODEQI): Likewise.
2385         (AVXMODE): Likewise.
2386         (AVX256MODEF2P): Likewise.
2387         (AVX256MODE2P): Likewise.
2388         (AVX256MODE4P): Likewise.
2389         (AVX256MODE8P): Likewise.
2390         (AVXMODEF2P): Likewise.
2391         (AVXMODEF4P): Likewise.
2392         (AVXMODEDCVTDQ2PS): Likewise.
2393         (AVXMODEDCVTPS2DQ): Likewise.
2394         (avxvecmode): Likewise.
2395         (avxvecpsmode): Likewise.
2396         (avxhalfvecmode): Likewise.
2397         (avxscalarmode): Likewise.
2398         (avxcvtvecmode): Likewise.
2399         (avxpermvecmode): Likewise.
2400         (avxmodesuffixf2c): Likewise.
2401         (avxmodesuffixp): Likewise.
2402         (avxmodesuffixs): Likewise.
2403         (avxmodesuffix): Likewise.
2404         (vpermilbits): Likewise.
2405         (pinsrbits): Likewise.
2406         (mov<mode>): Likewise.
2407         (*mov<mode>_internal): Likewise.
2408         (push<mode>1): Likewise.
2409         (movmisalign<mode>): Likewise.
2410         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2411         (avx_movdqu<avxmodesuffix>): Likewise.
2412         (avx_lddqu<avxmodesuffix>): Likewise.
2413         (<plusminus_insn><mode>3): Likewise.
2414         (*avx_<plusminus_insn><mode>3): Likewise.
2415         (*avx_vm<plusminus_insn><mode>3): Likewise.
2416         (mul<mode>3): Likewise.
2417         (*avx_mul<mode>3): Likewise.
2418         (*avx_vmmul<mode>3): Likewise.
2419         (divv8sf3): Likewise.
2420         (divv4df3): Likewise.
2421         (avx_div<mode>3): Likewise.
2422         (*avx_div<mode>3): Likewise.
2423         (*avx_vmdiv<mode>3): Likewise.
2424         (avx_rcpv8sf2): Likewise.
2425         (*avx_vmrcpv4sf2): Likewise.
2426         (sqrtv8sf2): Likewise.
2427         (avx_sqrtv8sf2): Likewise.
2428         (*avx_vmsqrt<mode>2): Likewise.
2429         (rsqrtv8sf2): Likewise.
2430         (avx_rsqrtv8sf2): Likewise.
2431         (*avx_vmrsqrtv4sf2): Likewise.
2432         (<code><mode>3): Likewise.
2433         (*avx_<code><mode>3_finite): Likewise.
2434         (*avx_<code><mode>3): Likewise.
2435         (*avx_vm<code><mode>3): Likewise.
2436         (*avx_ieee_smin<mode>3): Likewise.
2437         (*avx_ieee_smax<mode>3): Likewise.
2438         (avx_addsubv8sf3): Likewise.
2439         (avx_addsubv4df3): Likewise.
2440         (*avx_addsubv4sf3): Likewise.
2441         (*avx_addsubv2df3): Likewise.
2442         (avx_h<plusminus_insn>v4df3): Likewise.
2443         (avx_h<plusminus_insn>v8sf3): Likewise.
2444         (*avx_h<plusminus_insn>v4sf3): Likewise.
2445         (*avx_h<plusminus_insn>v2df3): Likewise.
2446         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
2447         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
2448         (*avx_maskcmp<mode>3): Likewise.
2449         (avx_nand<mode>3): Likewise.
2450         (*avx_<code><mode>3): Likewise.
2451         (*avx_nand<mode>3): Likewise.
2452         (*avx_<code><mode>3): Likewise.
2453         (*avx_cvtsi2ss): Likewise.
2454         (*avx_cvtsi2ssq): Likewise.
2455         (*avx_cvtsi2sd): Likewise.
2456         (*avx_cvtsi2sdq): Likewise.
2457         (*avx_cvtsd2ss): Likewise.
2458         (avx_cvtss2sd): Likewise.
2459         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
2460         (avx_cvtps2dq<avxmodesuffix>): Likewise.
2461         (avx_cvttps2dq<avxmodesuffix>): Likewise.
2462         (*avx_cvtsi2sd): Likewise.
2463         (*avx_cvtsi2sdq): Likewise.
2464         (avx_cvtdq2pd256): Likewise.
2465         (avx_cvtpd2dq256): Likewise.
2466         (avx_cvttpd2dq256): Likewise.
2467         (*avx_cvtsd2ss): Likewise.
2468         (*avx_cvtss2sd): Likewise.
2469         (avx_cvtpd2ps256): Likewise.
2470         (avx_cvtps2pd256): Likewise.
2471         (*avx_movhlps): Likewise.
2472         (*avx_movlhps): Likewise.
2473         (avx_unpckhps256): Likewise.
2474         (*avx_unpckhps): Likewise.
2475         (avx_unpcklps256): Likewise.
2476         (*avx_unpcklps): Likewise.
2477         (avx_movshdup256): Likewise.
2478         (avx_movsldup256): Likewise.
2479         (avx_shufps256): Likewise.
2480         (avx_shufps256_1): Likewise.
2481         (*avx_shufps_<mode>): Likewise.
2482         (*avx_loadhps): Likewise.
2483         (*avx_storelps): Likewise.
2484         (*avx_loadlps): Likewise.
2485         (*avx_movss): Likewise.
2486         (*vec_dupv4sf_avx): Likewise.
2487         (*vec_concatv2sf_avx): Likewise.
2488         (*vec_concatv4sf_avx): Likewise.
2489         (*vec_setv4sf_0_avx): Likewise.
2490         (*vec_setv4sf_avx): Likewise.
2491         (*avx_insertps): Likewise.
2492         (avx_vextractf128<mode>): Likewise.
2493         (vec_extract_lo_<mode>): Likewise.
2494         (vec_extract_hi_<mode>): Likewise.
2495         (vec_extract_lo_<mode>): Likewise.
2496         (vec_extract_hi_<mode>): Likewise.
2497         (vec_extract_lo_v16hi): Likewise.
2498         (vec_extract_hi_v16hi): Likewise.
2499         (vec_extract_lo_v32qi): Likewise.
2500         (vec_extract_hi_v32qi): Likewise.
2501         (avx_unpckhpd256): Likewise.
2502         (*avx_unpckhpd): Likewise.
2503         (avx_movddup256): Likewise.
2504         (*avx_movddup): Likewise.
2505         (avx_unpcklpd256): Likewise.
2506         (*avx_unpcklpd): Likewise.
2507         (avx_shufpd256): Likewise.
2508         (avx_shufpd256_1): Likewise.
2509         (*avx_punpckhqdq): Likewise.
2510         (*avx_punpcklqdq): Likewise.
2511         (*avx_shufpd_<mode>): Likewise.
2512         (*avx_storehpd): Likewise.
2513         (*avx_loadhpd): Likewise.
2514         (*avx_loadlpd): Likewise.
2515         (*avx_movsd): Likewise.
2516         (*vec_concatv2df_avx): Likewise.
2517         (*avx_<plusminus_insn><mode>3): Likewise.
2518         (*avx_<plusminus_insn><mode>3): Likewise.
2519         (*avx_mulv8hi3): Likewise.
2520         (*avxv8hi3_highpart): Likewise.
2521         (*avx_umulv8hi3_highpart): Likewise.
2522         (*avx_umulv2siv2di3): Likewise.
2523         (*avx_mulv2siv2di3): Likewise.
2524         (*avx_pmaddwd): Likewise.
2525         (*avx_mulv4si3): Likewise.
2526         (*avx_ashr<mode>3): Likewise.
2527         (*avx_lshr<mode>3): Likewise.
2528         (*avx_ashl<mode>3): Likewise.
2529         (*avx_<code><mode>3): Likewise.
2530         (*avx_eq<mode>3): Likewise.
2531         (*avx_gt<mode>3): Likewise.
2532         (*avx_nand<mode>3): Likewise.
2533         (*avx_nand<mode>3): Likewise.
2534         (*avx_<code><mode>3): Likewise.
2535         (*avx_<code><mode>3): Likewise.
2536         (*avx_packsswb): Likewise.
2537         (*avx_packssdw): Likewise.
2538         (*avx_packuswb): Likewise.
2539         (*avx_punpckhbw): Likewise.
2540         (*avx_punpcklbw): Likewise.
2541         (*avx_punpckhwd): Likewise.
2542         (*avx_punpcklwd): Likewise.
2543         (*avx_punpckhdq): Likewise.
2544         (*avx_punpckldq): Likewise.
2545         (*avx_pinsr<avxmodesuffixs>): Likewise.
2546         (*avx_pinsrq): Likewise.
2547         (*avx_loadld): Likewise.
2548         (*vec_extractv2di_1_rex64_avx): Likewise.
2549         (*vec_extractv2di_1_avx): Likewise.
2550         (*vec_dupv2di_avx): Likewise.
2551         (*vec_concatv2si_avx): Likewise.
2552         (*vec_concatv4si_1_avx): Likewise.
2553         (*vec_concatv2di_avx): Likewise.
2554         (*vec_concatv2di_rex64_avx): Likewise.
2555         (*avx_uavgv16qi3): Likewise.
2556         (*avx_uavgv8hi3): Likewise.
2557         (*avx_psadbw): Likewise.
2558         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
2559         (*avx_phaddwv8hi3): Likewise.
2560         (*avx_phadddv4si3): Likewise.
2561         (*avx_phaddswv8hi3): Likewise.
2562         (*avx_phsubwv8hi3): Likewise.
2563         (*avx_phsubdv4si3): Likewise.
2564         (*avx_phsubswv8hi3): Likewise.
2565         (*avx_pmaddubsw128): Likewise.
2566         (*avx_pmulhrswv8hi3): Likewise.
2567         (*avx_pshufbv16qi3): Likewise.
2568         (*avx_psign<mode>3): Likewise.
2569         (*avx_palignrti): Likewise.
2570         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2571         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2572         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2573         (*avx_mpsadbw): Likewise.
2574         (*avx_packusdw): Likewise.
2575         (*avx_pblendvb): Likewise.
2576         (*avx_pblendw): Likewise.
2577         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2578         (avx_ptest256): Likewise.
2579         (avx_roundp<avxmodesuffixf2c>256): Likewise.
2580         (*avx_rounds<ssemodesuffixf2c>): Likewise.
2581         (*avx_aesenc): Likewise.
2582         (*avx_aesenclast): Likewise.
2583         (*avx_aesdec): Likewise.
2584         (*avx_aesdeclast): Likewise.
2585         (avx_vzeroupper): Likewise.
2586         (avx_vzeroupper_rex64): Likewise.
2587         (avx_vpermil<mode>): Likewise.
2588         (avx_vpermilvar<mode>3): Likewise.
2589         (avx_vpermil2<mode>3): Likewise.
2590         (avx_vperm2f128<mode>3): Likewise.
2591         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2592         (avx_vbroadcastss256): Likewise.
2593         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
2594         (avx_vinsertf128<mode>): Likewise.
2595         (vec_set_lo_<mode>): Likewise.
2596         (vec_set_hi_<mode>): Likewise.
2597         (vec_set_lo_<mode>): Likewise.
2598         (vec_set_hi_<mode>): Likewise.
2599         (vec_set_lo_v16hi): Likewise.
2600         (vec_set_hi_v16hi): Likewise.
2601         (vec_set_lo_v32qi): Likewise.
2602         (vec_set_hi_v32qi): Likewise.
2603         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2604         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
2605         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
2606         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
2607         (vec_init<mode>): Likewise.
2608         (*vec_concat<mode>_avx): Likewise.
2609         (blendbits): Support V8SF and V4DF.
2610         (sse2_movq128): Support AVX.
2611         (<sse>_movnt<mode>): Likewise.
2612         (sse2_movntv2di): Likewise.
2613         (sse_rcpv4sf2): Likewise.
2614         (sse_sqrtv4sf2): Likewise.
2615         (sse_rsqrtv4sf2): Likewise.
2616         (<sse>_comi): Likewise.
2617         (<sse>_ucomi): Likewise.
2618         (sse_cvtss2si): Likewise.
2619         (sse_cvtss2si_2): Likewise.
2620         (sse_cvtss2siq): Likewise.
2621         (sse_cvtss2siq_2): Likewise.
2622         (sse_cvttss2si): Likewise.
2623         (sse_cvttss2siq): Likewise.
2624         (sse2_cvtsd2si): Likewise.
2625         (sse2_cvtsd2si_2): Likewise.
2626         (sse2_cvtsd2siq): Likewise.
2627         (sse2_cvtsd2siq_2): Likewise.
2628         (sse2_cvttsd2si): Likewise.
2629         (sse2_cvttsd2siq): Likewise.
2630         (sse2_cvtdq2pd): Likewise.
2631         (*sse2_cvtpd2dq): Likewise.
2632         (*sse2_cvttpd2dq): Likewise.
2633         (*sse2_cvtpd2ps): Likewise.
2634         (sse2_cvtps2pd): Likewise.
2635         (sse3_movshdup): Likewise.
2636         (sse3_movsldup): Likewise.
2637         (sse_storehps): Likewise.
2638         (*sse4_1_extractps): Likewise.
2639         (sse2_storelpd): Likewise.
2640         (vec_dupv2df_sse3): Likewise.
2641         (*vec_concatv2df_sse3): Likewise.
2642         (*sse4_1_pextrb): Likewise.
2643         (*sse4_1_pextrb_memory): Likewise.
2644         (*sse2_pextrw): Likewise.
2645         (*sse4_1_pextrw_memory): Likewise.
2646         (*sse4_1_pextrd): Likewise.
2647         (*sse4_1_pextrq): Likewise.
2648         (sse2_pshufd_1): Likewise.
2649         (sse2_pshuflw_1): Likewise.
2650         (sse2_pshufhw_1): Likewise.
2651         (*sse2_storeq_rex64): Likewise.
2652         (*vec_dupv4si): Likewise.
2653         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
2654         (sse2_pmovmskb): Likewise.
2655         (*sse2_maskmovdqu): Likewise.
2656         (*sse2_maskmovdqu_rex64): Likewise.
2657         (sse_ldmxcsr): Likewise.
2658         (sse_stmxcsr): Likewise.
2659         (abs<mode>2): Likewise.
2660         (sse4_1_movntdqa): Likewise.
2661         (sse4_1_phminposuw): Likewise.
2662         (sse4_1_extendv8qiv8hi2): Likewise.
2663         (*sse4_1_extendv8qiv8hi2): Likewise.
2664         (sse4_1_extendv4qiv4si2): Likewise.
2665         (*sse4_1_extendv4qiv4si2): Likewise.
2666         (sse4_1_extendv2qiv2di2): Likewise.
2667         (*sse4_1_extendv2qiv2di2): Likewise.
2668         (sse4_1_extendv4hiv4si2): Likewise.
2669         (*sse4_1_extendv4hiv4si2): Likewise.
2670         (sse4_1_extendv2hiv2di2): Likewise.
2671         (*sse4_1_extendv2hiv2di2): Likewise.
2672         (sse4_1_extendv2siv2di2): Likewise.
2673         (*sse4_1_extendv2siv2di2): Likewise.
2674         (sse4_1_zero_extendv8qiv8hi2): Likewise.
2675         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
2676         (sse4_1_zero_extendv4qiv4si2): Likewise.
2677         (*sse4_1_zero_extendv4qiv4si2): Likewise.
2678         (sse4_1_zero_extendv2qiv2di2): Likewise.
2679         (*sse4_1_zero_extendv2qiv2di2): Likewise.
2680         (sse4_1_zero_extendv4hiv4si2): Likewise.
2681         (*sse4_1_zero_extendv4hiv4si2): Likewise.
2682         (sse4_1_zero_extendv2hiv2di2): Likewise.
2683         (*sse4_1_zero_extendv2hiv2di2): Likewise.
2684         (sse4_1_zero_extendv2siv2di2): Likewise.
2685         (*sse4_1_zero_extendv2siv2di2): Likewise.
2686         (sse4_1_ptest): Likewise.
2687         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
2688         (sse4_2_pcmpestri): Likewise.
2689         (sse4_2_pcmpestrm): Likewise.
2690         (sse4_2_pcmpistri): Likewise.
2691         (sse4_2_pcmpistrm): Likewise.
2692         (aesimc): Likewise.
2693         (aeskeygenassist): Likewise.
2694
2695 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
2696
2697         * config/i386/predicates.md (vzeroall_operation): New.
2698
2699         * config/i386/sse.md (avx_vzeroall): New.
2700         (*avx_vzeroall): Likewise.
2701
2702 2008-08-28  Paul Brook  <paul@codesourcery.com>
2703             Mark Shinwell  <shinwell@codesourcery.com>
2704             Richard Earnshaw  <richard.earnshaw@arm.com>
2705
2706         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
2707         (TARGET_MIN_ANCHOR_OFFSET): New.
2708         (arm_override_options): Set correct anchor ranges for Thumb-1
2709         and Thumb-2 if required.
2710         (legitimize_pic_address): Handle case involving a TLS symbol
2711         reference with an addend.
2712         (arm_optimization_options): Enable section anchors at -O1 and
2713         above.
2714         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
2715         * config/arm/arm-protos.h (arm_optimization_options): New.
2716
2717 2008-08-28  Nick Clifton  <nickc@redhat.com>
2718
2719         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
2720         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
2721         attribute.
2722
2723         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
2724         * config/v850/v850.md (return): Remove frame size restriction.
2725
2726         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
2727
2728         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
2729
2730         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
2731
2732         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
2733
2734 2008-08-28  Paul Brook  <paul@codesourcery.com>
2735
2736         * config/arm/vfp11.md: Update license notice.
2737         * config/arm/cortex-r4.md: Ditto.
2738
2739 2008-08-28  Richard Guenther  <rguenther@suse.de>
2740
2741         PR tree-optimization/37207
2742         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
2743         tuplification bug.
2744
2745 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
2746
2747         PR c++/36741
2748         * tree.c (int_fits_type_p): Don't forget unsigned integers
2749           of type sizetype which higher end word equals -1.
2750
2751 2008-08-28  Ira Rosen  <irar@il.ibm.com>
2752
2753         * target.h (struct vectorize): Add new target builtin.
2754         * tree-vectorizer.c (destroy_loop_vec_info): Call
2755         vect_free_slp_instance instead of vect_free_slp_node.
2756         * tree-vectorizer.h (enum slp_load_perm_type): New.
2757         (struct _slp_instance): Add new fields.
2758         (SLP_INSTANCE_LOAD_PERMUTATION): New.
2759         (SLP_INSTANCE_LOADS): New.
2760         (vect_free_slp_tree): Remove.
2761         (vect_free_slp_instance): Declare.
2762         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
2763         (vectorizable_load): Add argument.
2764         (vect_transform_slp_perm_load): New.
2765         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
2766         vectorizable_load.
2767         (vect_get_place_in_interleaving_chain): New function.
2768         (vect_free_slp_tree): Make static.
2769         (vect_free_slp_instance): New function.
2770         (vect_build_slp_tree): Add new arguments. Allow load permutations and
2771         collect the load location in the interleaving chain.
2772         (vect_supported_slp_permutation_p): New function.
2773         (vect_supported_load_permutation_p): Likewise.
2774         (vect_analyze_slp_instance): In case of loads permutation, call
2775         vect_supported_load_permutation_p to check that the permutation is
2776         supported.
2777         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
2778         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
2779         (vect_create_mask_and_perm): New function.
2780         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
2781         (vectorizable_load): Add an argument. Don't keep the created vectors
2782         statements in the node if permutation is required. Call
2783         vect_transform_slp_perm_load to generate the permutation.
2784         (vect_transform_stmt): Add new argument. Call vectorizable_load with
2785         additional argument.
2786         (vect_schedule_slp_instance): In case of loads permutation, allocate
2787         vectorized statements structure for all the related SLP nodes. Call
2788         vect_transform_stmt with addditional argument.
2789         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
2790         * config/spu/spu.c (spu_builtin_vec_perm): New.
2791         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2792         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
2793         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
2794         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
2795
2796 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
2797
2798         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
2799         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
2800         __gthread_cond_signal, __gthread_cond_timedwait,
2801         __gthread_cond_timedwait_recursive): New functions.
2802         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
2803         Likewise.
2804         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
2805         thread interfaces.
2806
2807 2008-08-28  Richard Guenther  <rguenther@suse.de>
2808
2809         PR middle-end/37005
2810         * fold-const.c (maybe_canonicalize_comparison_1): Require
2811         undefined overflow only for canonicalizing A +- CST cmp CST.
2812         Make sure to not generate new constants that are not inside
2813         their TYPE_MIN/MAX_VALUE range.
2814         (maybe_canonicalize_comparison): Remove undefined overflow
2815         checking from here.
2816         (fold_binary): Remove now duplicate folding.
2817
2818 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2819
2820         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
2821         use not updated in the last change.
2822
2823 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2824
2825         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
2826         (IRA_COVER_CLASSES): Add FPUL_REGS.
2827
2828 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2829
2830         PR 37217
2831         * c-common.c (conversion_warning): Check for null operands.
2832
2833 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2834
2835         PR c/31673
2836         * c-decl.c (check_for_loop_decls): Improve error message. Give
2837         hint.
2838
2839 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2840
2841         PR c/37186
2842         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
2843         (convert_for_assignment): Pass corrent OPT_W* parameter to
2844         WARN_FOR_ASSIGNMENT.
2845
2846 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
2847
2848         PR c++/35321
2849         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
2850
2851 2008-08-27  Paul Brook  <paul@codesourcery.com>
2852
2853         * config.gcc: Loosen checks for arm uclinux eabi targets.
2854
2855 2008-08-27  Paul Brook  <paul@codesourcery.com>
2856
2857         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
2858         _clzsi2.
2859         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
2860
2861 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
2862
2863         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
2864         the enumerators of an ENUMERAL_TYPE.
2865         * dbxout.c (dbxout_type): Ditto.
2866
2867 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2868
2869         PR rtl-opt/37219
2870         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
2871         (fwprop_addr): Check that the loop_father is not the outer loop.
2872
2873 2008-08-26  Paul Brook  <paul@codesourcery.com>
2874
2875         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
2876         Remove documentation entry for fmul type.
2877         Use fmuls to annotate single-precision multiplication patterns,
2878         fmuld to annotate double-precision multiplication patterns,
2879         fmacs to annotate single-precision multiply-accumulate patterns
2880         and fmacd to annotate double-precision multiply-accumulate patterns.
2881         * config/arm/vfp11.md: Update reservations accordingly.
2882         * config/arm/arm.md: Note that certain values of the "type"
2883         attribute are documented in vfp.md.
2884         * config/arm/arm1020e.md: Remove out of date duplicate comment.
2885         (v10_cvt): Use new fmul types.
2886
2887 2008-08-26  Paul Brook   <paul@codesourcery.com>
2888
2889         * config/arm/vfp.md: Move pipeline description for VFP11 to...
2890         * config/arm/vfp11.md: ...here.  New.
2891         * config/arm/arm.md: Include vfp11.md.
2892
2893 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
2894
2895         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
2896         parameter to inform call.
2897
2898 2008-08-26  Jeff Law  <law@redhat.com>
2899
2900         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
2901         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
2902         preferred class when copying a constant into a partial word register.
2903
2904 2008-08-26  Ben Elliston  <bje@au.ibm.com>
2905
2906         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
2907         * cp/typeck.c: Likewise.
2908         * cp/tree.c: Likewise.
2909         * gimple-low.c: Likewise.
2910         * jump.c: Likewise.
2911
2912 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
2913
2914         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
2915         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
2916
2917         * doc/passes.texi: Describe IRA.
2918
2919         * doc/tm.texi (IRA_COVER_CLASSES,
2920         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
2921
2922         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
2923         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
2924         -fira-propagate-cost, -fno-ira-share-save-slots,
2925         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
2926
2927         * flags.h (ira_algorithm): New enumeration.
2928         (flag_ira_algorithm, flag_ira_verbose): New external variable
2929         declarations.
2930
2931         * postreload.c (gate_handle_postreload): Don't do post reload
2932         optimizations unless the reload is completed.
2933
2934         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
2935         IRA.
2936
2937         * tree-pass.h (pass_ira): New external variable declaration.
2938
2939         * reload.h: Add 2008 to the Copyright.
2940
2941         * cfgloopanal.c: Include params.h.
2942         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
2943         mode.
2944
2945         * params.h (IRA_MAX_LOOPS_NUM): New macro.
2946
2947         * toplev.c (ira.h): New include.
2948         (flag_ira_algorithm, flag_ira_verbose): New external variables.
2949         (backend_init_target): Call ira_init.
2950         (backend_init): Call ira_init_once.
2951         (finalize): Call finish_ira_once.
2952
2953         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
2954         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
2955         external variables.
2956
2957         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
2958         may_move_out_cost): New external variable declarations.
2959         (move_table): New typedef.
2960
2961         * caller-save.c: Include headers output.h and ira.h.
2962         (no_caller_save_reg_set): New global variable.
2963         (save_slots_num, save_slots): New variables.
2964         (reg_save_code, reg_restore_code, add_stored_regs): Add
2965         prototypes.
2966         (init_caller_save): Set up no_caller_save_reg_set.
2967         (init_save_areas): Reset save_slots_num.
2968         (saved_hard_reg): New structure.
2969         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
2970         (initiate_saved_hard_regs, new_saved_hard_reg,
2971         finish_saved_hard_regs, saved_hard_reg_compare_func): New
2972         functions.
2973         (setup_save_areas): Add code for sharing stack slots.
2974         (all_blocks): New variable.
2975         (save_call_clobbered_regs): Process pseudo-register too.
2976         (mark_set_regs): Process pseudo-register too.
2977         (insert_one_insn): Put the insn after bb note in a empty basic
2978         block.  Add insn check.
2979
2980         * global.c (eliminable_regset): Make it external.
2981         (mark_elimination): Use DF_LR_IN for IRA.
2982         (pseudo_for_reload_consideration_p): New.
2983         (build_insn_chain): Make it external.  Don't ignore spilled
2984         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
2985         (gate_handle_global_alloc): New function.
2986         (pass_global_alloc): Add the gate function.
2987
2988         * opts.c (decode_options): Set up flag_ira.  Print the warning for
2989         -fira.
2990         (common_handle_option): Process -fira-algorithm and -fira-verbose.
2991
2992         * timevar.def (TV_IRA, TV_RELOAD): New passes.
2993
2994         * regmove.c (regmove_optimize): Don't do replacement of output for
2995         IRA.
2996
2997         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
2998         New external variable declarations.
2999
3000         * local-alloc.c (update_equiv_regs): Make it external.  Return
3001         true if jump label rebuilding should be done.  Rescan new_insn for
3002         notes.
3003         (gate_handle_local_alloc): New function.
3004         (pass_local_alloc): Add the gate function.
3005
3006         * alias.c (value_addr_p, stack_addr_p): New functions.
3007         (nonoverlapping_memrefs_p): Use them for IRA.
3008
3009         * common.opt (fira, fira-algorithm, fira-coalesce,
3010         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
3011         fira-verbose): New options.
3012
3013         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
3014         move_cost, may_move_in_cost, may_move_out_cost): Make the
3015         variables external.
3016         (move_table): Remove typedef.
3017         (init_move_cost): Make it external.
3018         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
3019         functions.
3020
3021         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
3022         setup_reg_classes): New function prototypes.
3023         (eliminable_regset): New external variable declaration.
3024         (build_insn_chain, update_equiv_regs): New function prototypes.
3025
3026         * Makefile.in (IRA_INT_H): New definition.
3027         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
3028         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
3029         (reload1.o, toplev.o): Add dependence on ira.h.
3030         (cfgloopanal.o): Add PARAMS_H.
3031         (caller-save.o): Add dependence on output.h and ira.h.
3032         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
3033         ira-emit.o, ira-lives.o): New entries.
3034
3035         * passes.c (pass_ira): New pass.
3036
3037         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
3038
3039         * reload1.c (ira.h): Include the header.
3040         (changed_allocation_pseudos): New bitmap.
3041         (init_reload): Initiate the bitmap.
3042         (compute_use_by_pseudos): Permits spilled registers in FROM.
3043         (temp_pseudo_reg_arr): New variable.
3044         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
3045         IRA.  Call alter_reg with the additional parameter.  Don't clear
3046         spilled_pseudos for IRA.  Restore original insn chain for IRA.
3047         Clear changed_allocation_pseudos at the end of reload.
3048         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
3049         (hard_regno_to_pseudo_regno): New variable.
3050         (count_pseudo): Check spilled pseudos.  Set up
3051         hard_regno_to_pseudo_regno.
3052         (count_spilled_pseudo): Check spilled pseudos. Update
3053         hard_regno_to_pseudo_regno.
3054         (find_reg): Use better_spill_reload_regno_p.  Check
3055         hard_regno_to_pseudo_regno.
3056         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
3057         code for IRA.
3058         (eliminate_regs_1): Use additional parameter for alter_reg.
3059         (finish_spills): Set up pseudo_previous_regs only for spilled
3060         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
3061         more arguments.  Don't clear live_throughout and dead_or_set for
3062         spilled pseudos.  Use additional parameter for alter_reg.  Call
3063         mark_allocation_change.  Set up changed_allocation_pseudos.
3064         Remove sanity check.
3065         (emit_input_reload_insns, delete_output_reload): Use additional
3066         parameter for alter_reg.  Call mark_allocation_change.
3067         (substitute, gen_reload_chain_without_interm_reg_p): New
3068         functions.
3069         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
3070
3071         * testsuite/gcc.dg/20080410-1.c: New file.
3072
3073         * config/s390/s390.h (IRA_COVER_CLASSES,
3074         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
3075
3076         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
3077
3078         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
3079
3080         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
3081
3082         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
3083
3084         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
3085
3086         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
3087
3088         2008-08-24  Jeff Law  <law@redhat.com>
3089         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
3090         when ignoring unavailable registers.
3091
3092         2008-08-24  Jeff Law  <law@redhat.com>
3093         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
3094         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
3095         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
3096         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
3097
3098         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
3099         * ira-build.c (allocno_range_compare_func): Stabilize sort.
3100
3101         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
3102         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
3103         * reload1.c (find_reg): Process registers in register allocation order.
3104
3105         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
3106         * toplev.c (backend_init_target): Move ira_init call from
3107         here...
3108         (lang_dependent_init_target): ...to here.
3109
3110         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
3111         * ira.c (setup_class_subset_and_memory_move_costs): Don't
3112         calculate memory move costs for NO_REGS.
3113
3114         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
3115         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
3116         STACK_REGS is defined.
3117
3118         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
3119         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
3120
3121         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
3122         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
3123
3124         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
3125         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
3126         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
3127         barrier.
3128
3129 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
3130             Dorit Nuzman  <dorit@il.ibm.com>
3131
3132         * gcc/config/spu/spu.md (vec_extract_evenv4si,
3133         vec_extract_evenv4sf, vec_extract_evenv8hi,
3134         vec_extract_evenv16qi, vec_extract_oddv4si,
3135         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
3136         vec_interleave_highv4sf, vec_interleave_lowv4sf,
3137         vec_interleave_highv4si, vec_interleave_lowv4si,
3138         vec_interleave_highv8hi, vec_interleave_lowv8hi,
3139         vec_interleave_highv16qi, vec_interleave_lowv16qi,
3140         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
3141
3142 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
3143
3144         PR target/36756
3145         * config/rs6000/rs6000.c (optimization_options): Don't default to
3146         section anchors without toplevel reorder.
3147
3148 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3149
3150         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
3151         (mfc_end_critical_section): Likewise.
3152
3153 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3154
3155         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
3156         all type qualifiers from element type to vector type.
3157
3158 2008-08-25  David Daney  <ddaney@avtrex.com>
3159
3160         * config/mips/mips.md (immediate_insn): Move up in file, fix
3161         comment typo, reformat.
3162         (fetchop_bit, atomic_hiqi_op memory_barrier,
3163         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
3164         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
3165         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
3166         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
3167         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
3168         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
3169         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
3170         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
3171         sync_old_nand<mode>, sync_new_nand<mode>,
3172         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
3173         test_and_set_12): Moved to sync.md.
3174         (sync.md): Include.
3175         * config/mips/sync.md: New file.
3176
3177 2008-08-25  Richard Henderson  <rth@redhat.com>
3178
3179         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
3180         (regsave): Likewise.
3181         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
3182         (output_cfi_directive): Likewise.
3183         (div_data_align): New.
3184         (output_cfi): Use it.
3185
3186 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
3187
3188         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
3189         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
3190         (TARGET_OCTEON): New macro.
3191         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
3192         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
3193         (ISA_HAS_POP): New macro.
3194         * config/mips/driver-native.c (host_detect_local_cpu): Handle
3195         Octeon.
3196         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
3197         Handle Octeon.
3198         * config/mips/mips.md (cpu): Add octeon.
3199         (type): Add pop attribute value.
3200         (popcount<mode>2): New pattern.
3201         * doc/invoke.texi (-march=@var{arch}): Add octeon.
3202
3203 2008-08-24  Jan Hubicka  <jh@suse.cz>
3204
3205         * doc/invoke.texi (-fipa-cp-clone): New option.
3206         (-fipa-cp): Update docs.
3207         (--param ipcp-unit-growth):New.
3208         * ipa-cp.c: Include fibheap.h, params.h
3209         (ipcp_initialize_node_lattices): When not cloning, all externally
3210         visible functions are bottom.
3211         (ipcp_need_redirect_p): Accept clones.
3212         (ipcp_insert_stage): Use cost driven heuristics.
3213         (max_count, dead_nodes): New static vars.
3214         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
3215         ipcp_const_param_count): New functions.
3216         * common.opt (ipa-cp-clone): New command line option.
3217         * params.def (ipcp-unit-growth): New.
3218
3219 2008-08-24  Jan Hubicka  <jh@suse.cz>
3220
3221         * tree-inline.c (tree_function_versioning): Look harder
3222         for referenced vars.
3223
3224 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
3225
3226         PR tree-optimization/37185
3227         * matrix-reorg.c (transform_access_sites): Update changed stmt.
3228
3229 2008-08-23  Jan Hubicka  <jh@suse.cz>
3230
3231         * ipa-cp.c (ipcp_analyze_node): New function.
3232         (ipcp_update_cloned_node): Use it.
3233         (ipcp_init_stage): Likewise.
3234         * ipa-inline.c (function_insertion_hook_holder): New static var.
3235         (analyze_function): Break out from ....
3236         (inline_generate_summary): Here; register insertion hook.
3237         (cgraph_decide_inlining): Remove hook.
3238         (add_new_function): New function.
3239
3240 2008-08-23  Jan Hubicka  <jh@suse.cz>
3241
3242         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
3243
3244 2008-08-23  Jan Hubicka  <jh@suse.cz>
3245
3246         * ipa-cp.c (constant_val_insert): Remove.
3247         (ipcp_propagate_one_const): Remove.
3248         (ipcp_create_replace_map): Always insert replacements to the map.
3249         (ipcp_insert_stage): Do not try to insert statements by hand.
3250         * tree-inline.c (insert_init_stmt): Break out from ...
3251         (setup_one_parameter): ... here; allow NULL BB pointer.
3252         (tree_function_versioning): Use setup_one_parameter to process
3253         replacement map.
3254
3255 2008-08-23  Jan Hubicka  <jh@suse.cz>
3256
3257         * tree.c (decl_address_ip_invariant_p): New function.
3258         * tree.h (decl_address_ip_invariant_p): Declare.
3259         * gimple.c (strip_invariant_refs): Break out from ...
3260         (is_gimple_invariant_address): ... here
3261         (is_gimple_ip_invariant_address): New function.
3262         (is_gimple_ip_invariant): New function.
3263         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
3264         Declare.
3265
3266         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
3267         (ipcp_lat_is_insertable): All constants are insertable.
3268         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
3269         IPA_CONST_VALUE_REF.
3270         (ipcp_initialize_node_lattices): Propagate all types of operands.
3271         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
3272         (ipcp_create_replace_map): Reformat.
3273         (ipcp_need_redirect_p): Simplify.
3274         (ipcp_insert_stage): Check that argument is used before clonning.
3275         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle IPA_CONST_REF.
3276         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
3277         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
3278         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
3279         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
3280         (jump_func_type): Remove IPA_CONST_VALUE_REF.
3281         * tree-inline.c (tree_function_versioning): Add variables referenced by
3282         replacing trees.
3283
3284 2008-08-23  Jan Hubicka  <jh@suse.cz>
3285
3286         PR target/37094
3287         * i386.c (standard_80387_constant_p): Use optimize_size.
3288
3289 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3290
3291         PR tree-optimization/37161
3292         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
3293         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
3294         (vect_determine_vectorization_factor): Move the scalar type
3295         retrieval to vect_get_smallest_scalar_type.
3296         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
3297         scalar type. Remove redundant computation.
3298         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
3299         (vect_get_slp_defs): Take the type of RHS into account if
3300         necessary by calling vect_get_smallest_scalar_type. Call
3301         vect_get_constant_vectors with additional argument.
3302
3303 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3304
3305         PR 35648
3306         * doc/invoke.texi (Wwrite-strings): Clarify description.
3307
3308 2008-08-23  Ira Rosen  <irar@il.ibm.com>
3309
3310         PR tree-optimization/37174
3311         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
3312         def stmt is a part of the loop before accessing its stmt_vec_info.
3313
3314 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
3315
3316         PR target/11259
3317         * config/avr/avr.md (UNSPEC_SWAP): New constants.
3318         (*swap): New insn pattern.
3319         (*ashlqi3): Rename from ashlqi3 insn pattern.
3320         (ashlqi3): New expanders.
3321         (*lshrqi3): Rename from lshrqi3 insn pattern.
3322         (lshrqi3): New expanders.
3323         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
3324         lshrqi3_const5, lshrqi3_const6): New splitters.
3325         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
3326         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
3327         peephole2 patterns.
3328
3329 2008-08-22  Richard Guenther  <rguenther@suse.de>
3330
3331         PR tree-optimization/37078
3332         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
3333         [+INF, +INF] ranges.
3334
3335 2008-08-22  Richard Guenther  <rguenther@suse.de>
3336
3337         PR tree-optimization/37143
3338         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
3339         a conversion statement instead of a copy.
3340
3341 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
3342
3343         PR target/37184
3344         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
3345         CCCmode, CCOmode and CCSmode destination modes.
3346
3347         PR target/37191
3348         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
3349         from different units in a single alternative.
3350         (*vec_extractv2sf_1): Ditto.
3351         (*vec_extractv2si_0): Ditto.
3352         (*vec_extractv2si_1): Ditto.
3353         * config/i386/sse.md (sse2_storehpd): Ditto.
3354         (sse2_storelpd): Ditto.
3355         (sse2_loadhpd): Ditto.
3356         (sse2_loadlpd): Ditto.
3357
3358         PR target/37197
3359         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
3360         (popcountsi2): Ditto.
3361         (clzdi2_abm): Ditto.
3362         (popcountdi2): Ditto.
3363         (clzhi2_abm): Ditto.
3364         (popcounthi2): Ditto.
3365
3366 2008-08-22  Richard Guenther  <rguenther@suse.de>
3367
3368         PR middle-end/36548
3369         PR middle-end/37125
3370         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
3371         if the multiplication does not overflow.
3372
3373 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
3374
3375         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
3376
3377 2008-08-21  Richard Henderson  <rth@redhat.com>
3378
3379         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
3380         spurrious comma from test.
3381         * configure: Rebuild.
3382
3383 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3384
3385         PR 30457
3386         * builtins.c (fold_builtin_next_arg): Add warning about undefined
3387         behaviour.
3388
3389 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
3390
3391         * c-tree.h (grokfield): New argument.
3392         * c-decl.c (grokfield): Handle new location argument.
3393         * c-parser.c (c_parser_struct_declaration): Pass location to
3394         grokfield.
3395
3396 2008-08-21  Richard Guenther  <rguenther@suse.de>
3397
3398         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
3399
3400 2008-08-21  Jan Hubicka  <jh@suse.cz>
3401
3402         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
3403         (cgraph_add_function_insertion_hook,
3404         cgraph_remove_function_insertion_hook,
3405         cgraph_call_function_insertion_hooks): New functions.
3406         * cgraph.h (cgraph_add_function_insertion_hook,
3407         cgraph_remove_function_insertion_hook,
3408         cgraph_call_function_insertion_hooks): Declare.
3409         * ipa-reference.c (function_insertion_hook_holder): New variable.
3410         (check_operand, look_for_address_of): When checking late, do not care
3411         about module bitmaps.
3412         (add_new_function): New function.
3413         (generate_summary): Register hooks; zero module bitmaps.
3414         (propagate): Unregister hooks.
3415         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
3416         (add_new_function): New function.
3417         (generate_summary): Register hook.
3418         (propagate): Remove hook.
3419
3420         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
3421
3422         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
3423         * ipa-cp.c (ipcp_update_cloned_node): New function.
3424         (build_const_val): Handle functions correctly; bring type logic
3425         into sync with tree-inline.c
3426         (ipcp_init_stage):  Take care of computing stuff needed by
3427         indirect inlining; update clones.
3428         (ipcp_generate_summary): Break out of ipcp_driver.
3429         (ipcp_driver): Do only execution and transformation.
3430         (pass_ipa_cp): Make IPA_PASS.
3431         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
3432         offset to address.
3433         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
3434         ipcp, some info is already available.
3435         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
3436         * tree-inline.c (remap_ssa_name): Unshare expression.
3437
3438 2008-08-21  Richard Guenther  <rguenther@suse.de>
3439
3440         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
3441         a PHI ask VN if it is already available.
3442         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
3443         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
3444
3445 2008-08-21  Richard Guenther  <rguenther@suse.de>
3446
3447         PR middle-end/36817
3448         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
3449         makes sure to produce a result of the correct type.
3450
3451 2008-08-21  Jan Hubicka  <jh@suse.cz>
3452         Backport from LTO branch:
3453
3454         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
3455                     Jan Hubicka  <jh@suse.cz>
3456
3457         * ipa-pure-const.c
3458         (init_state, finish_state, set_function_state, generate_summary):
3459         New functions.
3460         (scan_stmt): Renamed from scan_function.  Changed to keep state in
3461         local static vars rather than cgraph aux field.
3462         (propagate): Renamed from static_execute. Changed to keep state in
3463         local static vars rather than cgraph aux field.
3464         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
3465         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
3466
3467         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
3468
3469         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
3470         * ipa-reference.c (init_function_info, generate_summary,
3471         propagate): New functions.
3472         (analyze_function):  Call init_function_info.
3473         (static_execute): Stripped into generate_summary and propagate.
3474         (pass_ipa_reference): Made into ipa_opt_pass.
3475
3476 2008-08-21  Richard Guenther  <rguenther@suse.de>
3477
3478         PR tree-optimization/37181
3479         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
3480         folding result.
3481         (extract_range_from_unary_expr): Likewise.
3482
3483 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3484
3485         * diagnostic.c (pedwarn_at): Rename as pedwarn.
3486         (pedwarn): Delete.
3487         * toplev.h (pedwarn_at): Likewise.
3488         * builtins.c: Update all calls to pedwarn.
3489         * c-lex.c: Likewise.
3490         * toplev.c: Likewise.
3491         * c-tree.h: Likewise.
3492         * c-decl.c: Likewise.
3493         * c-errors.c: Likewise.
3494         * c-typeck.c: Likewise.
3495         * c-common.c: Likewise.
3496         * c-parser.c: Likewise.
3497
3498 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
3499
3500         PR target/31070
3501         * config/sparc/sparc.c (function_arg_slotno): Handle structure
3502         with MODE_VECTOR_INT mode.
3503
3504 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3505
3506         PR middle-end/179
3507         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
3508         initialized outside the current module.
3509         (warn_uninitialized_var): Ignore left-hand side when walking the
3510         trees. Ignore address expressions. Examine VUSE operands in gimple
3511         statements with a variable declaration on the right-hand side.
3512
3513 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
3514
3515         PR bootstrap/37155
3516         * rtlanal.c (subreg_offset_representable_p): Revert last change.
3517
3518 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3519
3520         PR 35701
3521         * c-common.c (conversion_warning): Do not warn if applying bit-and
3522         operator to unsigned constant that fits in the target type.
3523
3524 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3525
3526         PR c++/35602
3527         * c-common.c (conversion_warning): Do not warn for artificial
3528         expressions.
3529
3530 2008-08-20  Richard Guenther  <rguenther@suse.de>
3531
3532         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
3533         (extract_range_from_binary_expr): Fall back to constant propagation.
3534         (extract_range_from_unary_expr): Likewise.
3535
3536 2008-08-20  Richard Guenther  <rguenther@suse.de>
3537
3538         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
3539         with TREE_THIS_VOLATILE on shared nodes.
3540         (fold_stmt_r): Likewise.
3541
3542 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
3543
3544         PR c/37171
3545         * c-parser.c (c_parser_attributes): For keywords use canonical
3546         spelling for attr_name.
3547
3548 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3549
3550         * value-prof.c (check_counter): Revert wrong call to error.
3551
3552 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3553
3554         * profile.c: Update calls to inform.
3555         * value-prof.c: Update calls to inform.
3556
3557 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3558
3559         * diagnostic.c (inform): Add an explicit location_t parameter.
3560         * toplev.h (inform): Update declaration.
3561         * builtins.c: Update all calls to inform.
3562         * c-common.c: Likewise.
3563         * c-decl.c: Likewise.
3564         * c-opts.c: Likewise.
3565         * c-pch.c: Likewise.
3566         * c-pragma.c: Likewise.
3567         * c-typeck.c: Likewise.
3568         * coverage.c: Likewise.
3569         * opts.c: Likewise.
3570         * toplev.c: Likewise.
3571         * tree-cfg.c: Likewise.
3572         * tree-ssa.c: Likewise.
3573
3574 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
3575
3576         PR target/37169
3577         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
3578         V2DI mode, for SSE4.1, use movq instead of vector set if the
3579         second element is zero and inter-unit moves are OK.
3580
3581 2008-08-20  Richard Guenther  <rguenther@suse.de>
3582
3583         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
3584         properly handle conversion/copy chains after tuplification.
3585
3586 2008-08-20  Richard Guenther  <rguenther@suse.de>
3587
3588         * passes.c (init_optimization_passes): Move the second
3589         forwprop pass before alias computation.  Remove the second
3590         DCE pass.  Remove the first dominator and phi copy/const
3591         prop passes.
3592
3593 2008-08-20  Nick Clifton  <nickc@redhat.com>
3594
3595         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
3596         support of this feature.  Do not assume that a sufficiently new
3597         assembler will support the feature regardless of the target type.
3598         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
3599         * configure: Regenerate.
3600
3601 2008-08-20  Richard Guenther  <rguenther@suse.de>
3602
3603         * tree-vrp.c (found_in_subgraph): Remove.
3604         (live): New global static.
3605         (live_on_edge): New function.
3606         (blocks_visited): Remove.
3607         (register_edge_assert_for_2): Use live_on_edge.
3608         (find_conditional_asserts): Remove code dealing with
3609         found_in_subgraph.  Do not walk the CFG.
3610         (find_switch_asserts): Likewise.
3611         (find_assert_locations_1): Renamed from find_assert_locations.
3612         Move finding assert locations for conditional and switch
3613         statements first.  Update live bitmap.  Do not walk the CFG.
3614         (find_assert_locations): New function.
3615         (insert_range_assertions): Remove entry of CFG walk.
3616         Adjust call to find_assert_locations.
3617         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
3618         that only can appear because of fake exit edges but assert we
3619         never try to insert on those.
3620         (fini_pre): Do not remove fake exit edges here...
3621         (execute_pre): ...but here, before committing edge inserts.
3622
3623 2008-08-19  Richard Guenther  <rguenther@suse.de>
3624
3625         * passes.c (init_optimization_passes): Exchange store-ccp
3626         with a ccp pass.
3627
3628 2008-08-19  Rafael Espindola  <espindola@google.com>
3629
3630         * varasm.c (weak_decls): Move earlier in the file.
3631         (assemble_external): Add weak decls to the weak_decls list.
3632         (declare_weak): Don't add decls to the weak_decls list.
3633
3634 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
3635
3636         PR target/37157
3637         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
3638         before (sse2_shufpd_<mode>).
3639
3640 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
3641
3642         PR debug/37156
3643         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
3644         * tree.c (block_nonartificial_location): Likewise.
3645
3646 2008-08-19  Richard Guenther  <rguenther@suse.de>
3647
3648         PR tree-optimization/35972
3649         PR tree-optimization/23094
3650         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
3651         parameter.
3652         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
3653         handle MISALIGNED_INDIRECT_REF.
3654         (get_ref_from_reference_ops): New helper.
3655         (vn_reference_lookup_pieces): Walk the use-def chain using the
3656         alias-oracle if requested.
3657         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
3658         walking the use-def chain.
3659         (compute_avail): But not here.
3660         (create_component_ref_by_pieces_1): Properly handle
3661         MISALIGNED_INDIRECT_REF.
3662         (do_regular_insertion): Handle fully redundant
3663         expressions after PHI-translation also for SSA_NAME values, not
3664         only constants.  Correctly use edoubleprime for that.
3665
3666 2008-08-19  Ira Rosen  <irar@il.ibm.com>
3667
3668         * tree-vectorizer.c (supportable_widening_operation): Support
3669         multi-step conversion, return the number of steps in such conversion
3670         and the required intermediate types.
3671         (supportable_narrowing_operation): Likewise.
3672         * tree-vectorizer.h (vect_pow2): New function.
3673         (supportable_widening_operation): Change argument types.
3674         (supportable_narrowing_operation): Likewise.
3675         (vectorizable_type_promotion): Add an argument.
3676         (vectorizable_type_demotion): Likewise.
3677         * tree-vect-analyze.c (vect_analyze_operations): Call
3678         vectorizable_type_promotion and vectorizable_type_demotion with
3679         additional argument.
3680         (vect_get_and_check_slp_defs): Detect patterns.
3681         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
3682         types.
3683         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
3684         vect_build_slp_tree with correct arguments. Calculate unrolling factor
3685         according to the smallest type in the loop.
3686         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
3687         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
3688         supportable_widening_operation with correct arguments.
3689         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
3690         operands lists according to the number of vector statements in left
3691         or right node, if exists.
3692         (vect_gen_widened_results_half): Remove unused argument.
3693         (vectorizable_conversion): Call supportable_widening_operation,
3694         supportable_narrowing_operation, and vect_gen_widened_results_half
3695         with correct arguments.
3696         (vectorizable_assignment): Change documentation, support multiple
3697         types in SLP.
3698         (vectorizable_operation): Likewise.
3699         (vect_get_loop_based_defs): New function.
3700         (vect_create_vectorized_demotion_stmts): Likewise.
3701         (vectorizable_type_demotion): Support loop-aware SLP and general
3702         multi-step conversion. Call vect_get_loop_based_defs and
3703         vect_create_vectorized_demotion_stmts for transformation.
3704         (vect_create_vectorized_promotion_stmts): New function.
3705         (vectorizable_type_promotion): Support loop-aware SLP and general
3706         multi-step conversion. Call vect_create_vectorized_promotion_stmts
3707         for transformation.
3708         (vectorizable_store): Change documentation, support multiple
3709         types in SLP.
3710         (vectorizable_load): Likewise.
3711         (vect_transform_stmt): Pass SLP_NODE to
3712         vectorizable_type_promotion and vectorizable_type_demotion.
3713         (vect_schedule_slp_instance): Move here the calculation of number
3714         of vectorized statements for each node from...
3715         (vect_schedule_slp): ... here.
3716         (vect_transform_loop): Call vect_schedule_slp without the last
3717         argument.
3718
3719 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
3720
3721         PR bootstrap/37152
3722         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
3723         to == in assert statement.
3724         (vectorizable_reduction): Fix typo.
3725
3726 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3727
3728         PR bootstrap/37153
3729         * value-prof.c (check_counter): Dereference pointer to overall
3730         count when printing it.
3731
3732 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3733
3734         * profile.h: Really add it.
3735
3736 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
3737
3738         * mcf.c: Really add it.
3739
3740 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
3741             Vinodha Ramasamy  <vinodha@google.com>
3742
3743         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
3744         count_scale.
3745         * value-prof.c (check_counter): Fix the counter if
3746         flag_profile_correction is true.
3747         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
3748         tree_mod_subtract_transform):
3749         Follow check_counter parameter change.
3750         * common.opt (fprofile-correction): New option.
3751         * mcf.c: New file.
3752         * profile.h: Likewise.
3753         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
3754         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
3755         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
3756         functions.
3757         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
3758         flag_profile_correction is set.
3759
3760 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
3761
3762         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
3763
3764 2008-08-18  Tomas Bily  <tbily@suse.cz>
3765
3766         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
3767         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
3768         CONVERT_EXPR_P.
3769         * tree-data-ref.c (split_constant_offset_1): Likewise.
3770         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
3771         * tree-sra.c (sra_walk_expr): Likewise.
3772         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
3773         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
3774         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
3775         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
3776         Likewise.
3777         * gimple.c (gimple_assign_unary_nop_p): Likewise.
3778         * tree-vect-transform.c (vectorizable_type_demotion)
3779         (vectorizable_type_promotion): Likewise.
3780         * tree-inline.c (expand_call_inline):
3781         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
3782         (forward_propagate_addr_expr_1, forward_propagate_comparison)
3783         (tree_ssa_forward_propagate_single_use_vars): Likewise.
3784         * expr.c (expand_expr_real_1): Likewise.
3785         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
3786         (gimple_assign_unary_useless_conversion_p): Likewise.
3787         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
3788         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
3789         * fold-const.c (fold_unary): Likewise.
3790         * tree.h (CONVERT_EXPR_P): Likewise.
3791         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
3792         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
3793         * tree-vrp.c:
3794         (register_edge_assert_for_2, extract_range_from_unary_expr)
3795         (register_edge_assert_for_1): Likewise.
3796
3797 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3798
3799         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
3800         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
3801         (enum real_value_const): Delete.
3802         (get_real_const): Delete.
3803         * real.c (get_real_const): Delete.
3804         (dconst_e_ptr): Define.
3805         (dconst_third_ptr): Define.
3806         (dconst_sqrt2_ptr): Define.
3807         * builtins.c: Update all callers.
3808
3809 2008-08-18  Richard Guenther  <rguenther@suse.de>
3810
3811         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
3812         statement iterator after statement removal.
3813
3814 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
3815
3816         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
3817         (detect_processor_freebsd): Likewise.
3818         (host_detect_local_cpu): Call newly added functions for FreeBSD.
3819
3820 2008-08-18  Richard Guenther  <rguenther@suse.de>
3821
3822         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
3823         and loads have the correct types.
3824
3825 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3826
3827         PR cpp/7263
3828         * c-opts.c (cpp_opts): Remove static.
3829         * c-parser.c (cpp_opts): Declare it extern.
3830         (disable_extension_diagnostics): Handle cpp options.
3831         (enable_extension_diagnostics): Likewise.
3832
3833 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3834
3835         * diagnostics.c (permerror_at): Rename as permerror.
3836         (permerror): Delete.
3837         * toplev.h: Likewise.
3838
3839 2008-08-18  Richard Guenther  <rguenther@suse.de>
3840
3841         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
3842         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
3843         Move call_cdce before build_alias.  Move copyrename2,
3844         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
3845         right after final inlining.
3846         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
3847         (pass_build_cfg): But instead via TODO_dump_func.
3848
3849 2008-08-18  Richard Guenther  <rguenther@suse.de>
3850
3851         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
3852         element index.
3853         (scalarize_init): If we failed to generate some initializers
3854         do not generate zeros for not instantiated members.  Instead
3855         rely on the copy out.
3856         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
3857         about missing flow-sensitive alias info only if we have
3858         aliases computed.
3859
3860 2008-08-17  Nick Clifton  <nickc@redhat.com>
3861
3862         * doc/extend.texi (Function Attributes): Fix typo in description
3863         if hot function attribute.
3864
3865 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
3866             Richard Sandiford  <rdsandiford@googlemail.com>
3867
3868         * doc/install.texi (--with-mips-plt): Document.
3869         * doc/invoke.texi (-mplt, -mno-plt): Document.
3870         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
3871         and handle ${with_mips_plt}.
3872         * config/mips/mips.opt (mplt): New option.
3873         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
3874         (TARGET_ABICALLS_PIC2): Likewise.
3875         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
3876         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
3877         (ASM_SPEC): Use !mabi=* instead of !mabi*.
3878         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
3879         to decide whether to output ".option picX" directives.
3880         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
3881         Pass -call_nonpic rather than -KPIC for -mplt.
3882         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
3883         on the command line.  Also remove it when -mabi=64 is used without
3884         -msym32.
3885         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
3886         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
3887         TARGET_ABICALLS_PIC0.
3888         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
3889         TARGET_ABICALLS.
3890         (mips16_build_function_stub): Only output ".option pic" directives
3891         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
3892         (mips16_build_call_stub): Fix comment and remove redundant
3893         ".set at"/"set .noat" directives.
3894         (mips_function_rodata_section): Use the default behaviour for
3895         TARGET_ABSOLUTE_ABICALLS.
3896         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
3897         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
3898         (mips_restore_gp): Do nothing if the current function doesn't use
3899         a global pointer.
3900         (mips_expand_prologue): Only save $gp if the current function uses it.
3901         Use a normal move for TARGET_ABICALLS_PIC0.
3902         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
3903
3904 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
3905
3906         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
3907         of function when handling GLOBAL_POINTER_REGNUM.
3908
3909 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
3910
3911         PR ada/20548
3912         * common.opt (-fstack-check): Do not declare the variable here.
3913         (-fstack-check=): New option variant.
3914         * doc/invoke.texi (Code Gen Options): Document it.
3915         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
3916         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
3917         (STACK_CHECK_STATIC_BUILTIN): New macro.
3918         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
3919         * opts.c: Include expr.h.
3920         (common_handle_option) <OPT_fold_stack_check_>: New case.
3921         <OPT_fstack_check>: Likewise.
3922         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
3923         consistently in the test for variable-sized types.  Adjust for
3924         new behaviour of flag_stack_check.
3925         * explow.c: Include except.h.
3926         (allocate_dynamic_stack_space): Do not take into account
3927         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
3928         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
3929         for variable-sized parameters.  Treat all parameters whose size is
3930         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
3931         stack checking is enabled.
3932         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
3933         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
3934         if generic stack checking is enabled.
3935         (expand_function_end): Adjust for new behaviour of flag_stack_check.
3936         * reload1.c (reload): Likewise.
3937         * stmt.c (expand_decl): Assert that all automatic variables have
3938         fixed size at this point and remove dead code.
3939         * flags.h (stack_check_type): New enumeration type.
3940         (flag_stack_check): Declare.
3941         * toplev.c (flag_stack_check): New global variable.
3942         * Makefile.in (opts.o): Add dependency on EXPR_H.
3943         (explow.o): Add dependency on except.h.
3944
3945 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
3946
3947         * config/avr/avr.c (avr_override_options): Reduce value of
3948         PARAM_INLINE_CALL_COST.
3949
3950 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
3951
3952         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
3953         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
3954         lieu of TYPE_MODE (type) throughout.
3955
3956 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
3957
3958         * config/arm/arm.c (add_minipool_backward_ref): Check for
3959         8-byte-aligned entries in second case of forcing insertion after a
3960         particular entry.  Change third case to avoid inserting
3961         non-8-byte-aligned entries before 8-byte-aligned ones.
3962
3963 2008-08-15  Richard Guenther  <rguenther@suse.de>
3964
3965         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
3966         strip components for unknown size accesses.
3967
3968 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
3969
3970         * config/s390/2097.md New file.
3971         * config/s390/s390.md ("z10prop" attribute): Define none,
3972         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
3973         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
3974         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
3975         possible values and apply them to insns as appropriate.
3976         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
3977         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
3978         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
3979         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
3980         values.
3981         ("bfp" mode attribute): Removed.  Every occurence replaced
3982         with <mode>.
3983         * config/s390/s390.c (struct "z10_cost"): Updated entries.
3984         * config/s390/2084.md (insn_reservation "x_itof"): Updated
3985           type attribute.
3986
3987 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3988
3989         PR c/28152
3990         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
3991         for keywords.
3992
3993 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
3994
3995         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
3996         additional argument. Support reduction when duplication is needed due
3997         to data-types of different sizes in the loop.
3998         (get_initial_def_for_induction): Fix printout.
3999         (vect_get_vec_def_for_stmt_copy): Support case where the
4000         vec_stmt_for_operand is a phi node.
4001         (vectorizable_reduction): Support reduction when duplication is needed
4002         due to data-types of different sizes in the loop.
4003         (vectorizable_call): Remove restriction to not vectorize in case we
4004         have data-types of different sizes in the loop.
4005         (vectorizable_conversion): Likewise.
4006         (vectorizable_operation): Likewise.
4007         (vectorizable_type_demotion): Likewise.
4008         (vectorizable_type_promotion): Likewise.
4009         (vectorizable_induction): Add restriction to not vectorize in case
4010         we have data-types of different sizes in the loop.
4011
4012 2008-08-14  Christophe Saout  <christophe@saout.de>
4013             Uros Bizjak  <ubizjak@gmail.com>
4014
4015         PR target/37101
4016         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
4017         (*vec_concatv2di_rex64_sse4_1): Ditto.
4018         (*vec_concatv2di_rex64_sse): Ditto.
4019
4020 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
4021
4022         PR middle-end/37103
4023         * fold-const.c (fold_widened_comparison): Do not allow
4024         sign changes that change the result even if shorter type
4025         is wider than arg1_unw's type.
4026
4027 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
4028
4029         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
4030         Skip if the multilib testing specifies -march that does not
4031         agree with the one specified in the testcase.
4032
4033 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
4034
4035         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
4036         zero extend SImode values being converted to TFmode before passing
4037         to libcalls.
4038
4039 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4040
4041         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
4042         __PPU__ when targeting the Cell/B.E. PPU processor.
4043
4044 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
4045
4046         * gimple.h (gimple_call_set_chain): Accept SSA variables.
4047         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
4048         Rematerialize the static chain, if any.
4049         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
4050         static chain.
4051
4052 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4053
4054         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
4055         (new_loc_descr): Likewise.
4056         (add_loc_descr): Likewise.
4057         (size_of_loc_descr): Likewise.
4058         (size_of_locs): Likewise.
4059         (output_loc_operands): Likewise.
4060         (output_loc_sequence): Likewise.
4061         (new_reg_loc_descr): New.
4062         (build_cfa_loc): Use it.
4063         (build_cfa_aligned_loc): Likewise.
4064         (one_reg_loc_descriptor): Likewise.
4065         (based_loc_descr): Likewise.
4066
4067 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4068
4069         PR 30551
4070         * doc/invoke.texi (Wmain): Update.
4071         * c-decl.c (start_decl): warn_main is only 0 or 1.
4072         (start_function): Likewise. Fix formatting.
4073         (finish_function): Delete redundant warning.
4074         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
4075         * c-opts (c_common_handle_option): -Wall only has effect if
4076         warn_main is uninitialized. OPT_Wmain is automatically
4077         handled. -pedantic also enables Wmain.
4078         (c_common_post_options): Handle all logic for Wmain here.
4079         * c-common.c (warn_main): Delete.
4080         (check_main_parameter_types): Make pedwarns conditional on
4081         OPT_Wmain.
4082         * c-common.h (warn_main): Delete.
4083
4084 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
4085
4086         PR middle-end/36701
4087         * expr.c (emit_group_store): Allocate stack temp with the
4088         largest alignment when copying from register to stack.
4089
4090 2008-08-13  Richard Guenther  <rguenther@suse.de>
4091
4092         * tree.h (maybe_fold_offset_to_address): Declare.
4093         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
4094         (ccp_fold): Handle pointer conversions the same as fold_stmt.
4095         Likewise for POINTER_PLUS_EXPR.
4096         (maybe_fold_offset_to_reference): Enable disabled code.
4097         (maybe_fold_offset_to_address): New function.
4098         (fold_stmt_r): Use it.
4099         (fold_gimple_assign): Likewise.
4100         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
4101         (gimplify_expr): Likewise.
4102
4103 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4104
4105         * toplev.h (pedwarn_at): Fix declaration.
4106
4107 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
4108
4109         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
4110         LINK_SPEC): Use %R in -Y P argument.
4111
4112 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4113
4114         PR c/15236
4115         * diagnostic.c (pedwarn_at): New.
4116         * toplev.h (pedwarn_at): Declare.
4117         * c-tree.h (build_enumerator): Update declaration.
4118         * c-decl.c (finish_enum): Update comment.
4119         (build_enumerator): Take a location parameter. Give a pedwarn but do
4120         not perform any conversion.
4121         * c-parser.c (c_parser_enum_specifier): Set correct location for
4122         enumerator.
4123
4124 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4125
4126         PR 35635
4127         * c-common.c (conversion_warning): Use a switch. Ignore boolean
4128         expressions except for conversions to signed:1 bitfields. Handle
4129         COND_EXPR with constant operands.
4130
4131 2008-08-13  Richard Guenther  <rguenther@suse.de>
4132
4133         PR tree-optimization/15255
4134         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
4135         (struct oecount_s): New struct and VEC types.
4136         (cvec): New global.
4137         (oecount_hash): New function.
4138         (oecount_eq): Likewise.
4139         (oecount_cmp): Likewise.
4140         (zero_one_operation): New function.
4141         (build_and_add_sum): Likewise.
4142         (undistribute_ops_list): Perform un-distribution of multiplication
4143         and division on the chain of summands.
4144         (should_break_up_subtract): Also break up subtracts for factors.
4145         (reassociate_bb): Delete dead visited statements.
4146         Call undistribute_ops_list.  Re-sort and optimize if it did something.
4147         * passes.c (init_optimization_passes): Move DSE before
4148         reassociation.
4149         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
4150         PHI nodes.
4151
4152 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
4153
4154         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
4155
4156         * doc/invoke.texi: Revert unintended checkin.
4157
4158 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
4159
4160         PR libgomp/26165
4161         * gcc.c (include_spec_function): Tweak call to find_a_file.
4162
4163 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
4164
4165         PR middle-end/37014
4166         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
4167         and TRUTH_ORIF_EXPR.
4168         * dojump.c (do_jump): Likewise.
4169
4170         PR tree-optimization/37084
4171         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
4172         if id->regimplify, don't assume stmt is a cast assignment.
4173
4174 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
4175
4176         * final.c (final_scan_insn): Use app_enable/app_disable functions.
4177
4178 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4179
4180         PR bootstrap/37097
4181         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
4182         by last change.
4183
4184 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4185
4186         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
4187         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
4188
4189         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
4190         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
4191         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
4192         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
4193         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
4194
4195         * doc/tm.texi (Storage Layout): Remove documentation for
4196         TARGET_FLOAT_FORMAT.
4197
4198         * simplify-rtx.c (simplify_binary_operation_1): Replace
4199         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
4200
4201 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4202
4203         * real.h (struct real_format): New member has_sign_dependent_rounding.
4204         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
4205         spu_single_format, ieee_double_format, mips_double_format,
4206         motorola_double_format, ieee_extended_motorola_format,
4207         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
4208         ieee_extended_intel_96_round_53_format, ibm_extended_format,
4209         mips_extended_format, ieee_quad_format, mips_quad_format,
4210         vax_f_format, vax_d_format, vax_g_format): Initialize it.
4211         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
4212
4213         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
4214         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
4215         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
4216         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
4217         (ROUND_TOWARDS_ZERO): Likewise.
4218
4219         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
4220         (FLOAT_MODE_FORMAT): New macro.
4221         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
4222         (MODE_COMPOSITE_P): ... this new macro.
4223         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
4224         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
4225         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
4226
4227         * flags.h: Include "real.h".
4228
4229         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
4230         REAL_MODE_FORMAT_COMPOSITE_P.
4231         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
4232
4233         * doc/tm.texi (Storage Layout): Remove documentation of
4234         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
4235         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
4236         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
4237         they only apply to libgcc2.a.
4238
4239 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4240
4241         * config/spu/float_disf.c: New file.
4242         * config/spu/float_unsdisf.c: New file.
4243         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
4244         (LIB2FUNCS_EXCLUDE): Define.
4245
4246 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4247             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4248
4249         * real.h (struct real_format): New member round_towards_zero.
4250         * real.c (round_for_format): Respect fmt->round_towards_zero.
4251         (ieee_single_format, mips_single_format, motorola_single_format,
4252         spu_single_format, ieee_double_format, mips_double_format,
4253         motorola_double_format, ieee_extended_motorola_format,
4254         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
4255         ieee_extended_intel_96_round_53_format, ibm_extended_format,
4256         mips_extended_format, ieee_quad_format, mips_quad_format,
4257         vax_f_format, vax_d_format, vax_g_format): Initialize it.
4258         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
4259
4260         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
4261         real_format to choose rounding mode when calling MPFR functions.
4262         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
4263         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
4264
4265         * real.h (real_to_decimal_for_mode): Add prototype.
4266         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
4267         Respect target rounding mode when generating decimal representation.
4268         (real_to_decimal): New stub for backwards compatibility.
4269         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
4270         real_to_decimal_for_mode instead of real_to_decimal.
4271
4272         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
4273
4274 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4275             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4276
4277         * real.c (spu_single_format): New variable.
4278         * real.h (spu_single_format): Declare.
4279
4280         * config/spu/spu.c (spu_override_options): Install SFmode format.
4281         (spu_split_immediate): Use integer mode to operate on pieces of
4282         floating-point values in all cases.
4283
4284         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
4285         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
4286         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
4287
4288 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4289
4290         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
4291
4292 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4293
4294         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
4295
4296 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
4297
4298         PR c++/36688
4299         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
4300         on the VAR_DECL instead of TYPE_READONLY on its type.
4301
4302 2008-08-12  Ira Rosen  <irar@il.ibm.com>
4303
4304         * tree-vectorizer.c: Depend on langhooks.h.
4305         (supportable_widening_operation): Add two arguments. Support double
4306         type conversions.
4307         (supportable_narrowing_operation): Likewise.
4308         * tree-vectorizer.h (supportable_widening_operation): Add two
4309         arguments.
4310         (supportable_narrowing_operation): Likewise.
4311         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
4312         supportable_widening_operation with correct arguments.
4313         * tree-vect-transform.c (vectorizable_conversion): Likewise.
4314         (vectorizable_type_demotion): Support double type conversions.
4315         (vectorizable_type_promotion): Likewise.
4316         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
4317
4318 2008-08-11  Michael Matz  <matz@suse.de>
4319
4320         * i386/i386.c (override_options): Move initialisation from
4321         flag_schedule_insns_after_reload to here from ...
4322         (optimization_options): ... here.
4323
4324 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
4325
4326         PR rtl-optimization/36998
4327         * dwarf2out.c (compute_barrier_args_size_1,
4328         compute_barrier_args_size): Temporarily remove assertions.
4329
4330 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4331
4332         PR middle-end/20644
4333         * tree-ssa.c (struct walk_data): Add new flag
4334         warn_possibly_uninitialized.
4335         (warn_uninitialized_var): Use it.
4336         (warn_uninitialized_vars): New.
4337         (execute_early_warn_uninitialized): Call it.
4338         (execute_late_warn_uninitialized): Likewise.
4339
4340 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4341
4342         PR middle-end/36238
4343         * reload1.c (gen_reload): Guard calls to get_secondary_mem
4344         for memory subregs.
4345
4346 2008-08-09  Jan Hubicka  <jh@suse.cz>
4347
4348         PR target/37055
4349         * optabs.c (maybe_emit_unop_insn): Remove produced code if
4350         expansion failed.
4351         (expand_fix): Be prepared for expansion to fail.
4352         (expand_sfix_optab): Remove instructions if expansion failed.
4353
4354 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
4355
4356         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
4357         avr31 architecture.
4358         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
4359         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
4360
4361 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4362
4363         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
4364         mips/t-libgcc-mips16 to tmake_file.
4365         * config/mips/mips-protos.h (mips_call_type): New enum.
4366         (mips_pic_base_register, mips_got_load): Declare.
4367         (mips_restore_gp): Take an rtx argument.
4368         (mips_use_pic_fn_addr_reg_p): Declare.
4369         (mips_expand_call): Replace the sibcall_p argument with
4370         a mips_call_type argument.  Add a lazy_p parameter.
4371         (mips_split_call): Declare.
4372         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
4373         (MIPS16_PIC_TEMP): Likewise.
4374         (reg_class): Delete M16_NA_REGS.
4375         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
4376         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
4377         (mips_split_hi_p): Declare.
4378         * config/mips/mips.c (mips_split_hi_p): New array.
4379         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
4380         (mips_got_symbol_type_p): New function.
4381         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
4382         (mips16_stub_function_p): New function.
4383         (mips16_local_function_p): Likewise.
4384         (mips_use_pic_fn_addr_reg_p): Likewise.
4385         (mips_cannot_force_const_mem): Return false for HIGHs.
4386         Extend CONST_INT and symbolic handling to MIPS16, using
4387         mips_symbol_insns to check that the base symbol type is a
4388         legitimate constant.  Reject GOT-based constants if
4389         TARGET_MIPS16_PCREL_LOADS.
4390         (mips_const_insns): Check targetm.cannot_force_const_mem when
4391         decomposing a symbolic base and a large offset.
4392         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
4393         When calling a function that needs $25 from MIPS16 code,
4394         move the target address into $25 separately and add a USE
4395         to the call insn.
4396         (mips16_gp_pseudo_reg): Insert the initializer immediately
4397         before the first real insn.
4398         (mips_pic_base_register, mips_got_load): New functions.
4399         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
4400         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
4401         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
4402         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
4403         (mips_call_tls_get_addr): Update the call to mips_expand_call,
4404         also passing NULL_RTX rather than const0_rtx as the aux argument.
4405         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
4406         instead of TARGET_EXPLICIT_RELOCS.
4407         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
4408         (mips_load_call_address): Replace the sibcall_p argument with
4409         a mips_call_type argument.  Use mips_got_load.
4410         (mips16_local_alias): New structure.
4411         (mips16_local_aliases): New variable.
4412         (mips16_local_aliases_hash): New function.
4413         (mips16_local_aliases_eq): Likewise.
4414         (mips16_local_alias): Likewise.
4415         (mips16_stub_function): Likewise.
4416         (mips16_build_function_stub): Create a local alias for the target
4417         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
4418         .cpload directive and an R_MIPS_NONE relocation for the target
4419         function, then load the alias rather than the function itself.
4420         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
4421         (mips16_copy_fpr_return_value): Use mips16_stub_function and
4422         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
4423         (mips16_build_call_stub): Replace the FN parameter with an
4424         FN_PTR parameter.  Force the address into a register if it
4425         isn't a call_insn_operand; don't rely on the caller to do this.
4426         If a call to a locally-defined and locally-binding MIPS16
4427         function must be made indirectly, redirect the call to the
4428         function's local alias.  Use mips16_stub_function_p,
4429         mips16_stub_function, mips_expand_call and use_reg.
4430         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
4431         Use explicit %hi and %lo accesses where possible.
4432         Use MIPS_CALL to generate the correct code form of a
4433         jal instruction.  Add clobbers of $18 instead of uses.
4434         Update the call to mips_emit_call_insn.
4435         (mips_expand_call): Replace the SIBCALL_P argument with a
4436         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
4437         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
4438         allowing it to modify the call address.  Update the calls to
4439         mips_load_call_address and mips_emit_call_insn.
4440         (mips_split_call): New function.
4441         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
4442         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
4443         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
4444         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
4445         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
4446         if TARGET_MIPS16.
4447         (mips_cprestore_slot): New function.
4448         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
4449         and use mips_cprestore_slot.
4450         (mips_output_function_prologue): Handle TARGET_MIPS16 for
4451         LOADGP_OLDABI.
4452         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
4453         then use a copygp_mips16 instruction to set up $28.
4454         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
4455         (mips16_lay_out_constants): Call split_all_insns_noflow.
4456         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
4457         false if TARGET_MIPS16.
4458         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
4459         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
4460         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
4461         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
4462         MIPS16 code.  Allow MIPS16 o32 PIC.
4463         (mips_override_options): Allow MIPS16 o32 PIC.
4464         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
4465         after reload if TARGET_USE_GOT.
4466         (UNSPEC_COPYGP): New constant.
4467         (length): Use a default length of 8 for MIPS16 GOT loads.
4468         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
4469         (*got_page<mode>): Check mips_split_hi_p.
4470         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
4471         (unspec_got<mode>, unspec_call<mode>): New expanders.
4472         (load_got<mode>, load_call<mode>): Remove the length attributes.
4473         Use a got attribute instead of a type attribute.
4474         (copygp_mips16): New insn.
4475         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
4476         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
4477         (sibcall, sibcall_value, call, call_value): Update the calls
4478         to mips_expand_call.
4479         (call_internal, call_value_internal): Use mips_split_call.
4480         (call_value_multiple_internal): Likewise.
4481         (call_split): Move after call_internal (the insn it is split from).
4482         (call_internal_direct, call_value_internal_direct): Turn into
4483         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
4484         (call_direct_split, call_value_direct_split): New patterns.
4485         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
4486         and use M16_REGS instead of M16_NA_REGS.
4487         * config/mips/predicates.md (const_call_insn_operand): Replace
4488         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
4489         mips_use_pic_fn_addr_reg_p check.
4490         (move_operand): Reject HIGHs if mips_split_hi_p.
4491         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
4492         (__mips16_floatunsisf): Inline __mips16_floatsisf.
4493         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
4494         * config/mips/libgcc-mips16.ver: New file.
4495         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
4496         $(srcdir)/config/mips/libgcc-mips16.ver.
4497
4498 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4499
4500         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
4501         (mips_unspec_address, mips_unspec_offset_high): Likewise.
4502         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
4503         (mips16_cfun_returns_in_fpr_p): Likewise.
4504
4505 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4506
4507         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
4508         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
4509         rather than 4 to PC.
4510
4511 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4512
4513         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
4514         (FUNCTION_PROFILER): Save the static chain pointer into $2
4515         beforehand and restore it aftewards.
4516         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
4517         address directly into $25 and call the function through $25;
4518         do not clobber $3.  Pad the DImode version to cover the space
4519         left by the deleted $25 <- $3 move.
4520         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
4521         the removal of the $25 <- $3 move.
4522         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
4523         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
4524
4525 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
4526             Daniel Jacobowitz  <dan@codesourcery.com>
4527
4528         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
4529         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
4530         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
4531         * config/mips/mips.c (mips_start_function_definition): New function.
4532         (mips_end_function_definition): Likewise.
4533         (mips_output_function_prologue): Use mips_start_function_definition.
4534         (mips_output_function_epilogue): Use mips_end_function_definition.
4535         (build_mips16_function_stub): Use mips_start_function_definition
4536         and mips_end_function_definition.
4537         (build_mips16_call_stub): Likewise.
4538
4539 2008-08-09  Richard Guenther  <rguenther@suse.de>
4540
4541         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
4542         * gimple.h (gimple_call_fn): Adjust comment.
4543         (gimple_call_set_fndecl): New function.
4544         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
4545         longer having bare FUNCTION_DECL operand.
4546         (gimple_call_return_type): Likewise.
4547         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
4548
4549         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
4550         (gimple_mod_pow2): Likewise.
4551         (gimple_mod_subtract): Likewise.
4552         (gimple_ic): Likewise.
4553         (gimple_stringop_fixed_value): Likewise.
4554         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
4555         longer having bare FUNCTION_DECL operand.
4556         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
4557         * omp-low.c (optimize_omp_library_calls): Likewise.
4558         * cgraphunit.c (update_call_expr): Likewise.
4559         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
4560         (execute_convert_to_rsqrt): Likewise.
4561         * cfgexpand.c (gimple_to_tree): Simplify.
4562         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
4563         bare FUNCTION_DECL operand.
4564         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
4565         (convert_gimple_call): Use gimple_call_fndecl.
4566         * c-common.c (c_warn_unused_result): Likewise.
4567
4568 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4569
4570         PR c/17880
4571         * c-typeck.c (digest_init): Call verify_sequence_points from here.
4572         (c_finish_return): Likewise.
4573         (c_start_case): Likewise.
4574         * c-common.c (warn_for_collisions_1): Use explicit location in
4575         warning.
4576         * c-parser.c (c_parser_condition): New. Call
4577         verify_sequence_points.
4578         (c_parser_paren_condition): Call c_parser_condition.
4579         (c_parser_for_statement): Call c_parser_condition.
4580
4581 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4582
4583         PR 36901
4584         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
4585         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
4586         Moved from diagnostic.h
4587         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
4588         DK_PERMERROR.
4589         (emit_diagnostic): New.
4590         (warning0, pedwarn0): Delete.
4591         (warning, warning_at, pedwarn, permerror): Return bool.
4592         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
4593         Moved to diagnostic.c.
4594         (struct diagnostic_context): Use correct type for
4595         classify_diagnostic.
4596         (diagnostic_report_diagnostic): Update declaration.
4597         (emit_diagnostic): Declare.
4598         * errors.c (warning): Return bool.
4599         * errors.h (warning): Update declaration.
4600         * toplev.h (warning0, pedwarn0): Delete.
4601         (warning, warning_at, pedwarn, permerror): Return bool.
4602         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
4603         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
4604         inform. Update all calls.
4605         (diagnose_mismatched_decls): Check return value of warning/pedwarn
4606         before giving informative note.
4607         (implicit_decl_warning): Likewise.
4608         * c-typeck.c (build_function_call): Likewise.
4609         * tree-sssa.c (warn_uninit): Likewise.
4610         * builtins.c (gimplify_va_arg_expr): Likewise.
4611
4612 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4613
4614         PR 7651
4615         * doc/invoke.texi (-Wextra): Move warning from here...
4616         (-Wuninitialized): ... to here.
4617
4618 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4619
4620         PR 28875
4621         * flags.h (set_Wunused): Delete
4622         * toplev.c (process_options): Handle Wunused flags here.
4623         * opts.c (maybe_warn_unused_parameter): Delete.
4624         (common_handle_option): Replace set_Wunused by warn_unused.
4625         (set_Wextra): Do not handle Wunused-parameter here.
4626         (set_Wunused): Delete.
4627         * c-opts.c (c_common_handle_option): Replace set_Wunused by
4628         warn_unused.
4629         * common.opt (Wunused): Add Var and Init.
4630         (Wunused-function): Likewise.
4631         (Wunused-label): Likewise.
4632         (Wunused-parameter): Likewise.
4633         (Wunused-value): Likewise.
4634         (Wunused-variable): Likewise.
4635
4636 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
4637
4638         * doc/invoke.texi: Add cpu_type power7.
4639         * config.in (HAVE_AS_VSX): New.
4640         * config.gcc: Add cpu_type power7.
4641         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
4642         VSX instructions.
4643         * configure: Regenerate.
4644         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
4645         power5.
4646         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
4647         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
4648         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
4649
4650 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
4651
4652         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
4653         type to vectorize.builtin_conversion.
4654         (vectorizable_conversion): Likewise.
4655         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
4656         integral type as input.
4657         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
4658         FIX_TRUNC_EXPR.
4659         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
4660         and ALTIVEC_BUILTIN_VCTSXS.
4661         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
4662         formatting.
4663
4664 2008-08-08  Richard Guenther  <rguenther@suse.de>
4665
4666         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
4667         (surely_varying_stmt_p): Calls are varying only if they are
4668         non-builtin and not indirect or have no result.
4669         (ccp_fold): Re-instantiate code before the tuples merge.
4670
4671 2008-08-08  Richard Guenther  <rguenther@suse.de>
4672
4673         PR tree-optimization/37056
4674         * gimple.h (gimple_assign_rhs_class): New helper function.
4675         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
4676         unary operations properly.
4677
4678 2008-08-07  Jan Hubicka  <jh@suse.cz>
4679
4680         * i386.h (ix86_size_cost): Declare.
4681         (ix86_cur_cost): New function macro.
4682         * i386.md (peepholes expanding size and splitters): Predicate by
4683         optimize_insn_for_speed_p.
4684         (peepholes reduce size and splitters): Predicate by
4685         optimize_insn_for_size_p.
4686         * i386.c (ix86_size_cost): Rename from ...
4687         (size_cost): This one.
4688         (override_options): Update.
4689         (decide_alg): Likewise.
4690         (ix86_expand_clear): Use RTL profile.
4691         (ix86_pad_returns): Use RTL profile.
4692
4693 2008-08-07  Jan Hubicka  <jh@suse.cz>
4694
4695         * recog.c (split_all_insns): Set RTL profile
4696         (peephole2_optimize): Likewise.
4697         * function.c (thread_prologue_and_epilogue_insns): Likewise.
4698         * combine.c (combine_instructions): Likewise.
4699
4700 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4701
4702         * c-common.c (c_common_reswords): Also warn about keyword "bool".
4703
4704 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
4705
4706         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
4707         value in a6 after the set_frame_ptr insn.
4708
4709 2008-08-07  Richard Henderson  <rth@redhat.com>
4710
4711         PR debug/37033
4712         * gcc.c (cpp_options): Pass along -g*.
4713
4714 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4715
4716         * config/arm/arm.c (output_move_neon): Update comment describing
4717         big-endian vector layout.
4718         (arm_assemble_integer): Do not handle big-endian NEON vectors
4719         specially.
4720         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
4721         neon_vget_lane<mode>_sext_internal,
4722         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
4723         element indices for big-endian.
4724
4725 2008-08-07  Richard Henderson  <rth@redhat.com>
4726
4727         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
4728         * configure, config.in: Rebuild.
4729         * debug.h (dwarf2out_do_cfi_asm): Declare.
4730         * c-cppbuiltin.c (c_cpp_builtins): Use it.
4731         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
4732         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
4733         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
4734
4735 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
4736
4737         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
4738         movv2si_internal): Combine into mov<mode>_internal.
4739         (movv2si_internal_2): Remove.
4740
4741 2008-08-07  Jan Hubicka  <jh@suse.cz>
4742
4743         PR target/37048
4744         * i386.md (single stringop patterns): Enable unconditionally.
4745
4746 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
4747
4748         PR target/36992
4749         * config/i386/emmintrin.h (_mm_move_epi64): Use
4750         __builtin_ia32_movq128.
4751
4752         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
4753         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
4754
4755         * config/i386/sse.md (sse2_movq128): New.
4756
4757         * doc/extend.texi: Document __builtin_ia32_movq128.
4758
4759 2008-08-07  Richard Guenther  <rguenther@suse.de>
4760
4761         PR middle-end/37042
4762         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
4763         pointers can access anything.
4764
4765 2008-08-06  Jan Hubicka  <jh@suse.cz>
4766
4767         * optabs.c (emit_unop_insn): Break out to ...
4768         (maybe_emit_unop_insn): ... this one.
4769         (expand_sfix_optab): Use maybe variant.
4770         * optabs.h (maybe_emit_unop_insn): Declare.
4771
4772         * i386.md (mov0 patterns): Enable by default.
4773         (FP conversion expanders): Disable expansion of code expanding
4774         sequences when instruction should be optimized for size.
4775         (single strinop patterns): Enable when optimizing for size.
4776         (string expanders): Disable expanding of code expanding sequences
4777         when optimizning instruction for size.
4778         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
4779         per BB basis.
4780         (ix86_fp_comparison_sahf_cost): Likewise.
4781         (ix86_expand_branch): Likewise.
4782         (ix86_expand_ashl_const): Likewise.
4783         (ix86_split_ashl): Likewise.
4784         (ix86_expand_strlen): Likewise.
4785         (ix86_emit_fp_unordered_jump): Likewie.
4786
4787 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4788
4789         * c-common.c: Fix typo.
4790         (c_common_reswords): Activate more C++ keyword warnings.
4791
4792         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
4793
4794 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4795
4796         PR 26785
4797         * diagnostic.c (permerror_at): New.
4798         * toplev.h (permerror_at): Declare.
4799
4800 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
4801             Ira Rosen  <irar@il.ibm.com>
4802
4803         * tree-vect-transform.c (vect_model_simple_cost): Return
4804         immediately if stmt is pure SLP.
4805         (vect_model_store_cost): Ditto.
4806         (vect_model_load_cost): Ditto.
4807         (vectorizable_store): Remove PURE_SLP check before call
4808         to vect_model_store_cost.
4809         (vect_model_store_cost): When checking whether stmt describe
4810         strided access, add a check that it is not slp_node.
4811
4812 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4813
4814         PR 8715
4815         * c-common.c (warn_for_sign_compare): New. Handle separately the
4816         case that 'constant' is zero.
4817         * c-typeck.c (build_binary_op): Move code to c-common.c
4818
4819 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4820
4821         * config/alpha/alpha.c (alpha_preferred_reload_class,
4822         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
4823         alpha_output_mi_thunk_osf): Avoid C++ keywords.
4824         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
4825         * config/arm/arm.md: Likewise.
4826         * config/avr/avr-protos.h (preferred_reload_class,
4827         test_hard_reg_class, avr_simplify_comparison_p,
4828         out_shift_with_cnt, class_max_nregs): Likewise.
4829         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
4830         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
4831         preferred_reload_class, test_hard_reg_class): Likewise.
4832         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
4833         bfin_memory_move_cost, bfin_secondary_reload,
4834         bfin_output_mi_thunk): Likewise.
4835         * config/crx/crx.c (crx_secondary_reload_class,
4836         crx_memory_move_cost): Likewise.
4837         * config/frv/frv-protos.h (frv_secondary_reload_class,
4838         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
4839         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
4840         frv_secondary_reload_class, frv_class_likely_spilled_p,
4841         frv_class_max_nregs): Likewise.
4842         * config/h8300/h8300.c (h8300_classify_operand,
4843         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
4844         Likewise.
4845         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
4846         * config/ia64/ia64.c (ia64_preferred_reload_class,
4847         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
4848         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
4849         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
4850         Likewise.
4851         * config/m68hc11/m68hc11.c (preferred_reload_class,
4852         m68hc11_memory_move_cost): Likewise.
4853         * config/mcore/mcore.c (mcore_secondary_reload_class,
4854         mcore_reload_class): Likewise.
4855         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
4856         mips_class_max_nregs, mips_cannot_change_mode_class,
4857         mips_preferred_reload_class, mips_secondary_reload_class,
4858         mips_output_mi_thunk): Likewise.
4859         * config/mmix/mmix.c (mmix_preferred_reload_class,
4860         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
4861         Likewise.
4862         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
4863         Likewise.
4864         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
4865         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
4866         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
4867         * config/rs6000/rs6000.c (paired_expand_vector_init,
4868         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
4869         compare_section_name, rs6000_memory_move_cost): Likewise.
4870         * config/s390/s390.c (s390_emit_compare_and_swap,
4871         s390_preferred_reload_class, s390_secondary_reload,
4872         legitimize_pic_address, legitimize_tls_address,
4873         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
4874         s390_class_max_nregs): Likewise.
4875         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
4876         * config/s390/s390.md: Likewise.
4877         * config/score/score-protos.h (score_secondary_reload_class,
4878         score_preferred_reload_class): Likewise.
4879         * config/score/score.c (score_preferred_reload_class,
4880         score_secondary_reload_class): Likewise.
4881         * config/score/score3.c (score3_output_mi_thunk,
4882         score3_preferred_reload_class, score3_secondary_reload_class,
4883         score3_hard_regno_mode_ok): Likewise.
4884         * config/score/score3.h (score3_preferred_reload_class,
4885         score3_secondary_reload_class): Likewise.
4886         * config/score/score7.c (score7_output_mi_thunk,
4887         score7_preferred_reload_class, score7_secondary_reload_class,
4888         score7_hard_regno_mode_ok): Likewise.
4889         * config/score/score7.h (score7_preferred_reload_class,
4890         score7_secondary_reload_class): Likewise.
4891         * config/sh/sh.c (prepare_move_operands, output_far_jump,
4892         output_branchy_insn, add_constant, gen_block_redirect,
4893         sh_insn_length_adjustment, sh_cannot_change_mode_class,
4894         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
4895         Likewise.
4896         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
4897         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
4898         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
4899         xstormy16_preferred_reload_class): Likewise.
4900         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
4901         xtensa_expand_atomic, override_options,
4902         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
4903         Likewise.
4904         * reorg.c (try_merge_delay_insns): Likewise.
4905         * tree.c (merge_dllimport_decl_attributes): Likewise.
4906
4907         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
4908
4909 2008-08-06  Michael Matz  <matz@suse.de>
4910
4911         * Makefile.in (write_entries_to_file): Quote words.
4912         * gengtype.c: (read_input_line): Skip over leading white-space.
4913
4914 2008-08-06  Marc Gauthier  <marc@tensilica.com>
4915
4916         * config.gcc: Match more processor names for Xtensa.
4917         * configure.ac: Likewise.
4918         * doc/install.texi (Specific): Likewise.
4919         * configure: Regenerate.
4920
4921 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4922
4923         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
4924         * calls.c (avoid_likely_spilled_reg): Likewise.
4925         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
4926         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
4927         * config/i386/i386.c (ix86_expand_special_args_builtin,
4928         ix86_secondary_reload): Likewise.
4929         * except.c (struct eh_region, gen_eh_region_catch,
4930         remove_unreachable_regions, duplicate_eh_regions,
4931         assign_filter_values, build_post_landing_pads,
4932         sjlj_find_directly_reachable_regions, remove_eh_handler,
4933         reachable_next_level, foreach_reachable_handler,
4934         can_throw_internal_1, can_throw_external_1,
4935         collect_one_action_chain): Likewise.
4936         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
4937         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
4938         * function.c (update_temp_slot_address, instantiate_new_reg,
4939         instantiate_virtual_regs_in_rtx,
4940         instantiate_virtual_regs_in_insn): Likewise.
4941         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
4942         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
4943         gimplify_cleanup_point_expr): Likewise.
4944         * ipa-cp.c (ipcp_lattice_changed): Likewise.
4945         * passes.c (next_pass_1): Likewise.
4946         * print-tree.c (print_node_brief, print_node): Likewise.
4947         * profile.c (branch_prob): Likewise.
4948         * tree-dump.c (dump_register): Likewise.
4949         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
4950         Likewise.
4951         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
4952         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
4953         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
4954         copy_arguments_for_versioning, copy_static_chain): Likewise.
4955         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
4956         add_new_name_mapping, register_new_name_mapping): Likewise.
4957         * tree-mudflap.c (mf_xform_derefs): Likewise.
4958         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
4959         get_init_expr, combine_chains): Likewise.
4960         * tree-pretty-print.c (dump_generic_node): Likewise.
4961         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
4962         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
4963         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
4964         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
4965
4966 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4967
4968         PR middle-end/37010
4969         * calls.c (expand_call): Use the biggest preferred stack
4970         boundary.
4971
4972 2008-08-06  Michael Matz  <matz@suse.de>
4973
4974         PR target/36613
4975         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
4976         for reused reload, instead of overwriting them.
4977
4978 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
4979
4980         PR middle-end/37009
4981         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
4982         for incoming stack boundary.
4983
4984         * function.c (assign_parm_find_entry_rtl): Update
4985         parm_stack_boundary.
4986
4987         * function.h (rtl_data): Add parm_stack_boundary.
4988
4989         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
4990         parm_stack_boundary for incoming stack boundary.
4991
4992 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
4993
4994         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
4995         for unrepresentable subregs or treat them as equal to other regs
4996         or subregs with the same register number.
4997
4998 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
4999
5000         PR middle-end/35432
5001         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
5002         if want_value.
5003
5004 2008-08-06  Jan Hubicka  <jh@suse.cz>
5005
5006         * predict.c (maybe_hot_frequency_p): When profile is absent, all
5007         frequencies might be hot.
5008
5009 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
5010
5011         * reload.c (find_reloads): Force constants into literal pool
5012         also if they are wrapped in a SUBREG.
5013
5014 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5015
5016         PR target/35659
5017         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
5018         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
5019         Don't allow predicated instructions for data speculation.
5020         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
5021         declaration.
5022
5023 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5024
5025         * haifa-sched.c (extend_global): Split to extend_global_data and
5026         extend_region_data.  Update all uses.
5027         (extend_all): Rename to extend_block_data.
5028
5029 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
5030
5031         * sched-rgn.c (new_ready): Check if instruction can be
5032         speculatively scheduled before attempting speculation.
5033         (debug_rgn_dependencies): Remove wrongful assert.
5034
5035 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5036
5037         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
5038
5039 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
5040
5041         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
5042         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
5043         va_size, and type_size.
5044
5045 2008-08-04  Jason Merrill  <jason@redhat.com>
5046
5047         PR c++/37016
5048         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
5049         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
5050
5051 2008-08-05  Richard Henderson  <rth@redhat.com>
5052
5053         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
5054         * configure: Rebuild.
5055
5056 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5057
5058         PR tree-opt/37024
5059         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
5060         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
5061         is a conversion.
5062
5063 2008-08-05  Richard Henderson  <rth@redhat.com>
5064
5065         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
5066         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
5067         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
5068         * common.opt (fdwarf2-cfi-asm): New.
5069         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
5070         * config.in, configure: Rebuild.
5071         * dwarf2asm.c (dw2_asm_output_data_raw): New.
5072         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
5073         (dw2_force_const_mem): Externalize.
5074         * dwarf2asm.h: Update.
5075         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
5076         generate a real label.
5077         (output_cfi_directive): New.
5078         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
5079         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
5080         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
5081         and .cfi_lsda.
5082         (dwarf2out_end_epilogue): Emit .cfi_endproc.
5083         (output_loc_operands_raw, output_loc_sequence_raw): New.
5084         (output_cfa_loc_raw): New.
5085
5086 2008-08-05  Paul Brook  <paul@codesourcery.com>
5087
5088         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
5089         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
5090         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
5091         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
5092         * config/arm/arm.h (TARGET_VFPD32): Define.
5093         (TARGET_VFP3): Use TARGET_VFPD32.
5094         (fputype): Add FPUTYPE_VFP3D16.
5095         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
5096         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
5097         * config/arm/arm-cores.def: Add cortex-r4f.
5098         * config/arm/arm-tune.md: Regenerate.
5099
5100 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5101
5102         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
5103         Reword some comments throughout the file.
5104
5105         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
5106         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
5107         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
5108         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
5109
5110         (MFC_START_ENABLE): Remove PPU-only define.
5111         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
5112         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
5113
5114         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
5115         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
5116         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
5117         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
5118         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
5119         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
5120         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
5121
5122         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
5123         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
5124         (mfc_sdcrt, mfc_sdcrtst): Likewise.
5125         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
5126
5127         (spu_read_machine_status): Fix typo.
5128
5129 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5130
5131         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
5132         SUBREG of multi-word hard register.
5133         * config/spu/spu.c (valid_subreg): Likewise.
5134         (adjust_operand): Handle SUBREGs of multi-word hard registers.
5135
5136 2008-08-04  Richard Guenther  <rguenther@suse.de>
5137
5138         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
5139         the candidate with the stripped base if that base is different
5140         from the original base even for offset zero.
5141
5142 2008-08-04  Richard Guenther  <rguenther@suse.de>
5143
5144         PR middle-end/36691
5145         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
5146         check for no_overflow.
5147
5148 2008-08-04  Richard Guenther  <rguenther@suse.de>
5149
5150         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
5151
5152 2008-08-04  Paul Brook  <paul@codesourcery.com>
5153
5154         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
5155         (arm_order_regs_for_local_alloc): New function.
5156         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
5157         prototype.
5158         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
5159
5160 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
5161
5162         PR target/37012
5163         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
5164         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
5165         (ix86_expand_epilogue): Likewise.
5166
5167 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
5168
5169         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
5170         in comments.
5171
5172 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
5173
5174         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
5175         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
5176         (*movv2sf_internal_rex64): Ditto.
5177
5178 2008-08-03  Jan Hubicka  <jh@suse.cz>
5179
5180         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
5181         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
5182         * expmed.c (expand_smod_pow2): Likewise.
5183
5184 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
5185
5186         PR target/36992
5187         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
5188         alternative 0 of operand 1.
5189         (*vec_concatv2di_rex64_sse): Ditto.
5190         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
5191         of operand 1.
5192         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
5193         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
5194         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
5195         (*movv2sf_internal_rex64): Ditto.
5196
5197 2008-08-02  Richard Guenther  <rguenther@suse.de>
5198
5199         PR target/35252
5200         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
5201         (ssedoublesizemode): New mode attribute.
5202         (sse_shufps): Call gen_sse_shufps_v4sf.
5203         (sse_shufps_1): Macroize.
5204         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
5205         (sse2_shufpd_1): Macroize.
5206         (vec_extract_odd, vec_extract_even): New expanders.
5207         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
5208         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
5209         * i386.c (ix86_expand_vector_init_one_nonzero): Call
5210         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
5211         (ix86_expand_vector_set): Likewise.
5212         (ix86_expand_reduc_v4sf): Likewise.
5213
5214 2008-08-01  Doug Kwan  <dougkwan@google.com>
5215
5216         * matrix-reorg.c: Re-enable all code.
5217         (struct malloc_call_data): Change CALL_STMT to gimple type.
5218         (collect_data_for_malloc_call): Tuplify.
5219         (struct access_site_info): Change STMT to gimple type.
5220         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
5221         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
5222         (struct free_info): Change STMT to gimple type.
5223         (struct matrix_access_phi_node):  Change PHI to gimple type.
5224         (get_inner_of_cast_expr): Remove.
5225         (may_flatten_matrices_1): Tuplify.
5226         (may_flatten_matrices): Ditto.
5227         (mark_min_matrix_escape_level): Ditto.
5228         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
5229         (ssa_accessed_in_call_rhs): New
5230         (ssa_accessed_in_assign_rhs): New
5231         (record_access_alloc_site_info): Tuplify.
5232         (add_allocation_site): Ditto.
5233         (analyze_matrix_allocation_site): Ditto.
5234         (analyze_transpose): Ditto.
5235         (get_index_from_offset): Ditto.
5236         (update_type_size): Ditto.
5237         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
5238         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
5239         (analyze_accesses_for_phi_node): Tuplify.
5240         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
5241         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
5242         (analyze_matrix_accesses): Tuplify.
5243         (check_var_data): New call-back type for check_var_notmodified_p.
5244         (check_var_notmodified_p): Tuplify and use call-back struct to
5245         return statement found.
5246         (can_calculate_expr_before_stmt): Factor out statement related code
5247         into ...
5248         (can_calculate_stmt_before_stmt): New.
5249         (check_allocation_function): Tuplify.
5250         (find_sites_in_func): Ditto.
5251         (record_all_accesses_in_func): Ditto.
5252         (transform_access_sites): Ditto.
5253         (transform_allocation_sites): Ditto.
5254         (matrix_reorg): Re-enable.
5255         (gate_matrix_reorg): Re-enable.
5256
5257 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
5258
5259         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
5260         for labels for which it hasn't been set yet.  If it has been set,
5261         stop walking insns and continue with next worklist item.
5262         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
5263         if the only BARRIER is at the very end of a function.
5264
5265 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
5266
5267         * cfgexpand.c (expand_stack_alignment): Assert that
5268         stack_realign_drap and drap_rtx must match.
5269
5270         * function.c (instantiate_new_reg): If DRAP is used to realign
5271         stack, replace virtual_incoming_args_rtx with internal arg
5272         pointer.
5273
5274 2008-08-01  Richard Guenther  <rguenther@suse.de>
5275
5276         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
5277         loop information only if we initialized it.
5278         (execute_pre): Call fini_pre with in_fre.
5279         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
5280         if we do not unroll because we hit max-completely-peeled-insns.
5281         Use our estimation for consistency, do allow shrinking.
5282
5283 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
5284
5285         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
5286         with MIN_STACK_BOUNDARY.
5287         (ix86_update_stack_boundary): Likewise.
5288         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
5289         STACK_BOUNDARY.
5290
5291         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
5292         (MIN_STACK_BOUNDARY): This.
5293
5294 2008-08-01  Richard Guenther  <rguenther@suse.de>
5295
5296         PR middle-end/36997
5297         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
5298
5299 2008-08-01  Richard Guenther  <rguenther@suse.de>
5300
5301         PR tree-optimization/36988
5302         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
5303         do not matter if that doesn't change volatile qualification.
5304
5305 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
5306
5307         * configure.ac: Do not generate libada-mk.  Do not subst
5308         host_cc_for_libada.
5309         * libada-mk.in: Remove.
5310         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
5311         * configure: Regenerate.
5312
5313 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
5314
5315         * tree-pass.h: Added comment about not dumping passes with name
5316         starting with star in struct opt_pass.
5317         * passes.c (register_dump_files_1): Don't do dump for a pass with
5318         name starting with star.
5319         * doc/passes.texi (Pass manager): Mention pass names and special
5320         meaning of star prefix to avoid dump.
5321
5322 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
5323
5324         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
5325         to MIPS64r2.
5326         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
5327         (ISA_MIPS64R2): New macro.
5328         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
5329         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
5330         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
5331         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
5332         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
5333         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
5334         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
5335         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
5336         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
5337         Move up to keep list alphabetically sorted.
5338         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
5339         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
5340         processor.
5341         * doc/invoke.texi (MIPS Options): Add -mips64r2.
5342         (-march=@var{arch}): Add mips64r2.
5343
5344 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5345
5346         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
5347
5348 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
5349
5350         * expr.c (expand_assignment): Check for complete type.
5351
5352 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5353
5354         PR debug/36977
5355         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
5356
5357         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
5358         for stack alignment.
5359
5360         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
5361
5362 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
5363
5364         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
5365         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
5366
5367 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
5368
5369         PR rtl-optimization/36419
5370         * dwarf2out.c (barrier_args_size): New variable.
5371         (compute_barrier_args_size, compute_barrier_args_size_1): New
5372         functions.
5373         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
5374         if not called yet in the current function, use barrier_args_size
5375         array to find the new args_size value.
5376         (dwarf2out_frame_debug): Free and clear barrier_args_size.
5377
5378 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5379
5380         PR debug/36980
5381         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
5382         rule 19.
5383
5384 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
5385
5386         PR debug/36976
5387         * dwarf2out.c (dwarf2out_args_size_adjust): New.
5388         (dwarf2out_stack_adjust): Use it.
5389         (dwarf2out_frame_debug_expr): Likewise.
5390
5391 2008-07-31  Richard Guenther  <rguenther@suse.de>
5392
5393         PR tree-optimization/36978
5394         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
5395         the generated condition.
5396
5397 2008-07-31  Richard Guenther  <rguenther@suse.de>
5398
5399         * passes.c (init_optimization_passes): Always call
5400         pass_early_warn_uninitialized.
5401         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
5402         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
5403         * doc/passes.texi (Warn for uninitialized variables): Adjust.
5404
5405 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
5406
5407         PR c/36970
5408         * builtins.c (maybe_emit_free_warning): New function.
5409         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
5410         maybe_emit_free_warning for BUILT_IN_FREE.
5411
5412         PR debug/36278
5413         * dwarf2out.c (get_context_die): New function.
5414         (force_decl_die, force_type_die): Use it.
5415         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
5416         returns NULL, force generation of DW_TAG_typedef and put that into
5417         DW_AT_import.
5418
5419         PR preprocessor/36649
5420         * c-pch.c (c_common_read_pch): Save and restore
5421         line_table->trace_includes across PCH restore.
5422
5423 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
5424
5425         PR ada/36554
5426         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
5427
5428 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
5429
5430         PR 36974
5431         * final.c (call_from_call_insn): Handle COND_EXEC.
5432
5433 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
5434
5435         * builtins.c (std_gimplify_va_arg_expr): Replace
5436         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
5437         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
5438
5439 2008-07-30  Joey Ye  <joey.ye@intel.com>
5440             H.J. Lu  <hongjiu.lu@intel.com>
5441
5442         * builtins.c (expand_builtin_setjmp_receiver): Replace
5443         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
5444         (expand_builtin_apply_args_1): Likewise.
5445         (expand_builtin_longjmp): Need DRAP for stack alignment.
5446         (expand_builtin_apply): Likewise.
5447
5448         * caller-save.c (setup_save_areas): Call assign_stack_local_1
5449         instead of assign_stack_local to allow alignment reduction.
5450
5451         * calls.c (emit_call_1): Need DRAP for stack alignment if
5452         return pops.
5453         (expand_call): Replace virtual_incoming_args_rtx with
5454         crtl->args.internal_arg_pointer.
5455         * stmt.c (expand_nl_goto_receiver): Likewise.
5456
5457         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
5458         alignment and store to stack_alignment_estimated and
5459         max_used_stack_slot_alignment.
5460         (expand_one_var): Likewise.
5461         (expand_stack_alignment): New function.
5462         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
5463         and stack_alignment_estimated fields in rtl_data.  Call
5464         expand_stack_alignment at end.
5465
5466         * defaults.h (INCOMING_STACK_BOUNDARY): New.
5467         (MAX_STACK_ALIGNMENT): Likewise.
5468         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
5469         (SUPPORTS_STACK_ALIGNMENT): Likewise.
5470
5471         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
5472         stack alignment when generating virtual registers.
5473
5474         * function.c (assign_stack_local): Renamed to ...
5475         (assign_stack_local_1): This.  Add a parameter to indicate
5476         if it is OK to reduce alignment.
5477         (assign_stack_local): Use it.
5478         (instantiate_new_reg): Instantiate virtual incoming args rtx
5479         to vDRAP if stack realignment and DRAP is needed.
5480         (assign_parms): Collect parameter/return type alignment and
5481         contribute to stack_alignment_estimated.
5482         (locate_and_pad_parm): Likewise.
5483         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
5484         with crtl->args.internal_arg_pointer.
5485
5486         * function.h (rtl_data): Add new field drap_reg,
5487         max_used_stack_slot_alignment, stack_alignment_estimated,
5488         stack_realign_needed, need_drap, stack_realign_processed and
5489         stack_realign_finalized.
5490         (stack_realign_fp): New macro.
5491         (stack_realign_drap): Likewise.
5492
5493         * global.c (compute_regsets): Frame pointer is needed when
5494         stack is realigned.  Can eliminate frame pointer when stack is
5495         realigned and dynamic realigned argument pointer isn't used.
5496
5497         * reload1.c (update_eliminables):  Frame pointer is needed
5498         when stack is realigned.
5499         (init_elim_table): Can eliminate frame pointer when stack is
5500         realigned and dynamic realigned argument pointer isn't used.
5501
5502         * rtl.h (assign_stack_local_1): Declare new funtion.
5503
5504         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
5505         (TARGET_GET_DRAP_RTX): Likewise.
5506         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
5507         TARGET_GET_DRAP_RTX.
5508
5509         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
5510
5511         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
5512         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
5513
5514 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
5515             H.J. Lu  <hongjiu.lu@intel.com>
5516
5517         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
5518         vdrap_reg, stack_realign and drap_reg_saved.
5519         (add_cfi): Don't allow redefining CFA when DRAP is used.
5520         (reg_save): Handle stack alignment.
5521         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
5522         alignment.  Don't generate DWARF information for (set fp sp)
5523         when DRAP is used.
5524         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
5525         to INVALID_REGNUM.
5526         (int_loc_descriptor): Move prototype forward.  Also define if
5527         DWARF2_UNWIND_INFO is true.
5528         (output_cfa_loc): Handle DW_CFA_expression.
5529         (build_cfa_aligned_loc): New.
5530         (based_loc_descr): Update assert for stack realign.  For local
5531         variables, use sp+offset when stack is aligned without drap and
5532         fp+offset when stack is aligned with drap.  For arguments, use
5533         cfa+offset when drap is used to align stack.
5534
5535 2008-07-30  Joey Ye  <joey.ye@intel.com>
5536             H.J. Lu  <hongjiu.lu@intel.com>
5537
5538         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
5539         Break long line.
5540         (ix86_gen_andsp): New.
5541         (ix86_user_incoming_stack_boundary): Likewise.
5542         (ix86_default_incoming_stack_boundary): Likewise.
5543         (ix86_incoming_stack_boundary): Likewise.
5544         (ix86_can_eliminate): Likewise.
5545         (find_drap_reg): Likewise.
5546         (ix86_update_stack_boundary): Likewise.
5547         (ix86_get_drap_rtx): Likewise.
5548         (ix86_finalize_stack_realign_flags): Likewise.
5549         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
5550         (TARGET_GET_DRAP_RTX): Likewise.
5551         (override_options): Overide option value for new options.
5552         (ix86_function_ok_for_sibcall): Remove check for
5553         force_align_arg_pointer.
5554         (ix86_handle_cconv_attribute): Likewise.
5555         (ix86_function_regparm): Likewise.
5556         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
5557         (ix86_va_start): Replace virtual_incoming_args_rtx with
5558         crtl->args.internal_arg_pointer.
5559         (ix86_select_alt_pic_regnum): Check DRAP register.
5560         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
5561         (ix86_compute_frame_layout): Compute frame layout wrt stack
5562         realignment.
5563         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
5564         (ix86_expand_prologue): Decide if stack realignment is needed
5565         and generate prologue code accordingly.
5566         (ix86_expand_epilogue): Generate epilogue code wrt stack
5567         realignment is really needed or not.
5568
5569         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
5570         (ABI_STACK_BOUNDARY): Likewise.
5571         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
5572         (STACK_REALIGN_DEFAULT): Likewise.
5573         (INCOMING_STACK_BOUNDARY): Likewise.
5574         (MAX_STACK_ALIGNMENT): Likewise.
5575         (ix86_incoming_stack_boundary): Likewise.
5576         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
5577         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
5578         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
5579         (machine_function): Remove force_align_arg_pointer.
5580
5581         * config/i386/i386.md (BX_REG): New.
5582         (R13_REG): Likewise.
5583
5584         * config/i386/i386.opt (mforce_drap): New.
5585         (mincoming-stack-boundary): Likewise.
5586         (mstackrealign): Add Init(-1).
5587
5588         * config/i386/i386-protos.h (ix86_can_eliminate): New
5589
5590 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
5591
5592         * doc/extend.texi: Update force_align_arg_pointer.
5593
5594         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
5595         -mstackrealign.
5596
5597         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
5598         (INCOMING_STACK_BOUNDARY): Likewise.
5599         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
5600         (TARGET_GET_DRAP_RTX): Likewise.
5601
5602 2008-07-30  Andreas Schwab  <schwab@suse.de>
5603
5604         PR rtl-optimization/36929
5605         * dse.c (replace_inc_dec): Use emit_insn_before instead of
5606         add_insn_before and fix argument order.
5607         (replace_inc_dec_mem): Handle NULL rtx.
5608
5609 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
5610
5611         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
5612         function.
5613         (arm_compute_initial_elimination_offset): Use it.
5614         (arm_compute_save_reg_mask): Include static chain save slot when
5615         calculating alignment.
5616         (arm_get_frame_offsets): Ditto.
5617         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
5618         that we can use to decrement the stack when the stack decrement
5619         could be too big for an immediate value in a single insn.
5620         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
5621
5622 2008-07-30  Richard Guenther  <rguenther@suse.de>
5623
5624         PR tree-optimization/36967
5625         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
5626         Release defs of statements we remove.
5627
5628 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
5629
5630         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
5631         instead of NULL_RTVEC.
5632
5633 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
5634
5635         PR target/35866
5636
5637         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
5638         vector modes.
5639
5640 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
5641
5642         * final.c (call_from_call_insn): New.
5643         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
5644
5645 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
5646
5647         * configure.ac: Substitute ADA_CFLAGS.
5648         * configure: Regenerate.
5649         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
5650         * Makefile.in: Remove mention of X_* variables.
5651         * config/pa/x-ada-hpux10: Remove.
5652         * config/pa/x-ada: Remove.
5653
5654         * doc/fragments.texi: Update.
5655
5656 2008-07-30  Olivier Hainque  <hainque@adacore.com>
5657
5658         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
5659         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
5660         __dso_handle explicitly here.
5661
5662 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5663
5664         PR 34389
5665         * c-typeck.c (build_binary_op): Encapsulate code into...
5666         * c-common.c (shorten_binary_op): ...this new function.
5667         (conversion_warning): Use the new function. Handle non-negative
5668         constant in bitwise-and.
5669         * c-common.h (shorten_binary_op): Declare.
5670
5671 2008-07-30  Olivier Hainque  <hainque@adacore.com>
5672
5673         * scan.c (make_sstring_space): Add explicit conversions of
5674         allocator's return value.
5675         * fix-header.c (recognized_function): Likewise.
5676
5677 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5678
5679         * doc/cpp.texi: Update to GFDL 1.2.
5680         * doc/gcc.texi: Do not list GPL as Invariant Section.
5681         * doc/gccint.texi: Likewise.  Update copyright years.
5682         * doc/install.texi: Update copyright years.
5683
5684 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
5685
5686         PR target/36955
5687         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
5688         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
5689
5690 2008-07-29  Jan Hubicka  <jh@suse.cz>
5691
5692         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
5693         (grokdeclarator): Likewise.
5694         * langhooks.c (lhd_warn_unused_global_decl): Use
5695         DECL_DECLARED_INLINE_P.
5696         * print-tree.c (print_node): Remove DECL_INLINE check.
5697
5698 2008-07-29  Richard Guenther  <rguenther@suse.de>
5699
5700         PR tree-optimization/36945
5701         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
5702         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
5703         Record invariant addresses un-decomposed.
5704         (copy_reference_ops_from_call): Record reference call
5705         arguments properly.  Simplify.
5706         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
5707         helper split out from ...
5708         (create_component_ref_by_pieces): ... here.  Simplify.
5709         Prepare for recursive invocation for call arguments.
5710         (create_expression_by_pieces): Adjust call to
5711         create_component_ref_by_pieces.
5712         (compute_avail): Process operand 2 of reference ops.
5713
5714 2008-07-29  Richard Guenther  <rguenther@suse.de>
5715
5716         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
5717
5718 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
5719
5720         * c-format.c (check_format_types): Revert unwanted checkin.
5721
5722 2008-07-29  Jan Hubicka  <jh@suse.cz>
5723
5724         * flags.h (flag_really_no_inline): Remove.
5725         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
5726         * toplev.c (flag_really_no_inline): Remove.
5727         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
5728         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
5729         (cgraph_decide_inlining_incrementally): Likewise.
5730         (compute_inline_parameters): Likewise.
5731         * opts.c (decode_options): Simplify.
5732         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
5733         * common.opt (finline): Initialize to 1.
5734         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
5735
5736 2008-07-29  Jan Hubicka  <jh@suse.cz>
5737
5738         * predict.c (always_optimize_for_size_p): New function.
5739         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5740         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5741         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
5742         functions.
5743         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
5744         * function.c (prepare_function_start): Set default profile.
5745         * function.h (rtl_data): Add maybe_hot_insn_p.
5746         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
5747         (construct_exit_block): Likewise.
5748         (tree_expand_cfg): Likewise.
5749         * basic-block.h
5750         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
5751         optimize_edge_for_size_p, optimize_edge_for_speed_p,
5752         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
5753         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
5754         Declare.
5755
5756 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5757
5758         PR 34985
5759         * c-decl.c (merge_decls): Merge USED flags.
5760
5761 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
5762
5763         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
5764         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
5765         next_stack, lab_false and lab_over trees.
5766
5767 2008-07-28  Richard Guenther  <rguenther@suse.de>
5768
5769         PR tree-optimization/36957
5770         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
5771         (useless_type_conversion_p): Remove.
5772         (types_compatible_p): Remove.
5773         * gimple.h (tree_ssa_useless_type_conversion): Declare.
5774         (useless_type_conversion_p): Declare.
5775         (types_compatible_p): Declare.
5776         (gimple_expr_type): Return the base type only if it is
5777         trivially convertible to the subtype.
5778
5779 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
5780
5781         * configure.ac: Use the m4_do macro to concatenate the warnings into
5782         one string in ACX_PROG_CC_WARNING_OPTS,
5783         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
5784         * configure: Regenerate.
5785
5786 2008-07-28  Richard Guenther  <rguenther@suse.de>
5787
5788         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
5789         (insert_fake_stores): Remove.
5790         (realify_fake_stores): Likewise.
5791         (execute_pre): Remove dead code.
5792         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
5793         (find_func_aliases): Deal with it here instead.
5794         Re-enable gcc_unreachable call.
5795
5796 2008-07-28  Richard Guenther  <rguenther@suse.de>
5797
5798         Merge from gimple-tuples-branch.
5799
5800         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
5801         * gimple.def: New file.
5802         * gsstruct.def: Likewise.
5803         * gimple-iterator.c: Likewise.
5804         * gimple-pretty-print.c: Likewise.
5805         * tree-gimple.c: Removed.  Merged into ...
5806         * gimple.c: ... here.  New file.
5807         * tree-gimple.h: Removed.  Merged into ...
5808         * gimple.h: ... here.  New file.
5809
5810         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
5811         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
5812         --enable-checking=gimple flag.
5813         * config.in: Likewise.
5814         * configure: Regenerated.
5815
5816         * tree-ssa-operands.h: Tuplified.
5817         * tree-vrp.c: Likewise.
5818         * tree-loop-linear.c: Likewise.
5819         * tree-into-ssa.c: Likewise.
5820         * tree-ssa-loop-im.c: Likewise.
5821         * tree-dump.c: Likewise.
5822         * tree-complex.c: Likewise.
5823         * cgraphbuild.c: Likewise.
5824         * tree-ssa-threadupdate.c: Likewise.
5825         * tree-ssa-loop-niter.c: Likewise.
5826         * tree-pretty-print.c: Likewise.
5827         * tracer.c: Likewise.
5828         * gengtype.c: Likewise.
5829         * tree-loop-distribution.c: Likewise.
5830         * tree-ssa-loop-unswitch.c: Likewise.
5831         * cgraph.c: Likewise.
5832         * cgraph.h: Likewise.
5833         * tree-ssa-loop-manip.c: Likewise.
5834         * value-prof.c: Likewise.
5835         * tree-ssa-loop-ch.c: Likewise.
5836         * tree-tailcall.c: Likewise.
5837         * value-prof.h: Likewise.
5838         * tree.c: Likewise.
5839         * tree.h: Likewise.
5840         * tree-pass.h: Likewise.
5841         * ipa-cp.c: Likewise.
5842         * tree-scalar-evolution.c: Likewise.
5843         * tree-scalar-evolution.h: Likewise.
5844         * target.h: Likewise.
5845         * lambda-mat.c: Likewise.
5846         * tree-phinodes.c: Likewise.
5847         * diagnostic.h: Likewise.
5848         * builtins.c: Likewise.
5849         * tree-ssa-alias-warnings.c: Likewise.
5850         * cfghooks.c: Likewise.
5851         * fold-const.c: Likewise.
5852         * cfghooks.h: Likewise.
5853         * omp-low.c: Likewise.
5854         * tree-ssa-dse.c: Likewise.
5855         * ipa-reference.c: Likewise.
5856         * tree-ssa-uncprop.c: Likewise.
5857         * toplev.c: Likewise.
5858         * tree-gimple.c: Likewise.
5859         * tree-gimple.h: Likewise.
5860         * tree-chrec.c: Likewise.
5861         * tree-chrec.h: Likewise.
5862         * tree-ssa-sccvn.c: Likewise.
5863         * tree-ssa-sccvn.h: Likewise.
5864         * cgraphunit.c: Likewise.
5865         * tree-ssa-copyrename.c: Likewise.
5866         * tree-ssa-ccp.c: Likewise.
5867         * tree-ssa-loop-ivopts.c: Likewise.
5868         * tree-nomudflap.c: Likewise.
5869         * tree-call-cdce.c: Likewise.
5870         * ipa-pure-const.c: Likewise.
5871         * c-format.c: Likewise.
5872         * tree-stdarg.c: Likewise.
5873         * tree-ssa-math-opts.c: Likewise.
5874         * tree-ssa-dom.c: Likewise.
5875         * tree-nrv.c: Likewise.
5876         * tree-ssa-propagate.c: Likewise.
5877         * ipa-utils.c: Likewise.
5878         * tree-ssa-propagate.h: Likewise.
5879         * tree-ssa-alias.c: Likewise.
5880         * gimple-low.c: Likewise.
5881         * tree-ssa-sink.c: Likewise.
5882         * ipa-inline.c: Likewise.
5883         * c-semantics.c: Likewise.
5884         * dwarf2out.c: Likewise.
5885         * expr.c: Likewise.
5886         * tree-ssa-loop-ivcanon.c: Likewise.
5887         * predict.c: Likewise.
5888         * tree-ssa-loop.c: Likewise.
5889         * tree-parloops.c: Likewise.
5890         * tree-ssa-address.c: Likewise.
5891         * tree-ssa-ifcombine.c: Likewise.
5892         * matrix-reorg.c: Likewise.
5893         * c-decl.c: Likewise.
5894         * tree-eh.c: Likewise.
5895         * c-pretty-print.c: Likewise.
5896         * lambda-trans.c: Likewise.
5897         * function.c: Likewise.
5898         * langhooks.c: Likewise.
5899         * ebitmap.h: Likewise.
5900         * tree-vectorizer.c: Likewise.
5901         * function.h: Likewise.
5902         * langhooks.h: Likewise.
5903         * tree-vectorizer.h: Likewise.
5904         * ipa-type-escape.c: Likewise.
5905         * ipa-type-escape.h: Likewise.
5906         * domwalk.c: Likewise.
5907         * tree-if-conv.c: Likewise.
5908         * profile.c: Likewise.
5909         * domwalk.h: Likewise.
5910         * tree-data-ref.c: Likewise.
5911         * tree-data-ref.h: Likewise.
5912         * tree-flow-inline.h: Likewise.
5913         * tree-affine.c: Likewise.
5914         * tree-vect-analyze.c: Likewise.
5915         * c-typeck.c: Likewise.
5916         * gimplify.c: Likewise.
5917         * coretypes.h: Likewise.
5918         * tree-ssa-phiopt.c: Likewise.
5919         * calls.c: Likewise.
5920         * tree-ssa-coalesce.c: Likewise.
5921         * tree.def: Likewise.
5922         * tree-dfa.c: Likewise.
5923         * except.c: Likewise.
5924         * except.h: Likewise.
5925         * cfgexpand.c: Likewise.
5926         * tree-cfgcleanup.c: Likewise.
5927         * tree-ssa-pre.c: Likewise.
5928         * tree-ssa-live.c: Likewise.
5929         * tree-sra.c: Likewise.
5930         * tree-ssa-live.h: Likewise.
5931         * tree-predcom.c: Likewise.
5932         * lambda.h: Likewise.
5933         * tree-mudflap.c: Likewise.
5934         * ipa-prop.c: Likewise.
5935         * print-tree.c: Likewise.
5936         * tree-ssa-copy.c: Likewise.
5937         * ipa-prop.h: Likewise.
5938         * tree-ssa-forwprop.c: Likewise.
5939         * ggc-page.c: Likewise.
5940         * c-omp.c: Likewise.
5941         * tree-ssa-dce.c: Likewise.
5942         * tree-vect-patterns.c: Likewise.
5943         * tree-ssa-ter.c: Likewise.
5944         * tree-nested.c: Likewise.
5945         * tree-ssa.c: Likewise.
5946         * lambda-code.c: Likewise.
5947         * tree-ssa-loop-prefetch.c: Likewise.
5948         * tree-inline.c: Likewise.
5949         * tree-inline.h: Likewise.
5950         * tree-iterator.c: Likewise.
5951         * tree-optimize.c: Likewise.
5952         * tree-ssa-phiprop.c: Likewise.
5953         * tree-vect-transform.c: Likewise.
5954         * tree-object-size.c: Likewise.
5955         * tree-outof-ssa.c: Likewise.
5956         * cfgloop.c: Likewise.
5957         * system.h: Likewise.
5958         * tree-profile.c: Likewise.
5959         * cfgloop.h: Likewise.
5960         * c-gimplify.c: Likewise.
5961         * c-common.c: Likewise.
5962         * tree-vect-generic.c: Likewise.
5963         * tree-flow.h: Likewise.
5964         * c-common.h: Likewise.
5965         * basic-block.h: Likewise.
5966         * tree-ssa-structalias.c: Likewise.
5967         * tree-switch-conversion.c: Likewise.
5968         * tree-ssa-structalias.h: Likewise.
5969         * tree-cfg.c: Likewise.
5970         * passes.c: Likewise.
5971         * ipa-struct-reorg.c: Likewise.
5972         * ipa-struct-reorg.h: Likewise.
5973         * tree-ssa-reassoc.c: Likewise.
5974         * cfgrtl.c: Likewise.
5975         * varpool.c: Likewise.
5976         * stmt.c: Likewise.
5977         * tree-ssanames.c: Likewise.
5978         * tree-ssa-threadedge.c: Likewise.
5979         * langhooks-def.h: Likewise.
5980         * tree-ssa-operands.c: Likewise.
5981         * config/alpha/alpha.c: Likewise.
5982         * config/frv/frv.c: Likewise.
5983         * config/s390/s390.c: Likewise.
5984         * config/m32c/m32c.c: Likewise.
5985         * config/m32c/m32c-protos.h: Likewise.
5986         * config/spu/spu.c: Likewise.
5987         * config/sparc/sparc.c: Likewise.
5988         * config/i386/i386.c: Likewise.
5989         * config/sh/sh.c: Likewise.
5990         * config/xtensa/xtensa.c: Likewise.
5991         * config/stormy16/stormy16.c: Likewise.
5992         * config/ia64/ia64.c: Likewise.
5993         * config/rs6000/rs6000.c: Likewise.
5994         * config/pa/pa.c: Likewise.
5995         * config/mips/mips.c: Likewise.
5996
5997 2008-07-28  Simon Baldwin  <simonb@google.com>
5998
5999         * c-pragma.c (handle_pragma_message): New function.
6000         (init_pragma): Register handle_pragma_message.
6001         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
6002         documentation.
6003
6004 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
6005
6006         PR tree-optimization/35252
6007         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
6008         REALPART_EXPR to be considered as same load operation.
6009
6010 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
6011
6012         PR tree-optimization/36830
6013         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
6014         (expressions_equal_p): Return false if only one operand is null.
6015
6016 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
6017
6018         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
6019         version requirements.
6020
6021 2008-07-26  Olivier Hainque  <hainque@adacore.com>
6022
6023         * collect2.c (symkind): New enum.  Symbol kinds we care about.
6024         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
6025         code and head comment accordingly.
6026         (scan_prog_file): Use symkind names instead of bare integers.
6027
6028 2008-07-25  Jan Hubicka  <jh@suse.cz>
6029
6030         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
6031         DECL_INLINE.
6032         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
6033         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
6034         * dojump.c (clear_pending_stack_adjust): Likewise.
6035         * print-tree.c (print_node): Ignore DECL_INLINE.
6036         * tree-inline.c (inlinable_function_p): Likewise.
6037
6038 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
6039
6040         * doc/extend.texi (hot attribute): Document that the hot attribute
6041         turns on -O3 for some ports.
6042         (cold attribute): Document that the cold attribute turns on -Os
6043         for some ports
6044
6045         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
6046         reflect function specific option support.
6047
6048         * target.h (struct target_option_hooks): Add fields to say whether
6049         the cold attribute implies -Os and the hot attribute implies -O3.
6050
6051         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
6052         By default, do not turn on -Os for cold functions.
6053         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
6054         not turn on -O3 for hot functions.
6055
6056         * c-common.c (handle_hot_attribute): Use target hook to determine
6057         if hot functions should enable -O3.
6058         (handle_cold_attribute): Use target hook to determine if cold
6059         functions should enable -Os.
6060
6061         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
6062         (override_options): Move disable scheduling to
6063         optimization_options.
6064         (optimization_options): Disable scheduling here, not
6065         override_options.
6066         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6067         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6068
6069         * config/ia64/ia64.c (ia64_override_options): Move setting
6070         scheduling flags to ia64_optimization_options.
6071         (ia64_optimization_options): Disable scheduling options here, and
6072         not in ia64_override_options.
6073         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6074         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
6075
6076 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
6077
6078         PR target/36936
6079         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
6080
6081 2008-07-25  Martin Jambor  <mjambor@suse.cz>
6082
6083         PR tree-optimization/36926
6084         * ipa-prop.c (ipa_analyze_call_uses): Call
6085         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
6086
6087 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
6088
6089         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
6090         movv2si_internal): Add mem = reg alternative.
6091
6092 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
6093
6094         PR bootstrap/36918
6095         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
6096         DEFAULT_PCC_STRUCT_RETURN to 127.
6097
6098 2008-07-24  Jan Hubicka  <jh@suse.cz>
6099
6100         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
6101         (build_cgraph_edges): Likewise.
6102         * cgraph.c (cgraph_node): Do not update assembler hash.
6103         (cgraph_remove_node): Drop non-unit-at-a-time code.
6104         * tree-pass.h (pass_O0_always_inline): Remove.
6105         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
6106         * toplev.c (process_options): Flag unit-at-a-time does not imply
6107         no section anchors.
6108         * cgraphunit.c: Update comments.
6109         (decide_is_function_needed): Drop non-unit-at-a-time mode.
6110         (cgraph_assemble_pending_functions): Remove.
6111         (cgraph_reset_node): Drop non-unit-at-a-time code.
6112         (cgraph_finalize_function): Likewise.
6113         (cgraph_analyze_function): Likewise.
6114         (cgraph_finalize_compilation_unit): Likewise.
6115         (cgraph_expand_function): Likewise.
6116         (cgraph_optimize): Likesise.
6117         (save_inline_function_body): Likewise.
6118         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
6119         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
6120         * ipa-inline.c: Update comments.
6121         (enum inlining_mode): remove INLINE_SPEED.
6122         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
6123         (cgraph_mark_inline_edge): Likewise.
6124         (try_inline): Likewise.
6125         (cgraph_decide_inlining_incrementally): Likewise.
6126         (cgraph_gate_inlining): Remove.
6127         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
6128         (cgraph_gate_early_inlining): Likewise.
6129         (gate_inline_passes): Remove.
6130         (pass_inline_parameters, pass_ipa_inline): Remove gates.
6131         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
6132         pass_O0_always_inline): Remove.
6133         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
6134         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
6135         * opts.c (no_unit_at_a_time_default): Remove.
6136         (decode_options): Remove flag_unit_at_a_time reset and warning.
6137         * opts.h (no_unit_at_a_time_default): Remove.
6138         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
6139         early in GNU dialect.
6140         (merge_decls): Update comment; drop unit-at-a-time check.
6141         (finish_decl): Likewise.
6142         (grok_declaration): Remove flag_inline_trees code.
6143         (finish_functions): Return on function returning non-void on all
6144         statics.
6145         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
6146         * cfgexpand.c (expand_one_static_var): Remove.
6147         (expand_one_var): Remove expand_one_static_var call.
6148         (expand_used_vars_for_block): Remove flag_unit_a_time check.
6149         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
6150         and flag_unit_at_a-time compatibility checks.
6151         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
6152         * tree-inline.c (flag_inline_trees): Remove.
6153         (inlinable_function_p): Don't check it.
6154         (expand_call_inline): Remove non-unit-at-a-time code.
6155         * tree-inline.h (flag_inline_trees): Remove.
6156         * tree-optimize.c (execute_early_local_optimizations): Remove
6157         unit-at-a-time checks.
6158         (tree_rest_of_compilation): Likewise.
6159         * combine.c (setup_incoming_promotions): Likewise.
6160         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
6161         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
6162         * passes.c (pass_inline_parameters): Update comments; remove
6163         O0_alwaysinline pass.
6164         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
6165         (execute_one_pass): Likewise.
6166         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
6167         (ix86_function_sseregparm): Likewise.
6168         * arm.c (arm_function_in_section_p): Likewise.
6169         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
6170         * varpool.c: Update comments.
6171         (decide_is_variable_needed): Remove unit-at-a-time checks.
6172         (varpool_finalize_decl): Likewise.
6173
6174 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
6175
6176         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
6177         to 2 instead of -1.
6178         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
6179
6180 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
6181
6182         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
6183         imp symbol extension.
6184
6185         2008-07-23  Ian Lance Taylor  <iant@google.com>
6186
6187         * tree-vrp.c (infer_value_range): Ignore asm statements when
6188         looking for memory accesses for -fdelete-null-pointer-checks.
6189
6190 2008-07-24  Ben Elliston  <bje@au.ibm.com>
6191
6192         * config/spu/spu-c.c (__vector_keyword): New variable.
6193         (vector_keyword): Likewise.
6194         (spu_categorize_keyword): New function.
6195         (spu_macro_to_expand): Likewise.
6196         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
6197         compiling an ISO C dialect.
6198
6199 2008-07-24  Ben Elliston  <bje@au.ibm.com>
6200
6201         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
6202         conventional usage.
6203
6204 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
6205
6206         * configure: Regenerate.
6207         * configure.ac: Require texinfo 4.7.
6208         * doc/install.texi: Document texinfo 4.7 requirement.
6209
6210 2008-07-23  Martin Jambor  <mjambor@suse.cz>
6211
6212         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
6213         rather than for DECL_SAVED_TREE.
6214         * ipa-prop.c: Include diagnostic.h.
6215         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
6216         thoroughly.
6217         (ipa_detect_param_modifications): Function rewritten from scratch.
6218         (ipa_compute_jump_functions): Changed accesses to modification flags.
6219         (ipa_free_node_params_substructures): Update flags destruction.
6220         (ipa_node_duplication_hook): Update flags duplication.
6221         (ipa_print_all_params_modified): Updated flag access.
6222         * ipa-prop.h (struct ipa_param_flags): New structure.
6223         (struct ipa_node_params): New field modification_analysis_done,
6224         modified_flags changed into param_flags.
6225         (ipa_is_ith_param_modified): Changed to use new flags.
6226         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
6227
6228         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
6229         ipa-cp.c and split into two functions.
6230         (ipa_print_node_jump_functions): New function.
6231         (compute_scalar_jump_functions): New function.
6232         (type_like_member_ptr_p): New function.
6233         (compute_pass_through_member_ptrs): New function.
6234         (fill_member_ptr_cst_jump_function): New function.
6235         (determine_cst_member_ptr): New function.
6236         (compute_cst_member_ptr_arguments): New function.
6237         (ipa_compute_jump_functions): Complete rewrite.
6238         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
6239         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
6240         (struct ipa_member_ptr_cst): New structure.
6241         (union jump_func_value): New field member_cst.
6242         * ipa-cp.c (ipcp_lat_is_insertable): New function.
6243         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
6244         jump function types.
6245         (ipcp_print_all_lattices): Slight fprintf rearrangement.
6246         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
6247         instead of ipcp_print_all_jump_functions.
6248         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
6249         only for replacable scalars.
6250
6251         * doc/invoke.texi (Optimize options): Add description of
6252         -findirect-inlining.
6253         * common.opt (flag_indirect_inlining): New flag.
6254         * opts.c (decode_options): Set flag_indirect_inlining when
6255         optimize >= 3.
6256
6257         * ipa-inline.c: Include ipa-prop.h.
6258         (inline_indirect_intraprocedural_analysis): New function.
6259         (inline_generate_summary): Allocate parameter and argument info
6260         structures, call inline_indirect_intraprocedural_analysis on each
6261         node when doing indirect inlining and deallocate indirect inlining
6262         data structures in the end.
6263         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
6264         (free_all_ipa_structures_after_iinln): New function.
6265         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
6266         done.
6267         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
6268
6269         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
6270         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
6271         of computing the frequency separately.
6272         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
6273         of computing the frequency separately.
6274         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
6275         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
6276         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
6277         (ipa_get_stmt_member_ptr_load_param): New function.
6278         (ipa_is_ssa_with_stmt_def): New function.
6279         (ipa_note_param_call): New function.
6280         (ipa_analyze_call_uses): New function.
6281         (ipa_analyze_stmt_uses): New function.
6282         (ipa_analyze_params_uses): New function.
6283         (ipa_free_node_params_substructures): Also free the param_calls linked
6284         list.
6285         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
6286         (ipa_print_node_param_flags): New function.
6287         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
6288         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
6289         * ipa-prop.h (struct ipa_param_flags): New field called.
6290         (struct ipa_param_call_note): New structure.
6291         (struct ipa_node_params): New fields param_calls and
6292         uses_analysis_done.
6293         (ipa_is_ith_param_called): New function.
6294         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
6295         ipa_analyze_params_uses and dump parameter flags.
6296
6297         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
6298         ipa_propagate_indirect_call_infos if performing indirect inlining,
6299         pass a new parameter new_edges to it.
6300         (add_new_edges_to_heap): New fucntion.
6301         (cgraph_decide_inlining_of_small_functions): New vector
6302         new_indirect_edges for newly found indirect edges , call
6303         ipa_propagate_indirect_call_infos after inlining.
6304         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
6305         inlining if performing indirect inlining.  Call
6306         free_all_ipa_structures_after_iinln when doing so too.
6307         (inline_generate_summary): Do not call
6308         free_all_ipa_structures_after_iinln here.
6309         * ipa-prop.c (update_jump_functions_after_inlining): New function.
6310         (print_edge_addition_message): New function.
6311         (update_call_notes_after_inlining): New function.
6312         (propagate_info_to_inlined_callees): New function.
6313         (ipa_propagate_indirect_call_infos): New function.
6314         * ipa-prop.h: Include cgraph.h
6315         (struct ipa_param_call_note): Fields reordered, new field processed.
6316         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
6317         flag indirect_call.
6318         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
6319         rediscovered call statements.
6320         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
6321         (dump_cgraph_node): Dump also the indirect_call flag.
6322         (cgraph_clone_edge): Copy also the indirect_call flag.
6323         * tree-inline.c (copy_bb): Do not check for fndecls from call
6324         expressions, check for edge availability when moving clones.
6325         (get_indirect_callee_fndecl): New function.
6326         (expand_call_inline): If callee declaration is not apprent from
6327         the statement, try calling get_indirect_callee_fndecl.  Do not
6328         issue warnings or call sorry when not inlinings an indirect edge.
6329         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
6330
6331         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
6332         bit more frandly to matching.
6333         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
6334         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
6335         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
6336
6337 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6338
6339         PR 36907
6340         * opth-gen.awk: Suppress function specific features when building
6341         target libraries.
6342         * optc-gen.awk: Ditto.
6343
6344 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6345
6346         PR 35058
6347         * diagnostic.c (pedwarn): Add opt parameter.
6348         (pedwarn0): New.
6349         * c-tree.h (pedwarn_init): Add opt parameter.
6350         (pedwarn_c90): Likewise.
6351         (pedwarn_c99): Likewise.
6352         * c-errors.c (pedwarn_c99): Likewise.
6353         (pedwarn_c90): Likewise.
6354         * toplev.h (pedwarn): Update declaration.
6355         (pedwarn0): Declare.
6356         * c-lex.c: All calls to pedwarn changed.
6357         * builtins.c: All calls to pedwarn changed.
6358         * toplev.c: All calls to pedwarn changed.
6359         * c-decl.c: All calls to pedwarn changed.
6360         * c-typeck.c: All calls to pedwarn changed.
6361         * c-common.c: All calls to pedwarn changed.
6362         * c-parser.c: All calls to pedwarn changed.
6363
6364 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6365             Karthik Kumar  <karthikkumar@gmail.com>
6366
6367         * attribs.c (file scope): Include c-common.h.
6368         (decl_attributes): Add support for #pragma GCC optimize and
6369         #pragma GCC option.
6370
6371         * targhooks.c (default_can_inline_p): New function that is the
6372         default for the TARGET_CAN_INLINE_P target hook.
6373
6374         * targhooks.h (default_can_inline_p): Add declaration.
6375
6376         * tree.c (cl_optimization_node): New static tree for building
6377         OPTIMIZATION_NODE tree.
6378         (cl_target_option_node): New static tree for building
6379         TARGET_OPTION_NODE tree.
6380         (cl_option_hash_table): New hash table for hashing
6381         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6382         (cl_option_hash_hash): New function to provide the hash value for
6383         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6384         (cl_option_hash_eq): New function to provide an equality test for
6385         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
6386         (tree_code_size): Add support for OPTIMIZATION_NODE and
6387         TARGET_OPTION_NODE trees.
6388         (tree_code_structure): Add support for OPTIMIZATION_NODE and
6389         TARGET_OPTION_NODE trees.
6390         (build_optimization_node): Build a tree that has all of the
6391         current optimization options.
6392         (build_target_option_node): Build a tree that has the target
6393         options that might be changed on a per function basis.
6394
6395         * tree.h (file scope): Include options.h.
6396         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
6397         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
6398         (TREE_OPTIMIZATION): Ditto.
6399         (TREE_TARGET_SPECIFIC): Ditto.
6400         (struct tree_function_decl): Add fields for remembering the
6401         current optimization options and target specific options.
6402         (struct tree_optimization_option): New tree variant that remembers
6403         the optimization options.
6404         (struct tree_target_option): New tree variant that remembers the
6405         target specific flags that might change for compiling a particular
6406         function.
6407         (union tree_node): Include tree_optimization_option and
6408         tree_target_option fields.
6409         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
6410         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
6411         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
6412         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
6413         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
6414         optimization and target options.
6415         (optimization_default_node): New macro to refer to global_trees
6416         field.
6417         (optimization_current_node): Ditto.
6418         (optimization_cold_node): Ditto.
6419         (optimization_hot_node): Ditto.
6420         (target_option_default_node): Ditto.
6421         (target_option_current_node): Ditto.
6422         (current_option_pragma): Ditto.
6423         (current_optimize_pragma): Ditto.
6424
6425         * target.h (struct gcc_target): Add valid_option_attribute_p,
6426         target_option_save, target_option_restore, target_option_print,
6427         target_option_pragma_parse, and can_inline_p hooks.
6428
6429         * toplev.h (parse_optimize_options): Add declaration.
6430         (fast_math_flags_struct_set_p): Ditto.
6431
6432         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
6433         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
6434         optimize is used.
6435
6436         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
6437         tree_can_inline_p hook to see if one function can inline another.
6438         (cgraph_decide_inlining): Ditto.
6439         (cgraph_decide_inlining_incrementally): Ditto.
6440
6441         * opts.c (decode_options): Add support for running multiple times
6442         to allow functions with different target or optimization options
6443         than was specified on the command line.
6444         (fast_math_flags_struct_set_p): New function that is similar to
6445         fast_math_flags_set_p, except it uses the values in the
6446         cl_optimization structure instead of global variables.
6447
6448         * optc-gen.awk: Add support for TargetSave to allow a back end to
6449         declare new fields that need to be saved when using function
6450         specific options.  Include flags.h and target.h in the options.c
6451         source.  Add support for Save to indicate which options can be set
6452         for individual functions.  Generate cl_optimize_save,
6453         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
6454         cl_target_option_restore, cl_target_option_print functions to
6455         allow functions to use different optimization or target options.
6456
6457         * opt-functions.awk (var_type_struct): Return the type used for
6458         storing the field in a structure.
6459
6460         * opth-gen.awk: Add support for TargetSave to allow a back end to
6461         declare new fields that need to be saved when using function
6462         specific options.  Add support for Save to indicate which options
6463         can be set for individual functions.  Only generate one extern for
6464         Mask fields.  Generate cl_optimization and cl_target_option
6465         structures to remember optimization and target options.
6466
6467         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
6468         collecting new tree nodes.
6469         (TS_TARGET_OPTION): Ditto.
6470
6471         * c-decl.c (merge_decls): Merge function specific target and
6472         optimization options.
6473
6474         * function.c (invoke_set_current_function_hook): If the function
6475         uses different optimization options, change the global variables
6476         to reflect this.
6477
6478         * coretypes.h (struct cl_optimization): Add forward reference.
6479         (struct cl_target_option): Ditto.
6480
6481         * c-pragma.c (option_stack): New static vector to remember the
6482         current #pragma GCC option stack.
6483         (handle_pragma_option): New function to support #pragma GCC option
6484         to change target options.
6485         (optimize_stack): New static vector to remember the current
6486         #pragma GCC optimize stack.
6487         (handle_pragma_optimize): New function to support #pragma GCC
6488         optimize to change optimization options.
6489         (init_pragma): Add support for #pragma GCC optimize and #pragma
6490         GCC option.
6491
6492         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
6493         optimization options.
6494         (TARGET_OPTION_NODE): New tree code for remembering certain target
6495         options.
6496
6497         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
6498         TARGET_OPTION_NODE trees.
6499
6500         * common.opt (-O): Add Optimization flag.
6501         (-Os): Ditto.
6502         (-fmath-errno): Ditto.
6503         (-falign-functions): Add UInteger flag to make sure flag gets full
6504         int in cl_optimization structure.
6505         (-falign-jumps): Ditto.
6506         (-falign-labels): Ditto.
6507         (-falign-loops): Ditto.
6508         (-fsched-stalled-insns): Ditto.
6509         (-fsched-stalled-insns-dep): Ditto.
6510
6511         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
6512         definition.
6513         (TARGET_OPTION_SAVE): Ditto.
6514         (TARGET_OPTION_RESTORE): Ditto.
6515         (TARGET_OPTION_PRINT): Ditto.
6516         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
6517         (TARGET_CAN_INLINE_P): Ditto.
6518         (TARGET_INITIALIZER): Add new hooks.
6519
6520         * tree-inline.c (tree_can_inline_p): New function to determine
6521         whether one function can inline another.  Check if the functions
6522         use compatible optimization options, and also call the backend
6523         can_inline_p hook.
6524
6525         * tree-inline.h (tree_can_inline_p): Add declaration.
6526
6527         * c-common.c (c_common_attribute): Add support for option and
6528         optimize attributes.
6529         (handle_option_attribute): Add support for the option attribute to
6530         allow the user to specify different target options for compiling a
6531         specific function.
6532         (handle_optimize_attribute): Add support for the optimize
6533         attribute to allow the user to specify different optimization
6534         options for compiling a specific function.
6535         (handle_hot_attribute): Turn on -O3 optimization for this one
6536         function if it isn't the default optimization level.
6537         (handle_cold_attribute): Turn on -Os optimization for this one
6538         function if it insn't the default optimization.
6539         (const_char_p): New const char * typedef.
6540         (optimize_args): New static vector to remember the optimization
6541         arguments.
6542         (parse_optimize_options): New function to set up the optimization
6543         arguments from either the optimize attribute or #pragma GCC optimize.
6544
6545         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
6546         (builtin_define_std): Ditto.
6547
6548         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
6549         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
6550         (x86_64-*-*): Ditto.
6551
6552         * Makefile.in (TREE_H): Add options.h.
6553         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
6554
6555         * doc/extend.texi (option attribute): Document new attribute.
6556         (optimize attribute): Ditto.
6557         (hot attribute): Document hot attribute sets -O3.
6558         (cold attribute): Document cold attribute sets -Os.
6559         (#pragma GCC option): Document new pragma.
6560         (#pragma GCC optimize): Ditto.
6561
6562         * doc/options.texi (TargetSave): Document TargetSave syntax.
6563         (UInteger): Document UInteger must be used for certain flags.
6564         (Save): Document Save option to create target specific options
6565         that can be saved/restored on a function specific context.
6566
6567         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
6568         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
6569
6570         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
6571         (TARGET_OPTION_SAVE): Ditto.
6572         (TARGET_OPTION_RESTORE): Ditto.
6573         (TARGET_OPTION_PRINT): Ditto.
6574         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
6575         (TARGET_CAN_INLINE_P): Ditto.
6576
6577         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
6578         -mfpmath=sse,387.
6579         (-mfpmath=both): Ditto.
6580
6581 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
6582             Karthik Kumar  <karthikkumar@gmail.com>
6583
6584         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
6585         (TARGET_POPCNT): Ditto.
6586         (TARGET_SAHF): Ditto.
6587         (TARGET_AES): Ditto.
6588         (TARGET_PCLMUL): Ditto.
6589         (TARGET_CMPXCHG16B): Ditto.
6590         (TARGET_RECIP): Move switch into target_flags.
6591         (TARGET_FUSED_MADD): Ditto.
6592         (ix86_arch_features): Make an unsigned char type.
6593         (ix86_tune_features): Ditto.
6594         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
6595         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
6596         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
6597
6598         * config/i386/i386.opt (arch): New TargetSave field to define
6599         fields that need to be saved for function specific option support.
6600         (tune): Ditto.
6601         (fpmath): Ditto.
6602         (branch_cost): Ditto.
6603         (ix86_isa_flags_explicit): Ditto.
6604         (tune_defaulted): Ditto.
6605         (arch_specified): Ditto.
6606         (-m128-long-double): Add Save flag to save option for target
6607         specific option support.
6608         (-m80387): Ditto.
6609         (-maccumulate-outgoing-args): Ditto.
6610         (-malign-double): Ditto.
6611         (-malign-stringops): Ditto.
6612         (-mfancy-math-387): Ditto.
6613         (-mhard-float): Ditto.
6614         (-mieee-fp): Ditto.
6615         (-minline-all-stringops): Ditto.
6616         (-minline-stringops-dynamically): Ditto.
6617         (-mms-bitfields): Ditto.
6618         (-mno-align-stringops): Ditto.
6619         (-mno-fancy-math-387): Ditto.
6620         (-mno-push-args): Ditto.
6621         (-mno-red-zone): Ditto.
6622         (-mpush-args): Ditto.
6623         (-mred-zone): Ditto.
6624         (-mrtd): Ditto.
6625         (-msseregparm): Ditto.
6626         (-mstack-arg-probe): Ditto.
6627         (-m32): Ditto.
6628         (-m64): Ditto.
6629         (-mmmx): Ditto.
6630         (-m3dnow): Ditto.
6631         (-m3dnowa): Ditto.
6632         (-msse): Ditto.
6633         (-msse2): Ditto.
6634         (-msse3): Ditto.
6635         (-msse4.1): Ditto.
6636         (-msse4.2): Ditto.
6637         (-msse4): Ditto.
6638         (-mno-sse4): Ditto.
6639         (-msse4a): Ditto.
6640         (-msse5): Ditto.
6641         (-mrecip): Move flag into target_flags.
6642         (-mcld): Ditto.
6643         (-mno-fused-madd): Ditto.
6644         (-mfused-madd): Ditto.
6645         (-mabm): Move flag into ix86_isa_flags.
6646         (-mcx16): Ditto.
6647         (-mpopcnt): Ditto.
6648         (-msahf): Ditto.
6649         (-maes): Ditto.
6650         (-mpclmul): Ditto.
6651
6652         * config/i386/i386-c.c: New file for #pragma support.
6653         (ix86_target_macros_internal): New function to #define or #undef
6654         target macros based when the user uses the #pragma GCC option to
6655         change target options.
6656         (ix86_pragma_option_parse): New function to add #pragma GCC option
6657         support.
6658         (ix86_target_macros): Move defining the target macros here from
6659         TARGET_CPU_CPP_BUILTINS in i386.h.
6660         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
6661         defined, initialize any subtarget #pragmas.
6662
6663         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
6664         REGISTER_TARGET_PRAGMAS.
6665
6666         * config/i386/t-i386: New file for x86 dependencies.
6667         (i386.o): Make dependencies mirror the include files used.
6668         (i386-c.o): New file, add dependencies.
6669
6670         * config/i386/i386-protos.h (override_options): Add bool argument.
6671         (ix86_valid_option_attribute_tree): Add declaration.
6672         (ix86_target_macros): Ditto.
6673         (ix86_register_macros): Ditto.
6674
6675         * config/i386/i386.c (ix86_tune_features): Move initialization of
6676         the target masks to initial_ix86_tune_features to allow functions
6677         to have different target options.  Make type unsigned char,
6678         instead of unsigned int.
6679         (initial_ix86_tune_features): New static vector to hold processor
6680         masks for the tune variables.
6681         (ix86_arch_features): Move initialization of the target masks to
6682         initial_ix86_arch_features to allow functions to have different
6683         target options.  Make type unsigned char, instead of unsigned int.
6684         (initial_ix86_arch_features): New static vector to hold processor
6685         masks for the arch variables.
6686         (enum ix86_function_specific_strings): New enum to describe the
6687         string options used for attribute((option(...))).
6688         (ix86_target_string): New function to return a string that
6689         describes the target options.
6690         (ix86_debug_options): New function to print the current options in
6691         the debugger.
6692         (ix86_function_specific_save): New function hook to save the
6693         function specific global variables in the cl_target_option structure.
6694         (ix86_function_specific_restore): New function hook to restore the
6695         function specific variables from the cl_target_option structure to
6696         the global variables.
6697         (ix86_function_specific_print): New function hook to print the
6698         target specific options in the cl_target_option structure.
6699         (ix86_valid_option_attribute_p): New function hook to validate
6700         attribute((option(...))) arguments.
6701         (ix86_valid_option_attribute_tree): New function that is common
6702         code between attribute((option(...))) and #pragma GCC option
6703         support that parses the options and returns a tree holding the options.
6704         (ix86_valid_option_attribute_inner_p): New helper function for
6705         ix86_valid_option_attribute_tree.
6706         (ix86_can_inline_p): New function hook to decide if one function
6707         can inline another on a target specific basis.
6708         (ix86_set_current_function); New function hook to switch target
6709         options if the user used attribute((option(...))) or #pragma GCC
6710         option.
6711         (ix86_tune_defaulted): Move to static file scope from
6712         override_options.
6713         (ix86_arch_specified): Ditto.
6714         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
6715         ix86_isa_flags.
6716         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
6717         (OPTION_MASK_ISA_ABM_SET): Ditto.
6718         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
6719         (OPTION_MASK_ISA_CX16_SET): Ditto.
6720         (OPTION_MASK_ISA_SAHF_SET): Ditto.
6721         (OPTION_MASK_ISA_AES_UNSET): Ditto.
6722         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
6723         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
6724         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
6725         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
6726         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
6727         (struct ptt): Move to static file scope from override_options.
6728         (processor_target_table): Ditto.
6729         (cpu_names): Ditto.
6730         (ix86_handle_option): Add support for options that are now isa options.
6731         (override_options): Add support for declaring functions that
6732         support different target options than were specified on the
6733         command line.  Move struct ptt, processor_target_table, cpu_names,
6734         ix86_tune_defaulted, ix86_arch_specified to static file scope.
6735         Add bool argument.  Fix up error messages so the appropriate error
6736         is given for either command line or attribute.
6737         (ix86_previous_fndecl): New static to remember previous function
6738         declaration to see if we need to change target options.
6739         (ix86_builtins_isa): New array to record the ISA of each builtin
6740         function.
6741         (def_builtin): Always create the builtin function, even if the
6742         current ISA doesn't support it.
6743         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
6744         tests for those builtins.
6745         (ix86_init_builtins): Remove TARGET_MMX test for calling
6746         ix86_init_mmx_sse_builtins.
6747         (ix86_expand_builtin): If the current ISA doesn't support a given
6748         builtin, signal an error.
6749         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
6750         (TARGET_SET_CURRENT_FUNCTION): Ditto.
6751         (TARGET_OPTION_SAVE): Ditto.
6752         (TARGET_OPTION_RESTORE): Ditto.
6753         (TARGET_OPTION_PRINT): Ditto.
6754         (TARGET_CAN_INLINE_P): Ditto.
6755
6756 2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
6757
6758         * c-typeck.c (build_external_ref): Don't call assemble_external.
6759         * final.c (output_operand): Call assemble_external.
6760
6761 2008-07-21  DJ Delorie  <dj@redhat.com>
6762
6763         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
6764         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
6765
6766 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6767
6768         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
6769         original insn and splitter contents into ...
6770         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
6771         flag_unsafe_math_optimizations.  Add dummy scratch register.
6772         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
6773         !flag_unsafe_math_optimizations.  Returns number with next
6774         highest magnitude if this is still less or equal to the true
6775         quotient in magnitude.
6776
6777 2008-07-21  Rafael Avila de Espindola  <espindola@google.com>
6778
6779         * Makefile.in: Replace toplev.h with TOPLEV_H.
6780         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
6781         * c-lex.c (fe_file_change): Don't set in_system_header.
6782         * c-parser.c (c_token): Remove in_system_header.
6783         (c_lex_one_token): Don't set in_system_header.
6784         (c_parser_set_source_position_from_token): Don't set in_system_header.
6785         * diagnostic.c (diagnostic_report_diagnostic): Use location from
6786         diagnostic_info.
6787         (warning_at): New.
6788         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
6789         * flags.h (in_system_header): Remove.
6790         * function.c (saved_in_system_header): Remove.
6791         (push_cfun): Don't set in_system_header.
6792         (pop_cfun): Don't set in_system_header.
6793         (push_struct_function): Don't set in_system_header.
6794         * input.h (expanded_location): Add sysp.
6795         (in_system_header_at): New.
6796         (in_system_header): New.
6797         * toplev.c (in_system_header): Remove.
6798         * toplev.h: Include input.h
6799         (warning_at): New.
6800         * tree-cfg.c (execute_warn_function_return): Call warning_at.
6801         * tree-ssa.c (warn_uninit): Call warning_at.
6802         (warn_uninitialized_var): Update calls to warn_uninit.
6803         (warn_uninitialized_phi): Update calls to warn_uninit.
6804         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
6805         (expand_location): Initialize xloc.sysp.
6806         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
6807         (tree_decl_with_vis): Remove in_system_header_flag.
6808
6809 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
6810
6811         PR target/36822
6812         * recog.c (asm_operand_ok): Change the order of the extra
6813         memory constraint checks.
6814
6815 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6816
6817         PR tree-opt/36879
6818         * tree-switch-conversion.c (build_one_array): Call
6819         varpool_mark_needed_node and varpool_finalize_decl
6820         instead of assemble_variable.
6821
6822 2008-07-19  Jan Hubicka  <jh@suse.cz>
6823
6824         * cgraph.c (cgraph_add_new_function): Do early local passes.
6825         * tree-nrv.c (gate_pass_return_slot): New gate.
6826         (pass_nrv): Add the gate.
6827         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
6828         functions.
6829         (coalesce_ssa_name): Coalesce SSA names.
6830         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
6831         not optimizing so unused user vars remains visible.
6832         * common.opt (flag_tree_ter): Always enable by default.
6833         * tree-ssa-ter.c: Include flags.h
6834         (is_replaceable_p): Check that locations match; when aliasing is missing
6835         be conservative about loads.
6836         * tree-optimize.c (gate_init_datastructures): Remove.
6837         (pass_init_datastructures): New.
6838         * passes.c: Reorder passes so we always go into SSA.
6839
6840 2008-07-19  Jan Hubicka  <jh@suse.cz>
6841
6842         * doc/extend.texi (flatten attribute): Remove note about unit-at-a-time
6843         * doc/invoke.texi (--combine): Likewise.
6844         (-finline-functions-called-once): Update levels when enabled.
6845         (-funit-at-a-time): Document new behaviour.
6846         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
6847         -fno-section-anchors when disabled explicitly.
6848         (inline params): They are not ignored now.
6849         (precompiled headers): Remove unit-at-a-time as being incompatible.
6850         * opts.c (decode_options): Handle unit-at-a-time as alias;
6851         imply -fno-section-anchors when toplevel reorder is disabled
6852         explicitly.
6853         * common.opt (ftoplevel-reorder): Set default value to 2.
6854         (funit-at-a-time): Set default value to 1.
6855         * config/rs6000/rs6000.c (optimization_options): Set section anchors
6856         to 2.
6857
6858 2008-07-19  Jan Hubicka  <jh@suse.cz>
6859
6860         * builtins.c (expand_builtin_int_roundingfn,
6861         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
6862         it is not useful.
6863
6864 2008-07-19  Richard Guenther  <rguenther@suse.de>
6865
6866         PR bootstrap/36864
6867         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
6868         * tree-ssa-sccvn.c (get_constant_value_id): New function.
6869         * tree-ssa-pre.c (get_expr_value_id): For newly created
6870         constant value-ids make sure to add the expression to its
6871         expression-set.
6872
6873 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
6874
6875         PR middle-end/36877
6876         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
6877         return value of the builtin is ignored.
6878
6879 2008-07-19  Olivier Hainque  <hainque@adacore.com>
6880
6881         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
6882         bits, a C conformant malloc implementation has to provide.
6883         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
6884
6885 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
6886
6887         PR target/36780
6888         PR target/36827
6889         * reload.c (find_reloads_subreg_address): Only reload address if
6890         reloaded == 0, not for reloaded != 1.
6891
6892         Revert:
6893         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
6894         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
6895         (m32c_legitimate_address_p): Handle "++rii" addresses created by
6896         m32c_legitimize_reload_address.
6897
6898         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
6899         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
6900         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
6901
6902 2008-07-19  Olivier Hainque  <hainque@adacore.com>
6903
6904         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
6905         argument, saying whether nested array are to be collapsed
6906         into a single array type DIE with multiple subscripts.
6907         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
6908         issues, centralize the nested array types collapsing control and
6909         disable the transformation for Ada.
6910
6911 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
6912
6913         PR target/36786
6914         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
6915         x86_64_shift_adj.
6916         (x86_64_shift_adj_2): New expander.
6917         (x86_64_shift_adj_3): Ditto.
6918         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
6919         to split TImode operands.
6920         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
6921         (ix86_split_lshr): Ditto.
6922
6923 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
6924
6925         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
6926         and __CHAR32_TYPE__.
6927         * c-typeck.c (digest_init): Support char16_t and char32_t.
6928         (set_nonincremental_init_from_string): Idem.
6929
6930 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6931
6932         PR middle-end/36859
6933         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
6934         PREFERRED_STACK_BOUNDARY.
6935         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
6936
6937 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
6938
6939         PR middle-end/36858
6940         * function.c (locate_and_pad_parm): Cap boundary earlier.
6941
6942 2008-07-17  Julian Brown  <julian@codesourcery.com>
6943
6944         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
6945         no-op for targets which don't use DLLs.
6946
6947 2008-07-17  Martin Jambor  <mjambor@suse.cz>
6948
6949         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
6950         that nodes are relevant by examining the node->analyzed flag.
6951         (ipcp_init_stage): Check which nodes are relevant, assert that the
6952         relevant ones are also required.
6953         (ipcp_propagate_stage): Check on the side arrays are properly
6954         allocated.
6955         (ipcp_print_all_jump_functions): Make sure not to touch any node
6956         that is not analyzed or an edge that does not have a corresponding
6957         entry in the on-the-side vectors.
6958         (ipcp_function_scale_print): Likewise.
6959         (ipcp_update_callgraph): Check that the node is relevant.
6960         (ipcp_insert_stage): Check that the node is relevant.  Check there is
6961         an info for every node and edge.
6962         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
6963         (ipa_print_all_tree_maps): Likewise and a new variable info.
6964         (ipa_print_all_params_modified): Likewise.
6965         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
6966
6967 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
6968
6969         PR target/25343
6970         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
6971
6972 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
6973
6974         PR rtl-optimization/36753
6975         * fwprop.c (use_killed_between): Don't shortcut
6976         single-definition global registers.
6977
6978 2008-07-16  Jan Hubicka  <jh@suse.cz>
6979
6980         * cgraph.h (varpool_empty_needed_queue): Declare.
6981         * cgraphunit.c (output_in_order): Mark all variables as needed;
6982         empty the queue.
6983         * varpool.c (varpool_assemble_node): Update debug queue.
6984         (varpool_assemble_pending_decls): Don't do it here.
6985         (varpool_empty_needed_queue):  New function.
6986
6987 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6988
6989         * recog.c (peephole2_optimize): Fix formatting.
6990
6991 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6992
6993         * c-pch.c (get_ident): Avoid C++ keywords.
6994         * combine-stack-adj.c (single_set_for_csa): Likewise.
6995         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
6996         output_asm_insn): Likewise.
6997         * reload.c (push_secondary_reload, find_reusable_reload,
6998         push_reload, combine_reloads, find_reloads,
6999         debug_reload_to_stream): Likewise.
7000         * reload.h (struct reload): Likewise.
7001         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
7002         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
7003         emit_output_reload_insns): Likewise.
7004         * targhooks.c (default_secondary_reload): Likewise.
7005         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
7006
7007 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7008
7009         * recog.c (validate_change_1, validate_change,
7010         validate_unshare_change, validate_replace_rtx_1, struct
7011         funny_match, constrain_operands, peephole2_optimize): Avoid C++
7012         keywords.
7013         * reload.c (push_secondary_reload, secondary_reload_class,
7014         scratch_reload_class, find_valid_class, find_reusable_reload,
7015         push_reload, find_dummy_reload, find_reloads_address_1,
7016         find_reloads_address_part, find_equiv_reg): Likewise.
7017         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
7018         choose_reload_regs): Likewise.
7019         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
7020         Likewise.
7021         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
7022         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
7023         * sched-rgn.c (concat_INSN_LIST): Likewise.
7024         * stor-layout.c (mode_for_size, mode_for_size_tree,
7025         smallest_mode_for_size): Likewise.
7026
7027 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7028
7029         * cfg.c (dump_reg_info): Avoid C++ keywords.
7030         * dwarf2asm.c (dw2_force_const_mem,
7031         dw2_asm_output_encoded_addr_rtx): Likewise.
7032         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
7033         * expmed.c (expand_shift): Likewise.
7034         * global.c (find_reg): Likewise.
7035         * graph.c (draw_edge): Likewise.
7036         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
7037         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
7038         widen_clz, widen_bswap, expand_parity, expand_unop,
7039         emit_cmp_and_jump_insn_1): Likewise.
7040         * postreload.c (reload_cse_simplify_operands): Likewise.
7041         * ra.h (add_neighbor): Likewise.
7042         * reg-stack.c (remove_regno_note, change_stack): Likewise.
7043         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
7044         record_reg_classes, copy_cost, record_address_regs,
7045         invalid_mode_change_p): Likewise.
7046         * regrename.c (regrename_optimize, scan_rtx_reg,
7047         dump_def_use_chain, find_oldest_value_reg,
7048         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
7049
7050 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7051
7052         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
7053         MASK_POWERPC64 for power4 in previous commit.
7054
7055 2008-07-16  Olivier Hainque  <hainque@adacore.com>
7056
7057         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
7058         instead of bare conversion to cast const-ness away.
7059
7060 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
7061
7062         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
7063         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
7064         * config/xtensa/xtensa.c (xtensa_function_value): New function.
7065         (TARGET_FUNCTION_VALUE): Define.
7066
7067 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
7068
7069         * config/rs6000/rs6000.c (processor_target_table): Add
7070         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
7071
7072 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
7073
7074         PR target/36827
7075         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
7076         (m32c_legitimate_address_p): Handle "++rii" addresses created by
7077         m32c_legitimize_reload_address.
7078
7079 2007-07-16  Rafael Avila de Espindola  <espindola@google.com>
7080
7081         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
7082         DECL_IN_SYSTEM_HEADER in sync.
7083
7084 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
7085
7086         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
7087         * tree-ssa-pre.c (pre_expr_eq): Ditto
7088         (get_constant_for_value_id): Take a type as an argument.
7089         (fully_constant_expression): Pass in type.
7090         (find_or_generate_expression): Short circuit constant case.
7091         (create_expression_by_pieces): Remove special casing of
7092         pointer_plus.
7093         (do_regular_insertion): Short circuit constant case.
7094         (do_partial_partial_insertion): Ditto.
7095
7096 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7097
7098         PR target/36782
7099         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
7100
7101 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
7102
7103         * config/xtensa/libgcc-xtensa.ver: New file.
7104         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
7105
7106 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7107
7108         * df-problems.c (df_set_note): Avoid C++ keywords.
7109         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
7110         * dse.c (record_store, remove_useless_values): Likewise.
7111         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
7112         gen_reg_rtx_offset, operand_subword, change_address_1,
7113         change_address, adjust_address_1, offset_address,
7114         widen_memory_access, emit_copy_of_insn_after): Likewise.
7115         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
7116         * fwprop.c (should_replace_address, propagate_rtx_1,
7117         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
7118         Likewise.
7119         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
7120         gcse_emit_move_after, update_ld_motion_stores): Likewise.
7121         * lcm.c (compute_insert_delete, pre_edge_lcm,
7122         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
7123         * lower-subreg.c (resolve_reg_notes): Likewise.
7124         * mode-switching.c (optimize_mode_switching): Likewise.
7125
7126 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7127
7128         * bt-load.c (add_btr_def, migrate_btr_def,
7129         branch_target_load_optimize): Avoid C++ keywords.
7130         * caller-save.c (insert_restore, insert_save, insert_one_insn):
7131         Likewise.
7132         * combine.c (subst, simplify_set, make_extraction,
7133         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
7134         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
7135         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
7136
7137 2008-07-15  Richard Guenther  <rguenther@suse.de>
7138
7139         PR middle-end/36369
7140         * c-common.c (strict_aliasing_warning): Do not warn for
7141         TYPE_REF_CAN_ALIAS_ALL pointers.
7142         (c_common_get_alias_set): may_alias types are not special.
7143         * tree.c (build_pointer_type_for_mode): Look up the may_alias
7144         attribute and set can_ref_all accordingly.
7145         (build_reference_type_for_mode): Likewise.
7146         * doc/extend.texi (may_alias): Clarify.
7147
7148 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
7149
7150         PR target/36780
7151         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
7152         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
7153
7154 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7155
7156         PR target/31568
7157         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
7158         gcc_assert, instead call output_operand_lossage.
7159
7160 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
7161
7162         * builtins.c (std_canonical_va_list): Treat structure based
7163         va_list types.
7164
7165 2008-07-15  Ben Elliston  <bje@au.ibm.com>
7166
7167         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
7168
7169 2007-07-14  Rafael Avila de Espindola  <espindola@google.com>
7170
7171         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
7172         is set.
7173
7174 2008-07-14  Jan Hubicka  <jh@suse.cz>
7175
7176         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
7177         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
7178         fix predicates and constraints.
7179         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
7180         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
7181
7182 2008-07-14  Doug Kwan  <dougkwan@google.com>
7183
7184         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
7185         additional option file arm/eabi.opt.
7186         * config/arm/eabi.h (File): New configuration file for EABI targets.
7187         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
7188         SUBSUBTARGET_EXTRA_SPECS.
7189         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
7190         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
7191         from STARTFILE_SPEC so that it can be referenced in an override.
7192         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
7193         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
7194         can be referenced in an override.
7195         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
7196         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
7197         so that it can be referenced in an override.
7198         (LINK_SPEC): Use BPABI_LINK_SPEC.
7199         * config/arm/eabi.opt (File): New.
7200
7201 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7202
7203         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
7204         (FIXED_VALUE_H): New variable.
7205         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
7206         input.h, fixed-value.h.
7207         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
7208         (BASIC_BLOCK_H): Use $(BITMAP_H).
7209         (FUNCTION_H): Add varray.h.
7210         (IPA_REFERENCE_H): Use $(BITMAP_H).
7211         (CGRAPH_H): Add $(BASIC_BLOCK_H).
7212         (DF_H): Use $(BITMAP_H).
7213         (GGC_H): Add statistics.h.
7214         (INSN_ADDR_H): New.
7215         (INSN_ATTR_H): Use it.
7216         (SYSTEM_H): Add safe-ctype.h, filenames.h.
7217         (INPUT_H): New.
7218         (SYMTAB_H): Add $(OBSTACK_H).
7219         (CPP_INTERNAL_H): New.
7220         (TREE_DUMP_H): Add tree-pass.h.
7221         (TREE_FLOW_H): Use $(BITMAP_H)
7222         (PRETTY_PRINT_H): Use $(INPUT_H).
7223         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
7224         (GSTAB_H): New.
7225         (BITMAP_H): New.
7226         (many object files): Fix lots of header dependencies throughout.
7227
7228 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7229
7230         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
7231         New macros.
7232         (s-gtyp-input): Use them to write tmp-gi.list.
7233         (echo_to_gi.list): Remove.
7234
7235 2008-07-14  Richard Guenther  <rguenther@suse.de>
7236
7237         * tree-ssa-sccvn.c (pre_info): Remove.
7238         (switch_to_PRE_table): Likewise.
7239         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
7240         (set_hashtable_value_ids): Do not create value-ids for the
7241         optimistic tables.
7242         (run_scc_vn): Remove double test.  Remove bogus special-case
7243         in value-number printing.
7244         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
7245         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
7246         SSA_NAME_VALUE.
7247         * tree-flow-inline.h (get_value_handle): Remove.
7248         * tree-flow.h (get_value_handle): Remove.
7249
7250 2008-07-14  Martin Jambor  <mjambor@suse.cz>
7251
7252         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
7253         in which we generate arithmetics is not a subrange.
7254
7255 2008-07-14  Martin Jambor  <mjambor@suse.cz>
7256
7257         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
7258
7259 2008-07-14  Richard Guenther  <rguenther@suse.de>
7260
7261         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
7262
7263 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
7264
7265         PR target/36745
7266         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
7267         reload for symbol refs moved to r0 with -fPIC.
7268         (legitimize_pic_address): Use the target register as temporary
7269         reg if possible.
7270         (emit_symbolic_move): Adjust comment.
7271         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
7272         New expanders.
7273
7274 2008-07-14  Ben Elliston  <bje@au.ibm.com>
7275
7276         * c-common.h (C_CPP_HASHNODE): New macro.
7277         * coretypes.h (struct cpp_token): Forward declare.
7278         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
7279         the context-sensitive keyword method.
7280         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
7281         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
7282         expand_bool_pixel): New.
7283         (altivec_categorize_keyword): New function.
7284         (init_vector_keywords): New function.
7285         (rs6000_macro_to_expand): Likewise.
7286         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
7287         compiling an ISO C dialect.
7288
7289 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
7290
7291         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
7292         (create_expression_by_pieces): Fix typo.
7293         (do_regular_insertion): Use debug counter here too.
7294
7295 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
7296
7297         PR target/35492.
7298         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
7299         CONST_OK_FOR_LETTER_P.  All port-local users changed.
7300         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
7301         implement Kp matching power-of-two.
7302         (CONSTRAINT_LEN): Define to match.
7303         * config/cris/cris.md: Replace all use of constraint K with Kc.
7304         ("*btst*): Use Kp for operand 0 of last alternative.
7305
7306 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7307
7308         PR testsuite/36440
7309         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
7310         and quad formats.
7311
7312 2008-07-13  Jan Hubicka  <jh@suse.cz>
7313
7314         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
7315         to be mangled too.
7316
7317 2008-07-13  Richard Guenther  <rguenther@suse.de>
7318
7319         PR middle-end/36811
7320         * langhooks.c (lhd_print_error_function): Deal with recursive
7321         BLOCK trees.
7322
7323 2008-07-12  Jan Hubicka  <jh@suse.cz>
7324
7325         * cgraph.c (assembler_name_hash): New static var.
7326         (hash_node_by_assembler_name, eq_assembler_name): New.
7327         (cgraph_node_for_asm): Use hashtable.
7328         (cgraph_remove_node): Maintain hashtable.
7329         (change_decl_assembler_name): Sanity check that names are not changing
7330         after aliasing was processed.
7331         * cgraph.h (varpoon_node): Add next GGC marker.
7332         * tree.c (decl_assembler_name_equal): Constify.
7333         (decl_assembler_name_hash): New.
7334         * tree.h (decl_assembler_name_equal): Constify.
7335         (decl_assembler_name_hash): Update.
7336
7337 2008-07-12  David Daney  <ddaney@avtrex.com>
7338
7339         * config/mips/driver-native.c (host_detect_local_cpu): Handle
7340         sb1 and r5000 cpus.
7341
7342 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
7343
7344         * doc/md.texi: Document the MIPS "v" constraint.
7345         * config/mips/mips.h (reg_class): Revert last change.
7346         (REG_CLASS_NAMES): Likewise.
7347         (REG_CLASS_CONTENTS): Likewise.
7348         * config/mips/mips.c (mips_regno_to_class): Likewise.
7349         * config/mips/constraints.md (v): Likewise, but add documentation.
7350         Add a comment to say that this constraint should not be used in
7351         gcc code.
7352
7353 2008-07-11  DJ Delorie  <dj@redhat.com>
7354
7355         * config/h8300/h8300.md (length): Fix branch offset limit.
7356
7357 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
7358
7359         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
7360         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
7361         (avr_hard_regno_scratch_ok): New function.
7362         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
7363         * config/avr/avr.md (all peepholes that request a scratch register):
7364         Remove avr_peep2_scratch_safe use.
7365
7366 2008-07-11  Tom Tromey  <tromey@redhat.com>
7367             Ian Lance Taylor  <iant@google.com>
7368
7369         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
7370         (struct c_common_resword): Define.
7371         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
7372         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
7373         (c_common_reswords, num_c_common_reswords): Declare.
7374         * c-common.c (c_common_reswords): New global const array.
7375         (num_c_common_reswords): New const int.
7376         * c-parser.c (struct resword, reswords): Don't define.
7377         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
7378         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
7379         than reswords.  If warning about C++ keywords, give them a special
7380         RID code.
7381         (c_lex_one_token): Warn about C++ keywords.  Call
7382         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
7383         (c_parser_external_declaration): Look for RID_xxx rather than
7384         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
7385         (c_parser_statement_after_labels): Likewise.
7386         (c_parser_objc_class_instance_variables): Likewise.
7387         (c_parser_objc_class_declaration): Likewise.
7388         (c_parser_objc_try_catch_statement): Likewise.
7389         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
7390         (declspecs_add_type): Likewise.
7391
7392 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
7393
7394         * ggc-page.c (alloc_page):
7395         Substituting xmalloc, xcalloc with
7396         XNEWVEC and XCNEWVAR macros which add the
7397         needed casts.
7398
7399 2008-07-11  Richard Guenther  <rguenther@suse.de>
7400
7401         PR tree-optimization/36765
7402         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
7403         aliases from HEAP vars to SMTs.
7404
7405 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7406
7407         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
7408         * configure.ac (loose_warn): Move -Wc++-compat from here...
7409         (strict_warn): ...to here.
7410         * configure: Regenerate.
7411
7412 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
7413
7414         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
7415         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
7416         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
7417         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
7418         excluding more specific h8300-*-* and sh-*-* targets.
7419
7420 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
7421
7422         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
7423         (eliminate): Ditto.
7424         (execute_pre): Call loop_optimizer_finalize in early exit.
7425
7426 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
7427
7428         PR middle-end/36790
7429         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
7430         uids in the bitmap, not just VAR_DECL uids.
7431
7432         PR rtl-optimization/36419
7433         * combine-stack-adj.c (adjust_frame_related_expr): New function.
7434         (combine_stack_adjustments_for_block): Call it if needed.  Delete
7435         correct insn.
7436         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
7437         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
7438         prologue sp adjustment.
7439
7440 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
7441
7442         PR other/28322
7443         * opts.c (print_ignored_options): Report postponed diagnostics for
7444         unknown -Wno-* options as warnings, not errors.
7445         (postpone_unknown_option_error): Renamed to...
7446         (postpone_unknown_option_warning): ... this.
7447
7448 2008-07-09  Doug Kwan  <dougkwan@google.com>
7449
7450         Revert:
7451         2008-07-08  Doug Kwan  <dougkwan@google.com>
7452
7453         * config/arm/arm.opt (mandroid): New option.
7454         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
7455         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
7456         (CC1_SPEC): Same.
7457         (CC1PLUS_SPEC): Same.
7458         (LIB_SPEC): Same.
7459         (STARTFILE_SPEC): Same.
7460         (ENDFILE_SPEC): Same.
7461         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
7462         used.
7463
7464 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
7465
7466         PR target/35802
7467         * config/mips/mips.h (reg_class): Remove V1_REG.
7468         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
7469         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
7470         instead of V1_REGS.
7471         (mips_get_tp): New function.
7472         (mips_legitimize_tls_address): Use it.
7473         * config/mips/constraints.md (v): Delete.
7474         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
7475         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
7476         After reload, split into a move and ...
7477         (*tls_get_tp_<mode>_split): ...this new instruction.
7478
7479 2008-07-09  David Daney  <ddaney@avtrex.com>
7480
7481         * config/mips/driver-native.c: Include coretypes.h and tm.h.
7482
7483 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
7484
7485         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
7486         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
7487         Add c argument.
7488         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
7489         htab_delete should be called.  Don't free c.
7490         (lookup_tmp_var): Create temp_htab lazily.
7491         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
7492         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
7493         callers.
7494         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
7495         lower_omp_ordered, lower_omp_critical, lower_omp_for,
7496         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
7497         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
7498         * tree-sra.c (generate_element_init): Likewise.
7499         * tree-mudflap.c (execute_mudflap_function_ops,
7500         execute_mudflap_function_decls): Likewise.
7501         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
7502         * tree-gimple.h (struct gimplify_ctx): New type.
7503         (push_gimplify_context): Adjust prototype.
7504
7505 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
7506
7507         * tree-ssa-pre.c (phi_translate_1): Update placement of
7508         add_to_value calls.
7509
7510 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
7511
7512         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
7513         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
7514         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
7515         * targhooks.c (default_hard_regno_scratch_ok): New function.
7516         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
7517         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
7518         * recog.c:  Include "target.h".
7519         (peep2_find_free_register): Add check for global regs. Add target
7520         specific check.
7521         * Makefile.in (recog.o): Depend on target.h.
7522
7523 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
7524
7525         * config/sh/sh.c (sh_canonical_va_list_type): New.
7526         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
7527
7528 2008-07-09  Raksit Ashok <raksit@google.com>
7529
7530         * doc/invoke.texi (Option Summary): Mention new option
7531         -Wdisallowed-function-list=...
7532         (Warning Options): Document -Wdisallowed-function-list=...
7533         * common.opt (Wdisallowed-function-list=): New flag.
7534         * flags.h (warn_disallowed_functions): External definition of new
7535         boolean warning flag.
7536         (warn_if_disallowed_function_p): Declare new function.
7537         * opts.c (warning_disallowed_functions): New static variable.
7538         (warn_disallowed_functions): New boolean warning flag.
7539         (warn_if_disallowed_function_p): New function.
7540         (add_comma_separated_to_vector): Rename
7541         add_instrument_functions_exclude_list to this.
7542         (common_handle_option): Handle new option. Rename calls to
7543         add_instrument_functions_exclude_list into calls to
7544         add_comma_separated_to_vector.
7545         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
7546         based on flag warn_disallowed_functions.
7547
7548 2008-07-09  Christian Bruel  <christian.bruel@st.com>
7549
7550         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
7551          instead of get_attr_length.
7552
7553 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7554
7555         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
7556         keywords.
7557         * genemit.c (gen_insn): Likewise.
7558         * gengtype.c (note_def_vec): Likewise.
7559         * gengtype.h (note_def_vec): Likewise.
7560         * genoutput.c (struct data, output_insn_data, process_template,
7561         gen_expand, gen_split, note_constraint): Likewise.
7562         * genrecog.c (new_decision, add_to_sequence, factor_tests,
7563         make_insn_sequence): Likewise.
7564         * gensupport.c (record_insn_name): Likewise.
7565
7566 2008-07-08  Doug Kwan  <dougkwan@google.com>
7567
7568         * config/arm/arm.opt (mandroid): New option.
7569         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
7570         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
7571         (CC1_SPEC): Same.
7572         (CC1PLUS_SPEC): Same.
7573         (LIB_SPEC): Same.
7574         (STARTFILE_SPEC): Same.
7575         (ENDFILE_SPEC): Same.
7576         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
7577         used.
7578
7579 2008-07-08  Raksit Ashok  <raksit@google.com>
7580
7581         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
7582         (set_storage_via_setmem): Fix expected_align parameter.
7583         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
7584         missing from the list.
7585         * doc/md.texi (movmem): Explicitly state that expected alignment is
7586         to be expressed in bytes.
7587         (setmem): Explicitly state that expected alignment is to be expressed
7588         in bytes.
7589
7590 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
7591
7592         * reload.c (find_reloads_subreg_address): Do not require validity
7593         of address in original mode before reloading address.
7594
7595 2008-07-07  Tianwei Sheng  <tianweis@google.com>
7596
7597         * df-core.c (df_remove_problem): Adjust the access to avoid out of
7598         bounds array access.
7599
7600 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
7601
7602         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
7603
7604 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
7605
7606         Fix PR tree-optimization/23455
7607         Fix PR tree-optimization/35286
7608         Fix PR tree-optimization/35287
7609         * Makefile.in (OBJS-common): Remove tree-vn.o.
7610         (tree-vn.o): Remove.
7611         * dbgcnt.def: Add treepre_insert debug counter.
7612         * gcc/tree-flow.h (add_to_value): Updated for other changes.
7613         (debug_value_expressions): Ditto.
7614         (print_value_expressions): Ditto.
7615         * tree-pretty-print.c (dump_generic_node): Updated for
7616         VALUE_HANDLE removal.
7617         * tree-ssa-dom.c (record_equality): Ditto.
7618         (cprop_operand): Ditto.
7619         (lookup_avail_expr): Ditto.
7620         * tree-ssa-threadedge.c
7621         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
7622         (simplify_control_stmt_condition): Ditto.
7623         * tree.c (tree_code_size): Ditto.
7624         (tree_node_structure): Ditto.
7625         (iterative_hash_expr): Ditto.
7626         * tree.def: Ditto.
7627         * tree.h (VALUE_HANDLE_ID): Ditto.
7628         (VALUE_HANDLE_EXPR_SET): Ditto.
7629         (struct tree_value_handle): Ditto.
7630         (union tree_node): Ditto.
7631         * treestruct.def: Ditto.
7632         * tree-vn.c: Removed.
7633         * tree-ssa-pre.c: Rewritten entirely.
7634         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
7635         (constant_value_ids): Ditto.
7636         (vn_nary_op_t): Moved to header.
7637         (vn_phi_t): Ditto.
7638         (vn_reference_op_t): Ditto
7639         (vn_reference_t): Ditto.
7640         (next_value_id): New variable.
7641         (VN_INFO): Add an assert.
7642         (vn_constant_eq): New function.
7643         (vn_constant_hash): Ditto.
7644         (get_or_alloc_constant_value_id): Ditto.
7645         (value_id_constant_p): Ditto.
7646         (vn_reference_compute_hash): De-staticify.
7647         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
7648         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
7649         (valueize_refs): Update opcode if it changes from ssa name to constant.
7650         (vn_reference_lookup_1): Add new argument.
7651         (vn_reference_lookup):  Ditto.
7652         (vn_reference_lookup_pieces): New function.
7653         (vn_reference_insert): Add return type. Modify to deal with value ids.
7654         (vn_reference_insert_pieces):  New function.
7655         (vn_nary_op_compute_hash): De-staticify.
7656         (vn_nary_op_eq): Ditto.
7657         (vn_nary_op_lookup_pieces): New function.
7658         (vn_nary_op_lookup): Add new argument.
7659         (vn_nary_op_insert_pieces): New function.
7660         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
7661         (vn_phi_insert): Ditto.
7662         (visit_unary_op): Update for callee changes.
7663         (visit_binary_op): Ditto.
7664         (visit_reference_op_load): Ditto.
7665         (visit_reference_op_store): Ditto.
7666         (init_scc_vn): Init next_value_id, constant_to_value_id and
7667         constant_value_ids.
7668         (free_scc_vn): Free them.
7669         (set_hashtable_value_ids): New function.
7670         (run_scc_vn): Use it.
7671         (get_max_value_id): New function.
7672         (get_next_value_id): Ditto.
7673         (expressions_equal_p): Moved from tree-vn.c
7674         (sort_vuses): Ditto.
7675         (sort_vuses_heap): Ditto.
7676         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
7677         above).
7678         * tree.c (iterative_hash_hashval_t): Made non-static
7679         * tree.h (iterative_hash_hashval_t): Declare it.
7680
7681 2008-07-08  Martin Jambor  <mjambor@suse.cz>
7682
7683         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
7684         instead of ipa_create_node_params.
7685         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
7686         ipa_check_create_edge_args, free them with
7687         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
7688
7689         * ipa-prop.c: Include flags.h and tree-inline.h.
7690         (ipa_node_params_vector): New variable.
7691         (ipa_edge_args_vector): New variable.
7692         (edge_removal_hook_holder): New variable.
7693         (node_removal_hook_holder): New variable.
7694         (edge_duplication_hook_holder): New variable.
7695         (node_duplication_hook_holder): New variable.
7696         (ipa_detect_param_modifications): Check for presence of modified flags.
7697         (ipa_compute_jump_functions): Check for presence of jump functions.
7698         (ipa_free_edge_args_substructures): New function.
7699         (ipa_create_node_params): Removed.
7700         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
7701         (ipa_free_node_params_substructures): New function.
7702         (ipa_free_all_node_params): Changed to deallocate the on-the-side
7703         vector.
7704         (ipa_edge_removal_hook): New function.
7705         (ipa_node_removal_hook): New function.
7706         (duplicate_array): New function.
7707         (ipa_edge_duplication_hook): New function.
7708         (ipa_node_duplication_hook): New function.
7709         (ipa_register_cgraph_hooks): New function.
7710         (ipa_unregister_cgraph_hooks): New function.
7711         (free_all_ipa_structures_after_ipa_cp): New function.
7712
7713         * ipa-prop.h: Include vec.h.
7714         (ipa_node_params_t): New typedef with vector types for it.
7715         (ipa_edge_args_t):  New typedef with vector types for it.
7716         (IPA_NODE_REF): Changed to access an on-the-side vector.
7717         (IPA_EDGE_REF): Changed to access an on-the-side vector.
7718         (ipa_check_create_node_params): New function.
7719         (ipa_check_create_edge_args): New function.
7720
7721         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
7722         all users.
7723
7724 2008-07-07  Tom Tromey  <tromey@redhat.com>
7725
7726         * configure, config.in: Rebuilt.
7727         * configure.ac: Don't check for scandir or alphasort.
7728
7729 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7730
7731         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
7732         types immediately after creating them.
7733
7734 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
7735
7736         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
7737
7738 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
7739
7740         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
7741         dump_constraint_graph.
7742         (dump_constraint_edge): New function.
7743         (dump_constraint_graph): New function.
7744         (debug_constraint_graph): New function.
7745         (dump_constraint): Removed useless comparison.
7746         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
7747         (dump_constraint_graph): Declare.
7748         (debug_constraint_graph): Declare.
7749         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
7750
7751 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
7752
7753         * config/i386/i386.c (is_va_list_char_pointer): New.
7754         (ix86_va_start): Replace compare with ms_va_list_type_node
7755         by is_va_list_char_pointer.
7756         (ix86_gimplify_va_arg): Likewise.
7757
7758 2008-07-07  Martin Jambor  <mjambor@suse.cz>
7759
7760         * cgraph.c (cgraph_edge_max_uid): New variable.
7761         (struct cgraph_edge_hook_list): New type.
7762         (struct cgraph_node_hook_list): New type.
7763         (struct cgraph_2edge_hook_list): New type.
7764         (struct cgraph_2node_hook_list): New type.
7765         (first_cgraph_edge_removal_hook): New variable.
7766         (first_cgraph_node_removal_hook): New variable.
7767         (first_cgraph_edge_duplicated_hook): New variable.
7768         (first_cgraph_node_duplicated_hook): New variable.
7769         (cgraph_add_edge_removal_hook): New function.
7770         (cgraph_remove_edge_removal_hook): New function.
7771         (cgraph_call_edge_removal_hooks):  New function.
7772         (cgraph_add_node_removal_hook):  New function.
7773         (cgraph_remove_node_removal_hook):  New function.
7774         (cgraph_call_node_removal_hooks):  New function.
7775         (cgraph_add_edge_duplication_hook):  New function.
7776         (cgraph_remove_edge_duplication_hook):  New function.
7777         (cgraph_call_edge_duplication_hooks):  New function.
7778         (cgraph_add_node_duplication_hook):  New function.
7779         (cgraph_remove_node_duplication_hook):  New function.
7780         (cgraph_call_node_duplication_hooks):  New function.
7781         (cgraph_create_edge): Assign to edge uid.
7782         (cgraph_remove_edge): Call edge removal hooks.
7783         (cgraph_node_remove_callees): Call edge removal hooks.
7784         (cgraph_node_remove_callers): Call edge removal hooks.
7785         (cgraph_remove_node): Call node removal hooks.
7786         (cgraph_clone_edge): Call edge duplication hooks.
7787         (cgraph_clone_node): Call node duplication hooks.
7788
7789         * cgraph.h (cgraph_edge): New field uid.
7790         (cgraph_edge_hook): New type.
7791         (cgraph_node_hook): New type.
7792         (cgraph_2edge_hook): New type.
7793         (cgraph_2node_hook): New type.
7794
7795 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
7796
7797         * config.in: Regenerate.
7798
7799 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
7800
7801         * gcc.c (print_sysroot): New.
7802         (option_map, display_help, process_command): Handle the
7803         -print-sysroot option.
7804         (main): Print the sysroot if requested.
7805         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
7806
7807 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7808
7809         PR target/34780
7810         * unwind-pe.h (size_of_encoded_value): add attribute unused.
7811
7812 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
7813
7814         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
7815         (assign_parm_setup_block_p): Also check mode of entry_parm.
7816
7817 2008-07-07  Richard Guenther  <rguenther@suse.de>
7818
7819         * tree-ssa-structalias.h (set_used_smts): Remove.
7820         * tree-ssa-structalias.c (used_smts): Likewise.
7821         (set_used_smts): Likewise.
7822         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
7823         call to set_used_smts.
7824
7825 2008-07-07  Richard Guenther  <rguenther@suse.de>
7826
7827         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
7828         (new_var_info): Set it to false.
7829         (solution_set_add): Correctly handle pointers outside a var and
7830         inside a field.
7831         (type_safe): Treat variables with is_full_var properly.
7832         (do_sd_constraint): Likewise.
7833         (do_ds_constraint): Likewise.
7834         (process_constraint): Remove zeroing offset for !use_field_sensitive.
7835         (get_constraint_for_ptr_offset): New function.
7836         (get_constraint_for_component_ref): For addresses at least include
7837         the last field of the variable.  Handle is_full_vars properly.
7838         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
7839         (handle_ptr_arith): Remove.
7840         (find_func_aliases): Simplify assignment handling.
7841         (create_function_info_for): For parameter and result varinfos set
7842         is_full_var flag.
7843         (create_variable_info_for): Set is_full_var flag whenever we
7844         just created a single varinfo for a decl.
7845         (init_alias_vars): Initialize use_field_sensitive from
7846         max-fields-for-field-sensitive parameter.
7847
7848 2008-07-07  Richard Guenther  <rguenther@suse.de>
7849
7850         PR tree-optimization/36713
7851         * tree-flow-inline.h (is_call_used): New function.
7852         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
7853         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
7854         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
7855
7856 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
7857
7858         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
7859
7860 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
7861
7862         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
7863
7864 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
7865             Nathan Sidwell  <nathan@codesourcery.com>
7866
7867         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
7868         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
7869         tmake_file.
7870         * config/m68k/t-linux: New.
7871         * doc/install.texi: Document m68k-*-linux is now multilibbed by
7872         default.
7873
7874 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
7875
7876         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
7877         * config/m68k/m68k-devices.def: Remove multilibs that only differ
7878         by MAC/EMAC.
7879
7880 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7881
7882         * gcc.c (execute): Fix -Wc++-compat warning.
7883
7884 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
7885
7886         PR target/36720
7887         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
7888         constant for little endian.
7889
7890 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
7891
7892         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
7893         mips_base_mips16 instead of TARGET_MIPS16.
7894         (mips_base_mips16): Declare.
7895         * config/mips/mips.c (mips_base_mips16): Make global.
7896         (was_mips16_p): Remove GTY marker.
7897         (was_mips16_pch_p): New variable.
7898         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
7899         (mips_override_options): Force to non-MIPS16 mode initially.
7900         Do not complain about MIPS16 PIC incompatibilities here.
7901         Only allow -mgpopt if -mexplicit-relocs is in force for
7902         non-MIPS16 code.
7903
7904 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
7905
7906         * configure.ac: Check for caddr_t, define to char * if not defined.
7907         * configure: Regenerate.
7908         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
7909         (mmap_gt_pch_use_address): Likewise.
7910         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
7911
7912 2008-07-06  Richard Guenther  <rguenther@suse.de>
7913
7914         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
7915         (new_var_info): Deal with it.
7916         (solution_set_add): Likewise.
7917         (bitpos_of_field): Make signed, fix.
7918         (struct fieldoff): Remove type and decl fields.  Make size field
7919         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
7920         flags.
7921         (fieldoff_compare): Deal with it.
7922         (push_fields_onto_fieldstack): Remove has_union argument, glob
7923         adjacent non-pointer fields together.
7924         (create_function_info_for): Do not set has_union.
7925         (create_variable_info_for): Simplify.
7926
7927 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
7928
7929         * config.gcc (extra_headers): Add cross-stdarg.h for target
7930         x86_64-*-* and i?86-*-*.
7931         * config/i386/cross-stdarg.h: New.
7932         * builtins.c (std_fn_abi_va_list): New.
7933         (std_canonical_va_list_type): New.
7934         (stabilize_va_list): Replace va_list_type_node use by
7935         mtarget.canonical_va_list_type.
7936         (gimplify_va_arg_expr): Likewise.
7937         (expand_builtin_va_copy): Replace va_list_type_node use by
7938         mtarget.fn_abi_va_list.
7939         * tree-sra.c (is_va_list_type): New helper.
7940         (decl_can_be_decomposed_p): Replace
7941         va_list_type_node use by is_va_list_type.
7942         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
7943         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
7944         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
7945         * config/i386/i386-protos.h (ix86_get_valist_type): New.
7946         (ix86_enum_va_list): New.
7947         * config/i386/i386.c (sysv_va_list_type_node): New.
7948         (ms_va_list_type_node): New.
7949         (ix86_function_type_abi): Remove sorry.
7950         (ix86_build_builtin_va_list_abi): New.
7951         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
7952         for 64-bit targets.
7953         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
7954         (ix86_init_builtins_va_builtins_abi): New.
7955         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
7956         for 64-bit targets.
7957         (ix86_handle_abi_attribute): New.
7958         (attribute_spec): Add sysv_abi and ms_abi.
7959         (ix86_fn_abi_va_list): New.
7960         (ix86_canonical_va_list_type): New.
7961         (ix86_enum_va_list): New.
7962         (TARGET_FN_ABI_VA_LIST): New.
7963         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7964         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
7965         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
7966         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7967         (TARGET_ENUM_VA_LIST): New.
7968         * expr.h (std_fn_abi_va_list): New.
7969         (std_canonical_va_list_type): New.
7970         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
7971         (TARGET_CANONICAL_VA_LIST_TYPE): New.
7972         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
7973         TARGET_CANONICAL_VA_LIST_TYPE.
7974         * target.h (struct gcc_target): Add fn_abi_va_list hook
7975         and canonical_va_list_type hook.
7976
7977 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7978
7979         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
7980         integral and pointer types.
7981
7982 2008-07-04  Roger Sayle  <roger@eyesopen.com>
7983
7984         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
7985         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
7986
7987 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
7988
7989         PR target/36684
7990         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
7991
7992 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
7993
7994         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
7995         build_gimple_modify_stmt.
7996         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
7997         gimple operand.  Use fold_build* instead of build*.
7998
7999 2008-07-04  Richard Guenther  <rguenther@suse.de>
8000
8001         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
8002         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
8003         properly to compute the reachability set if we do field-sensitive PTA.
8004         * invoke.texi (max-fields-for-field-sensitive): Document default.
8005         * opts.c (decode_options): Set max-fields-for-field-sensitive to
8006         100 for optimize >= 2.
8007
8008 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8009
8010         * ggc-zone.c (lookup_page_table_if_allocated,
8011         set_page_table_entry, zone_find_object_size, alloc_small_page,
8012         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
8013         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
8014         -Wc++-compat and/or -Wcast-qual warnings.
8015
8016 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
8017
8018         PR target/36634
8019         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
8020         pic_offset_table_rtx to be marked as used here.
8021         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
8022         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
8023         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
8024         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
8025         !TARGET_SECURE_PLT.
8026
8027 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8028
8029         * alloc-pool.c (hash_descriptor, eq_descriptor,
8030         alloc_pool_descriptor): Fix -Wc++-compat warnings.
8031         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
8032         Likewise.
8033         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
8034         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
8035         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
8036         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
8037         Likewise.
8038
8039 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
8040
8041         * tree-flow.h (loop_only_exit_p): Declare.
8042         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
8043         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
8044         the number of iterations if it is constant.  Otherwise, if this is the
8045         only possible exit of the loop, use the conservative estimate on the
8046         number of iterations of the entire loop if available.
8047
8048 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
8049
8050         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
8051         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
8052         Add synchronization functions.
8053         * config/sync.c: New file.
8054         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
8055         (LIBGCC_SYNC_CFLAGS): Likewise.
8056
8057 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
8058
8059         PR target/36710
8060         * config/i386/i386.md (mode): Add TF to "mode" attribute.
8061         (*pushtf_sse): New insn pattern.
8062         (pushtf splitters): New splitters.
8063
8064 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
8065
8066         PR middle-end/35736
8067         * predict.c (build_predict_expr): Use void_type_node for the tree
8068         type, instead of NULL_TREE.
8069
8070 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
8071
8072         * config/i386/i386.c (contains_aligned_value_p): Return true
8073         for TCmode.
8074         (ix86_data_alignment): Align TCmode to 128bits.
8075         (ix86_local_alignment): Likewise.
8076
8077 2008-07-03  Andrew Haley  <aph@redhat.com>
8078
8079         PR bootstrap/33304
8080         * vec.h (VEC_TA): New.
8081         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
8082         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
8083         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
8084         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
8085         (C_COMMON_FIXED_TYPES): Remove first arg.
8086         (C_COMMON_FIXED_MODE_TYPES): Likewise.
8087         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
8088         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
8089         not to use empty macro arguments.
8090
8091 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
8092
8093         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
8094         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
8095         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
8096         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
8097         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
8098         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
8099         config/ia64/crtn.asm, config/m68hc11/larith.asm,
8100         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
8101         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
8102         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
8103         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
8104         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
8105         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
8106         config/rs6000/e500crtres64gpr.asm,
8107         config/rs6000/e500crtres64gprctr.asm,
8108         config/rs6000/e500crtrest32gpr.asm,
8109         config/rs6000/e500crtrest64gpr.asm,
8110         config/rs6000/e500crtresx32gpr.asm,
8111         config/rs6000/e500crtresx64gpr.asm,
8112         config/rs6000/e500crtsav32gpr.asm,
8113         config/rs6000/e500crtsav64gpr.asm,
8114         config/rs6000/e500crtsav64gprctr.asm,
8115         config/rs6000/e500crtsavg32gpr.asm,
8116         config/rs6000/e500crtsavg64gpr.asm,
8117         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
8118         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
8119         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
8120         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
8121         config/sparc/sol2-cn.asm: Remove .file directives.
8122
8123 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
8124
8125         * resource.c (mark_referenced_resources): Look inside
8126         UNSPEC_VOLATILEs and ASM_INPUTs.
8127
8128 2008-07-02  Ian Lance Taylor  <iant@google.com>
8129
8130         * rtlanal.c (add_reg_note): New function.
8131         * rtl.h (add_reg_note): Declare.
8132         * auto-inc-dec.c (attempt_change): Use add_reg_note.
8133         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
8134         * builtins.c (expand_builtin_longjmp): Likewise.
8135         (expand_builtin_nonlocal_goto): Likewise.
8136         * calls.c (emit_call_1, expand_call): Likewise.
8137         * cfgexpand.c (add_reg_br_prob_note): Likewise.
8138         * cfglayout.c (fixup_reorder_chain): Likewise.
8139         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
8140         (commit_one_edge_insertion): Likewise.
8141         * combine.c (move_deaths, distribute_notes): Likewise.
8142         * df-problems.c (df_set_note): Likewise.
8143         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
8144         (set_unique_reg_note): Likewise.
8145         (emit_copy_of_insn_after): Likewise.
8146         * expr.c (expand_expr_real): Likewise.
8147         * gcse.c (add_label_notes): Likewise.
8148         * haifa-sched.c (create_check_block_twin): Likewise.
8149         * jump.c (mark_jump_label_1): Likewise.
8150         * loop-doloop.c (add_test, doloop_modify): Likewise.
8151         * loop-unswitch.c (compare_and_jump_seq): Likewise.
8152         * lower-subreg.c (move_eh_region_note): Likewise.
8153         * optabs.c (emit_libcall_block): Likewise.
8154         * predict.c (predict_insn): Likewise.
8155         (combine_predictions_for_insn): Likewise.
8156         * recog.c (peephole2_optimize): Likewise.
8157         * regmove.c (try_auto_increment): Likewise.
8158         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
8159         * reload.c (find_reloads): Likewise.
8160         * reload1.c (fixup_eh_region_note): Likewise.
8161         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
8162         * reorg.c (delete_prior_computation): Likewise.
8163         (delete_computation, dbr_schedule): Likewise.
8164         * config/pa/pa.c (legitimize_pic_address): Likewise.
8165         * config/sh/sh.c (sh_reorg): Likewise.
8166
8167 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
8168
8169         PR target/36669
8170         * config/libgcc-glibc.ver: Add %exclude.
8171         * config/m32r/libgcc-glibc.ver: Likwise.
8172         * config/s390/libgcc-glibc.ver: Likwise.
8173         * config/sh/libgcc-glibc.ver: Likwise.
8174         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
8175
8176         * config/i386/libgcc-glibc.ver: New.
8177
8178         * config/i386/libgcc-x86_64-glibc.ver: Removed.
8179
8180 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
8181
8182         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
8183         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
8184         i[34567]86-*-linux*, x86_64-*-linux*.  Add
8185         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
8186         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
8187         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
8188         i[34567]86-*-linux*, x86_64-*-linux*.
8189
8190         * libgcc-std.ver: Add empty GCC_4.4.0.
8191
8192         * mkmap-symver.awk: Support multiple versions per symbol.
8193
8194         * config/i386/i386.c (ix86_init_builtins): Always define
8195         __builtin_fabsq and __builtin_copysignq with fallbacks.
8196         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
8197         and __builtin_copysignq if SSE2 isn't available.
8198
8199         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
8200         (LIBGCC2_TF_CEXT): Likwise.
8201         (TF_SIZE): Likwise.
8202
8203         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
8204
8205         * config/i386/sfp-machine.h: Moved to libgcc.
8206
8207         * config/i386/sfp-machine.h: New.
8208         * config/i386/t-linux: Likwise.
8209
8210         * config/i386/t-darwin: Remove softfp_wrap_start and
8211         softfp_wrap_end.
8212         * config/i386/t-darwin64: Likewise.
8213
8214         * config/i386/t-fprules-softfp64: Renamed to ...
8215         * config/i386/t-fprules-softfp: This.
8216
8217         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
8218         and softfp_wrap_end.
8219
8220 2008-07-02  Jason Merrill  <jason@redhat.com>
8221
8222         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
8223
8224         * tree.c (ctor_to_list): New fn.
8225         * tree.h: Declare it.
8226         (CONSTRUCTOR_ELT): New macro.
8227         (CONSTRUCTOR_NELTS): New macro.
8228
8229 2008-07-02  Richard Guenther  <rguenther@suse.de>
8230
8231         * tree-ssa-structalias.c (struct variable_info): Reorder
8232         to fill padding on 64bit hosts.  Make collapsed_to an int.
8233         (get_varinfo_fc): Deal with that.
8234         (new_var_info): Likewise.
8235         (collapse_rest_of_var): Likewise.
8236
8237 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
8238
8239         * doc/install.texi (--enable-java-home): Document.
8240         (--enable-aot-compile-rpm): Likewise.
8241         (--with-arch-directory): Likewise.
8242         (--with-os-directory): Likewise.
8243         (--with-origin-name): Likewise.
8244         (--with-arch-suffix): Likewise.
8245         (--with-jvm-root-dir): Likewise.
8246         (--with-jvm-jar-dir): Likewise.
8247         (--with-python-dir): Likewise.
8248
8249 2008-07-02  Richard Guenther  <rguenther@suse.de>
8250
8251         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
8252         from decls explicitly.  Merge operand checking from tuples.
8253
8254 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8255
8256         * tree-switch-conversion.c: Included timevar.h which I forgot before.
8257
8258 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8259
8260         * tree-switch-conversion.c: Included timevar.h
8261         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
8262
8263         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
8264
8265 2008-07-02  Martin Jambor  <mjambor@suse.cz>
8266
8267         * tree-switch-conversion.c: Corrected various comments and
8268         whitespace issues
8269         (build_constructors): Fixed minor formatting mistakes.
8270
8271         * invoke.texi (Optimize Options): Corrected the
8272         switch-conversion-max-branch-ratio parameter.
8273
8274 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
8275
8276         * final.c (asm_insn_count): Return zero for an empty asm body.
8277
8278 2008-07-02  Richard Guenther  <rguenther@suse.de>
8279
8280         * bitmap.h (bitmap_set_bit): Return bool.
8281         (bitmap_clear_bit): Likewise.
8282         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
8283         write to the bitmap if it would.
8284         (bitmap_clear_bit): Likewise.
8285         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
8286         bitmap_set_bit return value.
8287         (add_pred_graph_edge): Likewise.
8288         (add_graph_edge): Likewise.
8289         (do_sd_constraint): Likewise.
8290         (do_ds_constraint): Likewise.
8291
8292 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8293
8294         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
8295         Fix -Wc++-compat and/or -Wcast-qual warnings.
8296         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
8297         gen_regparm_prefix): Likewise.
8298         * vmsdbgout.c (write_modbeg, lookup_filename,
8299         vmsdbgout_source_line, vmsdbgout_init): Likewise.
8300
8301 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
8302
8303         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
8304         defaults.h definition apply.
8305
8306 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8307
8308         * function.c (assign_parm_remove_parallels): New.
8309         (assign_parm_setup_block_p): Do not return true for non-BLKmode
8310         PARALLELs.
8311         (assign_parm_setup_block): Do not handle them.
8312         (assign_parm_setup_reg, assign_parm_setup_stack): Call
8313         assign_parm_remove_parallels.
8314
8315 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
8316
8317         * c-typeck.c (convert_for_assignment): Use
8318         vector_targets_convertible_p.
8319         * c-common.c (vector_targets_convertible_p): New.
8320         * c-common.h (vector_targets_convertible_p): New prototype.
8321         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
8322         opaque_p_V2SI_type_node.
8323
8324 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
8325
8326         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
8327         RFmode constants.
8328
8329 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
8330
8331         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
8332         TFmode constants via two element DImode vector for hosts with
8333         HOST_BITS_PER_WIDE_INT < 64.
8334         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
8335         also for HOST_BITS_PER_WIDE_INT < 64.
8336
8337 2008-07-01  Richard Guenther  <rguenther@suse.de>
8338
8339         PR tree-optimization/36666
8340         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
8341         (get_constraint_exp_from_ssa_var): Split into ...
8342         (get_constraint_exp_for_temp): ... this ...
8343         (get_constraint_for_ssa_var): ... and that.
8344         Return constraint expressions for all touched sub-fields
8345         if the results address is not taken.
8346         (process_constraint): Remove assertion that aggregate
8347         assignments do not happen at this place.
8348         (get_constraint_for_component_ref): Add address_p argument.
8349         Return constraint expressions for all touched sub-fields
8350         if the results address is not taken.
8351         (do_deref): Use get_constraint_exp_for_temp.
8352         (get_constraint_for_1): Rename from ...
8353         (get_constraint_for): ... this.  Add the old function as wrapper.
8354         (do_structure_copy): Use get_constraint_for_1.
8355
8356 2008-07-01  Martin Jambor  <mjambor@suse.cz>
8357
8358         * Makefile.in (tree-switch-conversion.o): Add.
8359         (OBJS-common): Add tree-swtch-conversion.o.
8360         * passes.c (init_optimization_passes): Add pass_convert_switch.
8361         * tree-pass.h: (pass_convert_switch): Add.
8362         * tree-switch-conversion.c: New file.
8363         * gcc.dg/tree-ssa/cswtch.c: New testcase.
8364         * common.opt (ftree-cswtch): New option.
8365         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
8366         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
8367         * opts.c (decode_options): Set flag_tree_switch_conversion when
8368         optimization level is >= 2.
8369         * doc/invoke.texi (Optimize Options): Added description of
8370         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
8371
8372 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8373
8374         * config/darwin-driver.c (darwin_default_min_version): Fix
8375         -Wc++-compat warnings.
8376
8377 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
8378
8379         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
8380         of operand 0.
8381
8382 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8383
8384         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
8385
8386 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8387
8388         PR rtl-optimization/34744
8389         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
8390         (df_scan_free_internal): Free data structures not
8391         allocated in storage pools.
8392         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
8393         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
8394         df_scan_free_mws_vec.
8395         * dse.c (dse_step6): Free offset_map_p and offset_map_n
8396         unconditionally.
8397
8398 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
8399
8400         * config/i386/i386.c (contains_aligned_value_p): Return true
8401         for __float128.
8402         (ix86_function_arg_boundary): Return its natural boundary
8403         for __float128.
8404         (return_in_memory_32): Don't check TDmode.
8405         (ix86_split_to_parts): Support splitting into 4 parts and
8406         support TFmode for 32bit target.
8407         (ix86_split_long_move): Support splitting into 4 parts.
8408         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
8409         for SSE2.
8410         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
8411         (ix86_init_builtins): Here.
8412         (ix86_scalar_mode_supported_p): Always return true for TFmode.
8413         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
8414         'q' and 'w', respectively.
8415
8416         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
8417         TARGET_64BIT.
8418         (movtf_internal): Likewise.
8419         (<code>tf2): Likewise.
8420         (*absnegtf2_sse): Likewise.
8421         (copysign<mode>3): Likewise.
8422         (copysign<mode>3_const): Likewise.
8423         (copysign<mode>3_var): Likewise.
8424         (define_split UNSPEC_COPYSIGN): Likewise.
8425         * config/i386/sse.md (*nandtf3): Likewise.
8426         (<code>tf3): Likewise.
8427         (*<code>tf3): Likewise.
8428
8429 2008-06-30  Joey Ye  <joey.ye@intel.com>
8430             H.J. Lu  <hongjiu.lu@intel.com>
8431
8432         * global.c (compute_regsets): Set frame_pointer_needed here.
8433         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
8434
8435 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
8436
8437         * doc/install.texi (specific): Expand Windows build notes.
8438
8439 2008-06-30  Ira Rosen  <irar@il.ibm.com>
8440
8441         PR tree-optimization/36648
8442         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
8443         number of prolog iterations by step. Fix the comment.
8444
8445 2008-06-30  Richard Guenther  <rguenther@suse.de>
8446
8447         PR middle-end/36671
8448         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
8449         handle calls from ECF_MALLOC functions.
8450         (handle_pure_call): ECF_MALLOC functions do not return
8451         call-used memory.
8452         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
8453
8454 2008-06-29  Andreas Schwab  <schwab@suse.de>
8455
8456         * config/m68k/m68k.c (print_operand): Always print a float
8457         constant in hex.
8458         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
8459         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
8460         Remove macros.
8461
8462         * config/rs6000/x-linux64: Remove never used file.
8463
8464 2008-06-29  Richard Guenther  <rguenther@suse.de>
8465
8466         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
8467         prototype.
8468         (struct alias_info): Move ...
8469         * tree-ssa-alias.c: ... here.
8470         (update_alias_info): Declare.
8471         (compute_may_aliases): Call it.
8472         (update_alias_info): New function.
8473         * tree-ssa-structalias.c (update_alias_info): Move ...
8474         * tree-ssa-alias.c (update_alias_info_1): ... here.
8475         * tree-ssa-structalias.c (process_constraint_1): Remove
8476         unused from_call argument.  Rename to ...
8477         (process_constraint): ... this.  Delete old wrapper.
8478         (make_constraint_to): Adjust callers.
8479         (handle_const_call): Likewise.
8480         (handle_pure_call): Likewise.
8481         (init_base_vars): Likewise.
8482         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
8483         (find_func_aliases): We don't need structure copies for
8484         complex types.
8485         (make_constraint_from_anything): Remove.
8486         (create_variable_info_for): For globals make constraints
8487         from escaped, not from anything.
8488         (compute_points_to_sets): Do not call update_alias_info.
8489         (ipa_pta_execute): Use make_constraint_from.
8490
8491 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8492
8493         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
8494         (bitmap.o-warn, dominance.o-warn): New.
8495         * configure.ac (cxx_compat_warn): Delete.
8496         (loose_warn): Add -Wcast-qual and -Wc++-compat.
8497         * system.h: Remove #pragma diagnostic for -Wcast-qual and
8498         -Wc++-compat.
8499         * configure: Regenerate.
8500
8501         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
8502         warnings.
8503
8504 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8505
8506         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
8507         * df-scan.c (df_notes_rescan): Likewise.
8508         * ggc-page.c (set_page_table_entry): Likewise.
8509         * intl.c (gcc_gettext_width): Likewise.
8510         * varasm.c (get_unnamed_section, get_noswitch_section,
8511         get_section): Likewise.
8512
8513 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
8514
8515         * regrename.c (build_def_use): Don't copy RTX.
8516
8517 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
8518
8519         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
8520         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
8521         punctuation.  Use @ref instead of @xref.
8522         (Function Names): Remove stray @display/@end display.
8523         (C++ Attributes): Use @ref instead of @xref.
8524         (Deprecated Features): Fix punctuation around @xref.
8525         (Backwards Compatibility): Likewise.
8526         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
8527
8528 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
8529
8530         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
8531         constants for E500 double.
8532
8533 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8534
8535         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
8536         element type of const_vector.
8537
8538 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
8539
8540         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
8541         Remove FLAGS_REG clobber from expander pattern.
8542         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
8543         (anddi3, andsi3, andhi3, andqi3): Ditto.
8544         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
8545         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
8546         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
8547         (ashlsi3, ashlhi3, ashlqi3): Ditto.
8548         (ashrsi3, ashrhi3, ashrqi3): Ditto.
8549         (lshrsi3, lshrhi3, lshrqi3): Ditto.
8550         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
8551         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
8552
8553 2008-06-28  Richard Guenther  <rguenther@suse.de>
8554
8555         * tree-ssa-structalias.c (callused_id, var_callused,
8556         callused_tree): Add.
8557         (handle_pure_call): New function.
8558         (find_func_aliases): Call it.
8559         (find_what_p_points_to): Handle the call-used set.
8560         (clobber_what_escaped): Likewise.
8561         (compute_call_used_vars): New function.
8562         (init_base_vars): Init the call-used variable.
8563         (do_sd_constraint): Do not propagate the solution from CALLUSED
8564         but use CALLUSED as a placeholder.
8565         (solve_graph): Likewise.
8566         * tree-flow-inline.h (gimple_call_used_vars): New function.
8567         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
8568         (compute_call_used_vars): Declare.
8569         * tree-ssa-alias.c (set_initial_properties): Call
8570         compute_call_used_vars.
8571         (reset_alias_info): Clear call-used variables.
8572         (add_call_clobber_ops): Assert we are not called for const/pure
8573         functions.  Remove handling of them.
8574         (add_call_read_ops): Handle pure functions by adding the
8575         call-used set of variables as VUSEs.
8576         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
8577         (delete_tree_ssa): Free it.
8578         * tree-dfa.c (remove_referenced_var): Clear the var from the
8579         call-used bitmap.
8580
8581 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
8582
8583         * tree.c (build_varargs_function_type_list): New.
8584         (build_function_type_list_1): New.
8585         (build_function_type_list): Use build_function_type_list_1.
8586         * tree.h (build_varargs_function_type_list): New.
8587
8588 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8589
8590         PR target/34856
8591         * config/spu/spu.c (spu_builtin_splats): Do not generate
8592         invalid CONST_VECTOR expressions.
8593         (spu_expand_vector_init): Likewise.
8594
8595 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
8596
8597         * optabs.c (libfunc_decls): New variable.
8598         (libfunc_decl_hash, libfunc_decl_eq): New functions.
8599         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
8600         for the same function twice.
8601
8602 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
8603
8604         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
8605         ix86_expand_binary_operator directly.
8606         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
8607         for operand 2.
8608         (*ashrti3_1): Ditto.
8609         (*lshrti3_1): Ditto.
8610         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
8611         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
8612         using only one splitter.  Conditionaly execute splitter before or
8613         after peephole2 pass.
8614         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
8615         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
8616         Use only one alternative in asm template.
8617         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
8618         in asm template.
8619         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
8620         "J" operand constraint for operand 2.
8621         (*ashldi3_cconly_rex64): Ditto.
8622         (*ashrdi3_cmp_rex64): Ditto.
8623         (*ashrdi3_cconly_rex64): Ditto.
8624         (*lshrdi3_cmp_rex64): Ditto.
8625         (*lshrdi3_cconly_rex64): Ditto.
8626         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
8627         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
8628         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
8629         gen_x86_shrd_1.
8630
8631 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
8632
8633         * gimplify.c (omp_is_private): Don't return true if decl is not
8634         already private on #pragma omp for or #pragma omp parallel for.
8635
8636         PR debug/36617
8637         * tree-cfg.c (struct move_stmt_d): Replace block field with
8638         orig_block and new_block fields.
8639         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
8640         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
8641         (move_block_to_fn): Replace vars_map and new_label_map arguments
8642         with struct move_stmt_d pointer.
8643         (replace_block_vars_by_duplicates): New function.
8644         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
8645         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
8646         all subblocks of ORIG_BLOCK to the new function.  Call
8647         replace_block_vars_by_duplicates.
8648         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
8649         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
8650         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
8651         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
8652         (expand_omp): Temporarily set input_location to the location of
8653         region's controlling stmt.
8654         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
8655         BIND_EXPR, push ctx->block_vars and gimplification vars into
8656         the BIND_EXPR and its block's BLOCK_VARS instead of directly
8657         into dest function.
8658         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
8659         there are any BLOCK_VARS.
8660         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
8661         OMP_PARALLEL or OMP_TASK stmt.
8662         (lower_omp): Save and restore input_location around the lower_omp_1
8663         call.
8664
8665 2008-06-27  Richard Guenther  <rguenther@suse.de>
8666
8667         PR tree-optimization/36400
8668         PR tree-optimization/36373
8669         PR tree-optimization/36344
8670         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
8671         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
8672         (update_alias_info): Remove call clobbering code.
8673         (make_constraint_to): New helper function.
8674         (make_escape_constraint): Likewise.
8675         (handle_rhs_call): Use it on all pointer containing arguments.
8676         Also mark the static chain escaped.
8677         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
8678         instead of ANYTHING.
8679         (make_constraint_from): New helper split out from ...
8680         (make_constraint_from_anything): ... here.
8681         (find_func_aliases): Add constraints for escape sites.
8682         (intra_create_variable_infos): Make constraints from NONLOCAL
8683         for parameters.
8684         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
8685         as ANYTHING.
8686         (clobber_what_p_points_to): Remove.
8687         (clobber_what_escaped): New function.
8688         (init_base_vars): Init NONLOCAL and ESCAPED.
8689         (do_sd_constraint): Do not propagate the solution from ESCAPED
8690         but use ESCAPED as a placeholder.
8691         (solve_graph): Likewise.
8692         * tree-flow.h (clobber_what_p_points_to): Remove.
8693         (clobber_what_escaped): Declare.
8694         * tree-ssa-alias.c (set_initial_properties): Call it.
8695         Remove code clobbering escaped pointers.
8696
8697 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8698
8699         * function.c (allocate_struct_function): Only allocate a unique
8700         funcdef_no if the decl is nonzero.
8701
8702 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
8703
8704         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
8705         * config/mips/mips.c (mips_split_const_insns): New function.
8706         * config/mips/mips.md (move_type): New attribute.
8707         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
8708         (dword_mode): New attribute.
8709         (type): Avoid long line.  Map "move_type"s to "type"s,
8710         choosing "multi" for doubleword moves if appropriate.
8711         Swap MTC/MFC comments to match their declaration order.
8712         (extended_mips16): Default to "yes" if "move_type" is "sll0",
8713         "type" is "branch" or "jal" is "direct".
8714         (length): Handle "extended_mips16" first.  Make the default
8715         "0" for "ghost" instructions.  Set the length from "move_type".
8716         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
8717         of "type", with "sll0" for the register alternative.  Remove the
8718         "extended_mips16" attribute.
8719         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
8720         of "type", with "shift_shift" for the register alternative.
8721         Remove the "length" attribute.
8722         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
8723         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
8724         of "type", with "andi" for the register alternative.
8725         (*zero_extendqihi2): Likewise.
8726         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
8727         of "andi" instead of a "type" of "arith".
8728         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
8729         instead of "type".
8730         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
8731         (mov_<store>r, *mov<mode>_ra): Likewise.
8732         (extendsidi2): Use "move_type" instead of "type", with "move"
8733         for the register alternative.
8734         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
8735         of "type", with "signext" for the register alternative.
8736         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
8737         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
8738         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
8739         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
8740         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
8741         (unnamed branch insn): Likewise.
8742         (*movdi_gp32_fp64): Fold into...
8743         (*movdi_32bit): ...here.
8744         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
8745         (*movdf_hardfloat): ...this new pattern.
8746         (*movdf_softfloat): Remove redundant FPR alternatives.
8747         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
8748         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
8749         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
8750         the "move" attribute.
8751         (*movdi_32bit): Use "move_type" instead of "type" and remove the
8752         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
8753         and "store" for COP loads and stores.
8754         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
8755         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
8756         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
8757         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
8758         (*movtf_mips16, *movv2sf): Likewise.
8759         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
8760         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
8761         (mfhc1<mode>): Use "move_type" instead of "move".
8762         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
8763         (loadgp_blockage): Remove the "length" attribute.
8764         (blockage, set_got_version, update_got_version): Likewise.
8765         (call_internal): Remove the "extended_mips16" attribute.
8766         (call_value_internal, call_value_multiple_internal): Likewise.
8767         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
8768         instead of "move".
8769         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
8770         the "length" attribute.
8771
8772 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8773
8774         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
8775         -Wcast-qual warnings.
8776         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
8777         handle_pragma_pop_macro): Likewise.
8778         * collect2.c (resolve_lib_name): Likewise.
8779         * config/arc/arc.c (arc_init): Likewise.
8780         * config/arm/arm.c (neon_builtin_compare,
8781         locate_neon_builtin_icode): Likewise.
8782         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
8783         * config/bfin/bfin.c (bfin_init_machine_status,
8784         bfin_optimize_loop): Likewise.
8785         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
8786         * config/cris/cris.c (cris_init_expanders): Likewise.
8787         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
8788         * config/darwin.c (machopic_indirection_eq,
8789         machopic_indirection_name, machopic_output_indirection): Likewise.
8790         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
8791         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
8792         frv_optimize_membar): Likewise.
8793         * config/i386/cygwin.h (mingw_scan,
8794         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
8795         * config/i386/cygwin1.c (mingw_scan): Likewise.
8796         * config/i386/i386.c (machopic_output_stub): Likewise.
8797         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
8798         i386_pe_unique_section): Likewise.
8799         * config/ia64/ia64.c (ia64_init_machine_status,
8800         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
8801         Likewise.
8802         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
8803         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
8804         * config/m68k/m68k.c (m68k_handle_option,
8805         m68k_sched_md_init_global): Likewise.
8806         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
8807         mcore_unique_section): Likewise.
8808         * config/mips/mips.c (mips_block_move_straight,
8809         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
8810         Likewise.
8811         * config/mmix/mmix.c (mmix_init_machine_status,
8812         mmix_encode_section_info): Likewise.
8813         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
8814         * config/rs6000/rs6000.c (rs6000_init_machine_status,
8815         print_operand_address, output_toc, redefine_groups,
8816         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
8817         * config/s390/s390.c (s390_init_machine_status): Likewise.
8818         * config/score/score.c (score_block_move_straight,
8819         score_block_move_loop_body): Likewise.
8820         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
8821         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
8822         * emit-rtl.c (find_auto_inc): Likewise.
8823         * gcc.c (translate_options, process_command): Likewise.
8824         * reorg.c (dbr_schedule): Likewise.
8825         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
8826         * xcoffout.c (xcoffout_declare_function): Likewise.
8827
8828 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
8829
8830         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
8831         ipa-pta working again.
8832
8833 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
8834
8835         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
8836         genautomata.
8837
8838 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
8839
8840         * config.gcc (powerpc*-*-*): Add new core e500mc.
8841         * config/rs6000/e500mc.md: New file.
8842         * config/rs6000/rs6000.c (processor_costs): Add new costs for
8843         e500mc.
8844         (rs6000_override_options): Add e500mc case to
8845         processor_target_table. Altivec and Spe options not allowed
8846         with e500mc. Add isel instruction to e500mc by
8847         default. Initialize rs6000_cost for e500mc.
8848         (rs6000_issue_rate): Set issue rate for e500mc.
8849         * config/rs6000/rs6000.h (processor_type): Add
8850         PROCESSOR_PPCE500MC.
8851         (ASM_CPU_SPEC): Add e500mc.
8852         Set TARGET_ISEL to rs6000_isel.
8853         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
8854         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
8855         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
8856         Include e500mc.md.
8857         * doc/invoke.texi: Add e500mc to list of cpus.
8858
8859 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
8860
8861         PR c/34867
8862         * c-lex.c (lex_charconst): Initialize unsignedp.
8863
8864 2008-06-27  Olivier Hainque  <hainque@adacore.com>
8865
8866         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
8867         documented assumptions.
8868
8869 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
8870
8871         * dwarf2out.c: Remove trailing white spaces.  Break long line
8872         in comments.
8873
8874 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
8875
8876         * libfuncs.h (LTI_synchronize): New libfunc_index.
8877         (synchronize_libfunc): Declare.
8878         * builtins.c (expand_builtin_synchronize): Consider using
8879         synchronize_libfunc before falling back on an asm blockage.
8880         * config/mips/mips.c: Include libfuncs.h
8881         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
8882
8883 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
8884
8885         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
8886         parameter.  Copy stack_reg to r11 where appropriate.
8887         (no_global_regs_above): Add gpr parameter.
8888         (rs6000_stack_info): Only add padding for SPE save area if we
8889         are saving SPE GPRs and CR.
8890         (saveres_routine_syms): New variable.
8891         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
8892         Define.
8893         (rs6000_savres_routine_sym): New function.
8894         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
8895         split out of...
8896         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
8897         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
8898         Tweak FPR out-of-line saving.
8899         (rs6000_make_savres_rtx): New function.
8900         (rs6000_use_multiple_p): New function.
8901         (rs6000_savres_strategy): New function.
8902         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
8903         out-of-line if appropriate.
8904         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
8905         if we are optimizing for size.
8906         (GP_SAVE_INLINE): Define.
8907         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
8908         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
8909         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
8910         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
8911         (*save_fpregs_<mode>): Add use of r11.
8912         (*restore_gpregs_<mode>): New insn.
8913         (*return_and_restore_gpregs_<mode>): New insn.
8914         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
8915         use r11.
8916         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
8917         (*restore_gpregs_spe): New insn.
8918         (*return_and_restore_gpregs_spe): New insn.
8919         * config/rs6000/predicates.md (save_world_operation): Fix check.
8920
8921 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8922
8923         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
8924         this point, so assert that.
8925
8926 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
8927
8928         * cfganal.c: Include vec.h and vecprim.h.
8929         (compute_idf): Import from...
8930         * tree-into-ssa (compute_idf): ...here.
8931         * basic-block.h (compute_idf): Export.
8932
8933 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
8934
8935         * c-decl.c (merge_decls): Use !current_function_decl to check for
8936         extern declaration of C99 inline function being at file scope.
8937
8938 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
8939
8940         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
8941
8942 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8943
8944         * alias.c (record_alias_subset, init_alias_analysis): Fix
8945         -Wc++-compat and/or -Wcast-qual warnings.
8946         * attribs.c (lookup_attribute_spec): Likewise.
8947         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
8948         copy_bb, connect_traces,
8949         find_rarely_executed_basic_blocks_and_cr): Likewise.
8950         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
8951         note_btr_set, migrate_btr_defs): Likewise.
8952         * builtins.c (result_vector, expand_builtin_memcpy,
8953         expand_builtin_mempcpy_args, expand_builtin_strncpy,
8954         builtin_memset_read_str, expand_builtin_printf,
8955         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
8956         Likewise.
8957         * caller-save.c (mark_set_regs): Likewise.
8958         * calls.c (expand_call, emit_library_call_value_1): Likewise.
8959         * cgraph.c (cgraph_edge): Likewise.
8960         * combine.c (likely_spilled_retval_1): Likewise.
8961         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
8962         htab_counts_entry_del, get_coverage_counts): Likewise.
8963         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
8964         new_cselib_val): Likewise.
8965         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
8966         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
8967         Likewise.
8968         * df-core.c (df_compact_blocks): Likewise.
8969         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
8970         * df-scan.c (df_grow_reg_info, df_ref_create,
8971         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
8972         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
8973         df_record_entry_block_defs, df_record_exit_block_uses,
8974         df_bb_verify): Likewise.
8975         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
8976         DF_REF_EXTRACT_MODE_CONST): New.
8977         * dominance.c (get_immediate_dominator, get_dominated_by,
8978         nearest_common_dominator, root_of_dom_tree,
8979         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
8980         -Wc++-compat and/or -Wcast-qual warnings.
8981         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
8982         record_store, replace_read, check_mem_read_rtx, scan_insn,
8983         dse_step1, dse_record_singleton_alias_set): Likewise.
8984         * dwarf2asm.c (dw2_force_const_mem): Likewise.
8985
8986 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8987
8988         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
8989         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
8990         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
8991         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
8992         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
8993         add_ranges_num, add_ranges_by_labels, file_info_cmp,
8994         file_name_acquire, output_file_names, add_const_value_attribute,
8995         premark_used_types_helper, file_table_eq, file_table_hash,
8996         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
8997         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
8998         -Wcast-qual warnings.
8999         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
9000         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
9001         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
9002         gen_reg_rtx, start_sequence, init_emit): Likewise.
9003         * et-forest.c (et_new_occ, et_new_tree): Likewise.
9004         * except.c (init_eh_for_function, gen_eh_region,
9005         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
9006         arh_to_landing_pad, arh_to_label, add_action_record,
9007         add_call_site, switch_to_exception_section): Likewise.
9008         * expmed.c (synth_mult): Likewise.
9009         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
9010         store_expr): Likewise.
9011         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
9012         Likewise.
9013         * function.c (assign_stack_temp_for_type,
9014         allocate_struct_function, match_asm_constraints_1): Likewise.
9015         * gcov-io.c (gcov_allocate): Likewise.
9016         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
9017         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
9018         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
9019         record_one_set, insert_expr_in_table, insert_set_in_table,
9020         dump_hash_table, compute_hash_table_work, alloc_hash_table,
9021         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
9022         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
9023         -Wcast-qual warnings.
9024
9025 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9026
9027         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
9028         -Wcast-qual warnings.
9029         * gcc.c (process_command): Likewise.
9030         * genattrtab.c (oballoc): Use XOBNEW.
9031         (oballocvec): Define.
9032         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
9033         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
9034         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
9035         -Wc++-compat and/or -Wcast-qual warnings.
9036         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
9037         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
9038         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
9039         gen_presence_absence_set, gen_automaton, gen_regexp_el,
9040         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
9041         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
9042         add_excls, process_presence_absence_names,
9043         process_presence_absence_patterns, add_presence_absence,
9044         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
9045         get_free_state, add_arc, get_free_automata_list_el,
9046         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
9047         transform_3, cache_presence, create_ainsns, create_automata,
9048         create_state_ainsn_table, dfa_insn_code_enlarge,
9049         output_trans_func, output_min_issue_delay_func,
9050         output_dead_lock_func, output_reset_func,
9051         output_get_cpu_unit_code_func, output_dfa_start_func,
9052         expand_automata): Likewise.
9053         * genextract.c (gen_insn): Likewise.
9054         * gengtype-lex.l: Likewise.
9055         * gengtype.c (read_input_list, adjust_field_type,
9056         process_gc_options): Likewise.
9057         * genoutput.c (note_constraint): Likewise.
9058         * genpreds.c (mangle, add_constraint): Likewise.
9059         * genrecog.c (process_define_predicate, new_decision,
9060         add_to_sequence): Likewise.
9061         * gensupport.c (record_insn_name): Likewise.
9062
9063 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9064
9065         * config/i386/driver-i386.c (detect_caches_amd,
9066         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
9067         and/or -Wcast-qual warnings.
9068         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
9069         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
9070         gt_pch_save): Likewise.
9071         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
9072         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
9073         * global.c (compute_regsets): Likewise.
9074         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
9075         finish_graph_dump_file): Likewise.
9076         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
9077         unlink_bb_notes): Likewise.
9078         * integrate.c (get_hard_reg_initial_val): Likewise.
9079         * ipa-prop.c (ipa_push_func_to_list): Likewise.
9080         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
9081         * local-alloc.c (update_equiv_regs): Likewise.
9082         * loop-invariant.c (check_invariant_table_size,
9083         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
9084         Likewise.
9085         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
9086         altered_reg_used, mark_altered): Likewise.
9087         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
9088         insert_var_expansion_initialization,
9089         combine_var_copies_in_loop_exit, apply_opt_in_copies,
9090         release_var_copies): Likewise.
9091         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
9092         analyze_matrix_decl, add_allocation_site, analyze_transpose,
9093         analyze_accesses_for_phi_node, check_var_notmodified_p,
9094         check_allocation_function, find_sites_in_func,
9095         record_all_accesses_in_func, transform_access_sites,
9096         transform_allocation_sites): Likewise.
9097         * omp-low.c (new_omp_region, create_omp_child_function_name,
9098         check_omp_nesting_restrictions, check_combined_parallel,
9099         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
9100         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
9101         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
9102         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
9103         Likewise.
9104         * opts-common.c (prune_options): Likewise.
9105         * opts.c (add_input_filename, print_filtered_help,
9106         get_option_state): Likewise.
9107         * params.c (add_params): Likewise.
9108         * passes.c (set_pass_for_id, next_pass_1,
9109         do_per_function_toporder, pass_fini_dump_file): Likewise.
9110         * postreload.c (reload_cse_simplify_operands): Likewise.
9111         * predict.c (tree_predicted_by_p, tree_predict_edge,
9112         clear_bb_predictions, combine_predictions_for_bb): Likewise.
9113
9114 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9115
9116         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
9117         warnings.
9118         * recog.c (check_asm_operands, validate_change_1): Likewise.
9119         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
9120         subst_asm_stack_regs): Likewise.
9121         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
9122         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
9123         * regmove.c (reg_is_remote_constant_p): Likewise.
9124         * regrename.c (regrename_optimize, scan_rtx_reg,
9125         kill_clobbered_value, kill_set_value, kill_autoinc_value):
9126         Likewise.
9127         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
9128         regstat_compute_calls_crossed): Likewise.
9129         * reload1.c (init_reload, new_insn_chain,
9130         has_nonexceptional_receiver, reload, copy_reloads,
9131         calculate_needs_all_insns, init_elim_table): Likewise.
9132         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
9133         * rtl.c (shallow_copy_rtx_stat): Likewise.
9134         * rtlanal.c (parms_set): Likewise.
9135         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
9136         sbitmap_resize, sbitmap_vector_alloc): Likewise.
9137         * sched-ebb.c (earliest_block_with_similiar_load,
9138         add_deps_for_risky_insns): Likewise.
9139         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
9140         schedule_region): Likewise.
9141         * see.c (eq_descriptor_pre_extension,
9142         hash_descriptor_pre_extension, hash_del_pre_extension,
9143         eq_descriptor_properties, hash_descriptor_properties,
9144         hash_del_properties, see_seek_pre_extension_expr,
9145         see_initialize_data_structures, see_print_register_properties,
9146         see_print_pre_extension_expr, see_delete_merged_def_extension,
9147         see_delete_unmerged_def_extension, see_emit_use_extension,
9148         see_pre_delete_extension, see_map_extension, see_commit_changes,
9149         see_analyze_merged_def_local_prop,
9150         see_analyze_merged_def_local_prop,
9151         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
9152         see_set_prop_merged_def, see_set_prop_unmerged_def,
9153         see_set_prop_unmerged_use, see_print_one_extension,
9154         see_merge_one_use_extension, see_merge_one_def_extension,
9155         see_store_reference_and_extension, see_update_uses_relevancy,
9156         see_update_defs_relevancy): Likewise.
9157         * statistics.c (hash_statistics_hash, hash_statistics_eq,
9158         hash_statistics_free, curr_statistics_hash): Likewise.
9159         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
9160         expand_asm_operands, expand_return, case_bit_test_cmp,
9161         expand_case): Likewise.
9162         * stor-layout.c (start_record_layout): Likewise.
9163         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
9164         gt_pch_save_stringpool): Likewise.
9165         * tree-data-ref.c (hash_stmt_vertex_info,
9166         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
9167         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
9168
9169 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
9170
9171         PR target/36627
9172         * config/i386/i386.md : Change constraints of HImode and QImode
9173         immediate operands from "i" to "n".  Change SImode "ni" constraint to
9174         "i" and SImode "rmi" constraint to "g".  Remove all constraints
9175         from const0_operand and const1_operand predicated operands.
9176         (i): Change QImode and HImode attribute from "i" to "n".
9177         (*subqi_2): Change HImode operands to QImode.
9178         (*subqi_3): Ditto.
9179
9180 2008-06-25  Olivier Hainque  <hainque@adacore.com>
9181
9182         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
9183         sed substitutions.
9184
9185 2008-06-25  Richard Guenther  <rguenther@suse.de>
9186
9187         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
9188         not overflow the result type.
9189
9190 2008-06-25  Richard Guenther  <rguenther@suse.de>
9191
9192         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
9193         (vn_lookup): Likewise.
9194
9195 2008-06-25  Richard Guenther  <rguenther@suse.de>
9196
9197         PR tree-optimization/35518
9198         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
9199         * tree-sra.c (instantiate_element): Use fold_build3 to build
9200         BIT_FIELD_REFs.
9201         (try_instantiate_multiple_fields): Likewise.
9202
9203 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9204
9205         * config/rs6000/rs6000.md: Change all string instruction's clobber to
9206         be early clobbers.
9207
9208 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9209
9210         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
9211         use_backchain_to_restore_sp to true
9212         if the offset of the link register save area would go over the 32k - 1
9213         offset limit of the load
9214         instructions.
9215
9216 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
9217
9218         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
9219         anchor for the type-punning blurb.  Cross-reference "Structures
9220         unions enumerations and bit-fields implementation".  Provide a
9221         cast-through-pointer example.  Make final sentence self-contained.
9222         * doc/implement-c.texi (Structures unions enumerations and
9223         bit-fields implementation): Cross-reference the type-punning blurb
9224         in the -fstrict-aliasing documentation.
9225
9226 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9227
9228         PR middle-end/36594
9229         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
9230         the memory instead of the memory itself for the save area.
9231
9232 2008-06-24  Olivier Hainque  <hainque@adacore.com>
9233             Nicolas Roche  <roche@adacore.com>
9234
9235         * gengtype.c (srcdir_len): size_t instead of int.
9236         (get_file_realbasename): New function.  For F a filename, the real
9237         basename of F, with all the path components stripped.
9238         (get_file_srcdir_relative_path): New function.  For F a filename, the
9239         relative path to F from $(srcdir).
9240         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
9241         get_file_realbasename.  Adjust the head comment.
9242         (get_prefix_langdir_index): New function. For F a filename, return the
9243         lang_dir_names[] relative index of the language directory that is
9244         a prefix in F.
9245         (get_file_langdir): For F a filename, return the name of the language
9246         directory where F is located.
9247         (get_file_gtfilename): New function. The gt- output file name for an
9248         input filename F.
9249         (get_output_file_with_visibility): Replace in-line computations with
9250         uses of get_file_gtfilename and get_prefix_langdir_index.
9251         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
9252
9253 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
9254
9255         PR tree-optimization/36504
9256         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
9257         references without base address.
9258
9259 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9260
9261         PR middle-end/36584
9262         * calls.c (expand_call): Increase alignment for recursive functions.
9263
9264 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
9265
9266         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
9267         (TARGET_FUNCTION_VALUE): New define.
9268         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
9269         * config/avr/avr.h (FUNCTION_VALUE): Remove.
9270
9271 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9272
9273         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
9274         (fmod<mode>3): Ditto.
9275         (remainderxf3): Ditto.
9276         (remainder<mode>3): Ditto.
9277
9278 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
9279
9280         PR target/36533
9281         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
9282         REG is a hard register.
9283
9284         PR tree-optimization/36508
9285         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
9286         499, don't check it at all in release compilers.
9287
9288 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
9289
9290         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
9291         together with SSE_TARGET_MATH to disable insn pattern.
9292         (*fop_<MODEF:mode>_2_i387): Ditto.
9293         (*fop_<MODEF:mode>_3_i387): Ditto.
9294
9295 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
9296
9297         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
9298
9299 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
9300
9301         PR middle-end/34906
9302         * gimplify.c (gimplify_asm_expr): Check the return code of
9303         parse_output_constraint call, set function return and is_inout
9304         value if it failed.
9305
9306 2008-06-22  Ian Lance Taylor  <iant@google.com>
9307
9308         * c-lex.c (narrowest_unsigned_type): Change itk to int.
9309         (narrowest_signed_type): Likewise.
9310         * c-typeck.c (c_common_type): Change local variable mclass to enum
9311         mode_class, twice.
9312         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
9313         tcc_comparison, not the tree code itself.
9314         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
9315         (c_expand_expr): Cast modifier to enum expand_modifier.
9316         * c-common.h (C_RID_CODE): Add casts.
9317         (C_SET_RID_CODE): Define.
9318         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
9319         (c_lex_one_token): Add cast to avoid warning.
9320         (c_parser_objc_type_name): Rename local typename to type_name.
9321         (check_no_duplicate_clause): Change code parameter to enum
9322         omp_clause_code.
9323         (c_parser_omp_var_list_parens): Change kind parameter to enum
9324         omp_clause_code.
9325         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
9326         c_parser_omp_list_var_parens.
9327         (c_parser_omp_threadprivate): Likewise.
9328         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
9329         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
9330         * c-format.c (NO_FMT): Define.
9331         (printf_length_specs): Use NO_FMT.
9332         (asm_fprintf_length_specs): Likewise.
9333         (gcc_diag_length_specs): Likewise.
9334         (scanf_length_specs): Likewise.
9335         (strfmon_length_specs): Likewise.
9336         (gcc_gfc_length_specs): Likewise.
9337         (printf_flag_specs): Change 0 to STD_C89.
9338         (asm_fprintf_flag_specs): Likewise.
9339         (gcc_diag_flag_specs): Likewise.
9340         (gcc_cxxdiag_flag_specs): Likewise.
9341         (scanf_flag_specs): Likewise.
9342         (strftime_flag_specs): Likewise.
9343         (strfmon_flag_specs): Likewise.
9344         (print_char_table): Likewise.
9345         (asm_fprintf_char_table): Likewise.
9346         (gcc_diag_char_table): Likewise.
9347         (gcc_tdiag_char_table): Likewise.
9348         (gcc_cdiag_char_table): Likewise.
9349         (gcc_cxxdiag_char_table): Likewise.
9350         (gcc_gfc_char_table): Likewise.
9351         (scan_char_table): Likewise.
9352         (time_char_table): Likewis.
9353         (monetary_char_table): Likewise.
9354         * c-format.h (BADLEN): Likewise.
9355
9356 2008-06-21  Ian Lance Taylor  <iant@google.com>
9357
9358         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
9359         Define END_OF_BASE_TREE_CODES around inclusion.
9360         * tree.c (tree_code_type): New global array.
9361         (tree_code_length, tree_code_name): Likewise.
9362         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
9363         $(lang_tree_files).
9364         (all-tree.def, s-alltree): New targets.
9365         (gencheck.h, s-gencheck): Remove.
9366         (tree.o): Depend upon all-tree.def.
9367         (build/gencheck.o): Remove gencheck.h dependency.
9368         (mostlyclean): Don't remove gencheck.h.
9369         * c-common.h (enum c_tree_code): Remove.
9370         * c-lang.c (tree_code_type): Remove.
9371         (tree_code_length, tree_code_name): Remove.
9372         * gencheck.c (tree_codes): Include all-tree.def, rather than
9373         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
9374         after it is used.
9375         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
9376         than tree.def.
9377         * cp/cp-tree.h (enum cplus_tree_code): Remove.
9378         (operator_name_info): Size to MAX_TREE_CODES.
9379         (assignment_operator_name_info): Likewise.
9380         * cp/cp-lang.c (tree_code_type): Remove.
9381         (tree_code_length, tree_code_name): Remove.
9382         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
9383         (assignment_operator_name_info): Likewise.
9384         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
9385         MAX_TREE_CODES.
9386         * cp/mangle.c (write_expression): Likewise.
9387         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
9388         * fortran/f95-lang.c (tree_code_type): Remove.
9389         (tree_code_length, tree_code_name): Remove.
9390         * java/java-tree.h (enum java_tree_code): Remove.
9391         * java/lang.c (tree_code_type): Remove.
9392         (tree_code_length, tree_code_name): Remove.
9393         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
9394         * objc/objc-act.h (enum objc_tree_code): Remove.
9395         * objc/objc-lang.c (tree_code_type): Remove.
9396         (tree_code_length, tree_code_name): Remove.
9397         * objcp/objcp-lang.c (tree_code_type): Remove.
9398         (tree_code_length, tree_code_name): Remove.
9399         * ada/ada-tree.h (enum gnat_tree_code): Remove.
9400         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
9401         * ada/misc.c (tree_code_type): Remove.
9402         (tree_code_length, tree_code_name): Remove.
9403
9404 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
9405
9406         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
9407         the grand_bitmap_obstack.
9408
9409 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9410
9411         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
9412         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
9413         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
9414         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
9415         move_stmt_r, new_label_mapper): Likewise.
9416         * tree-complex.c (cvc_lookup): Likewise.
9417         * tree-dfa.c (create_function_ann): Likewise.
9418         * tree-dump.c (dump_register): Likewise.
9419         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
9420         find_phi_replacement_condition): Likewise.
9421         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
9422         tree_function_versioning): Likewise.
9423         * tree-into-ssa.c (cmp_dfsnum): Likewise.
9424         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
9425         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
9426         get_nonlocal_debug_decl, convert_nonlocal_reference,
9427         convert_nonlocal_omp_clauses, get_local_debug_decl,
9428         convert_local_reference, convert_local_omp_clauses,
9429         convert_nl_goto_reference, convert_nl_goto_receiver,
9430         convert_tramp_reference, convert_call_expr): Likewise.
9431         * tree-outof-ssa.c (contains_tree_r): Likewise.
9432         * tree-parloops.c (reduction_phi, initialize_reductions,
9433         eliminate_local_variables_1, add_field_for_reduction,
9434         add_field_for_name, create_phi_for_local_result,
9435         create_call_for_reduction_1, create_loads_for_reductions,
9436         create_stores_for_reduction, create_loads_and_stores_for_name):
9437         Likewise.
9438         * tree-phinodes.c (allocate_phi_node): Likewise.
9439         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
9440         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
9441         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
9442         * tree-ssa-coalesce.c (compare_pairs): Likewise.
9443         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
9444         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
9445         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
9446         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
9447         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
9448         vn_nary_op_insert): Likewise.
9449         * tree-ssa.c (redirect_edge_var_map_add,
9450         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
9451         * tree-vectorizer.c (vectorize_loops): Likewise.
9452         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
9453         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
9454         tree_cons_stat, build1_stat, build_variant_type_copy,
9455         decl_init_priority_lookup, decl_fini_priority_lookup,
9456         decl_priority_info, decl_restrict_base_lookup,
9457         decl_restrict_base_insert, decl_debug_expr_lookup,
9458         decl_debug_expr_insert, decl_value_expr_lookup,
9459         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
9460         type_hash_add, get_file_function_name, tree_check_failed,
9461         tree_not_check_failed, tree_range_check_failed,
9462         omp_clause_range_check_failed, build_omp_clause,
9463         build_vl_exp_stat): Likewise.
9464         * value-prof.c (gimple_histogram_value,
9465         gimple_duplicate_stmt_histograms): Likewise.
9466         * var-tracking.c (attrs_list_insert, attrs_list_copy,
9467         unshare_variable, variable_union_info_cmp_pos, variable_union,
9468         dataflow_set_different_1, dataflow_set_different_2,
9469         vt_find_locations, variable_was_changed, set_variable_part,
9470         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
9471         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
9472         section_entry_hash, object_block_entry_eq,
9473         object_block_entry_hash, create_block_symbol,
9474         initialize_cold_section_name, default_function_rodata_section,
9475         strip_reg_name, set_user_assembler_name, const_desc_eq,
9476         build_constant_desc, output_constant_def, lookup_constant_def,
9477         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
9478         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
9479         default_internal_label): Likewise.
9480         * varray.c (varray_init, varray_grow): Likewise.
9481         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
9482
9483 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
9484
9485         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
9486         operators for "test" insn.  Macroize insn using SWI mode macro.
9487         (*jcc_fused_2): Ditto.
9488         (*jcc_fused_3): Macroize insn using SWI mode macro.
9489         (*jcc_fused_4): Ditto.
9490
9491 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
9492
9493         * tree-ssa-pre.c: Fix typo in comment.
9494         (init_antic, fini_antic): Add explicit funtions for
9495         initializing and deinitializing ANTIC and AVAIL sets.
9496         (create_expression_by_pieces): Fix typo in comment.
9497         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
9498         (execute_pre): Eventually dump details about ANTIC_IN.
9499
9500 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9501
9502         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
9503         * gcc.c (translate_options, init_spec, store_arg, read_specs,
9504         add_to_obstack, file_at_path, find_a_file, execute,
9505         add_preprocessor_option, add_assembler_option, add_linker_option,
9506         process_command, insert_wrapper, do_option_spec, do_self_spec,
9507         spec_path, do_spec_1, is_directory, main, used_arg,
9508         getenv_spec_function): Likewise.
9509         * tlink.c (symbol_hash_lookup, file_hash_lookup,
9510         demangled_hash_lookup, symbol_push, file_push, frob_extension):
9511         Likewise.
9512
9513 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
9514
9515         * doc/rtl.texi: Updated subreg section.
9516
9517 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
9518
9519         PR c++/36523
9520         * cgraphunit.c (cgraph_process_new_functions): Don't clear
9521         node->needed and node->reachable.
9522         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
9523         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
9524         (expand_task_call): Don't call expand_task_copyfn.
9525         (expand_task_copyfn): Renamed to...
9526         (finalize_task_copyfn): ... this.
9527
9528 2008-06-19  Jan Hubicka  <jh@suse.cz>
9529
9530         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
9531         clobbering framepointer.
9532
9533 2008-06-19  Jan Hubicka  <jh@suse.cz>
9534
9535         * tree-optimize.c (execute_early_local_optimizations): Set
9536         cgraph_state only at first invocation.
9537
9538 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9539
9540         * system.h (-Wc++-compat): Activate as a warning, no an error.
9541
9542 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
9543
9544         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
9545         instead of "#" in insn asm template.
9546         (*jcc_fused_2): Ditto.
9547
9548 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
9549
9550         * config/i386/i386.h (ix86_tune_indices)
9551         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
9552         (TARGET_FUSE_CMP_AND_BRANCH): New define.
9553         * config/i386/i386.md (*jcc_fused_1): New insn pattern
9554         (*jcc_fused_2): Ditto.
9555         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
9556         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
9557         (print operand): Handle 'E' and 'e' code.
9558
9559 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
9560
9561         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
9562         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
9563         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9564
9565 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
9566
9567         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
9568         node->decl.
9569         (cgraph_expand_function): Use local copy of decl.
9570         (cgraph_expand_all_functions): Remove redundant initialization of
9571         order_pos.
9572         (cgraph_optimize): Reword internal_error message.
9573
9574 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
9575
9576         * arm-protos.h (arm_return_in_memory): Remove public
9577         arm_return_in_memory() prototype.
9578         * arm.c (arm_return_in_memory): Add static prototype, add target
9579         hook macro, change definition and comments.
9580         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
9581
9582 2008-06-19  Ben Elliston  <bje@au.ibm.com>
9583
9584         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
9585         real.c: Remove references to IEEE 754R.
9586         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
9587         * doc/libgcc.texi (Decimal float library routines): Likewise.
9588
9589 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9590
9591         * targhooks.h (struct gcc_target): New member unwind_word_mode.
9592         (default_unwind_word_mode): Add prototype.
9593         * targhooks.c (default_unwind_word_mode): New function.
9594         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
9595         instead of word_mode.
9596         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
9597         (TARGET_INITIALIZER): Use it.
9598
9599         * c-common.c (handle_mode_attribute): Support "unwind_word"
9600         mode attribute.
9601         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
9602
9603         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
9604         word_mode to access SjLj_Function_Context member "data".
9605         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
9606         conversion from targetm.eh_return_filter_mode () to
9607         targetm.unwind_word_mode () if they differ.
9608
9609         * builtin-types.def (BT_UNWINDWORD): New primitive type.
9610         (BT_FN_UNWINDWORD_PTR): New function type.
9611         (BT_FN_WORD_PTR): Remove.
9612         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
9613         * except.c (expand_builtin_extend_pointer): Convert pointer to
9614         targetm.unwind_word_mode () instead of word_mode.
9615
9616         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
9617         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
9618         (spu_unwind_word_mode): New function.
9619         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
9620         (TARGET_UNWIND_WORD_MODE): Define.
9621         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
9622
9623 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9624
9625         * config/spu/spu.c (reg_align): Remove.
9626         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
9627         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
9628         (spu_split_store): Likewise.
9629
9630 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
9631
9632         * gcc/tree-vn.c: Fix typo in comment.
9633
9634 2008-06-18  Jan Hubicka  <jh@suse.cz>
9635
9636         * cgraphunit.c (cgraph_optimize): Output debug info when doing
9637         toplevel reorder too.
9638
9639 2008-06-18  Jan Hubicka  <jh@suse.cz>
9640
9641         * c-opts.c (c_common_post_options): PCH is not compatible with
9642         no-unit-at-a-time.
9643         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
9644         -fno-toplevel-reorder by default now.
9645
9646 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9647
9648         PR documentation/30739
9649         * doc/install.texi (Prerequisites): Document dependency on awk.
9650
9651 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
9652             Ian Lance Taylor  <iant@google.com>
9653
9654         PR rtl-optimization/35604
9655         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
9656         only want to change jump destinations, not eventual label comparisons.
9657
9658 2008-06-16  Jan Hubicka  <jh@suse.cz>
9659
9660         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
9661         syntax errors.
9662         (cgraph_analyze_function): Likewise.
9663
9664 2008-06-16  Jan Hubicka  <jh@suse.cz>
9665
9666         * cgraph.h (cgraph_mark_if_needed): New function.
9667         * cgraphunit.c (cgraph_mark_if_needed): New function.
9668         * c-decl.c (duplicate_decl): Use it.
9669
9670 2008-06-16  Jan Hubicka  <jh@suse.cz>
9671
9672         * cgraph.c (cgraph_add_new_function): When in expansion state, do
9673         lowering.
9674
9675 2008-06-16  Jan Hubicka  <jh@suse.cz>
9676
9677         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
9678
9679 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
9680             Kazu Hirata  <kazu@codesourcery.com>
9681             Maxim Kuvyrkov  <maxim@codesourcery.com
9682
9683         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
9684         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
9685         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
9686         EXTRA_SPEC_FUNCTIONS.
9687         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
9688         (DRIVER_SELF_SPECS): Adjust.
9689         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
9690         * config/mips/st.h, config/mips/t-st: New.
9691         * config/mips/driver-native.c, config/mips/x-native: New.
9692         * doc/invoke.texi (MIPS): Document 'native' value for -march and
9693         -mtune options.
9694
9695 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
9696
9697         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
9698         from it.
9699         (ISA_HAS_FP_CONDMOVE): New macro.
9700         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
9701         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
9702         (ISA_HAS_NMADD3_NMSUB3): New macro.
9703         * config/mips/mips.c (mips_rtx_costs): Update.
9704         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
9705         compiling for ST Loongson 2E/2F.
9706         (madd<mode>): Rename to madd4<mode>.  Update.
9707         (madd3<mode>): New pattern.
9708         (msub<mode>): Rename to msub4<mode>.  Update.
9709         (msub3<mode>): New pattern.
9710         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
9711         (nmadd3<mode>): New pattern.
9712         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
9713         (nmadd3<mode>_fastmath): New pattern.
9714         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
9715         (nmsub3<mode>): New pattern.
9716         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
9717         (nmsub3<mode>_fastmath): New pattern.
9718         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
9719
9720 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
9721
9722         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
9723         (DF_REF_INSN_INFO): New.
9724         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
9725         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
9726         with a NULL DF_REF_INSN_INFO.
9727         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
9728         DF_INSN_SET.
9729         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
9730         DF_INSN_INFO_EQ_USES): New.
9731         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
9732         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
9733         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
9734         * df-core.c: Update comment for above changes.
9735         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
9736         DF_INSN_UID_* macros.
9737         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
9738         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
9739         insn rtx.  Update all callers.
9740         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
9741         df_ref_create_structure, df_insn_refs_collect): Likewise.
9742         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
9743         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
9744         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
9745         macros to access the insn refs.
9746         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
9747         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
9748         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
9749         for accessing the refs.
9750         (try_fwprop_subst): Likewise.
9751         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
9752         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
9753         for accessing the refs.
9754         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
9755         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
9756         to look at the insn refs.
9757         (record_uses): Likewise.
9758         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
9759         function anymore.
9760         (mark_artificial_uses): Don't mark_insn for artificial refs.
9761         (mark_reg_rependencies): Likewise.
9762
9763         * doc/rtl.texi: Remove documentation of ADDRESSOF.
9764
9765 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9766
9767         * configure: Regenerate.
9768
9769 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9770
9771         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
9772         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9773         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9774
9775 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9776
9777         * config/avr/avr.c (avr_mcu_t): Add attiny167.
9778         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9779         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9780
9781 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
9782
9783         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
9784         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9785         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9786
9787 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9788
9789         * tree-ssa-sccvn.c: Fix format of comments.
9790
9791 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
9792
9793         * cgraph.c: Remove unneeded forward declarations of eq_node()
9794         and hash_node().
9795
9796 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
9797
9798         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
9799         REG_RETVAL notes.
9800         (see_update_relevancy): Likewise.
9801         * fwprop.c (try_fwprop_subst): Likewise.
9802         * rtlanal.c (noop_move_p): Likewise.
9803         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
9804         notes to non-existing libcall blocks.
9805         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
9806         Remove orig_set.
9807         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
9808         (dead_libcall_p): Remove.
9809         (delete_trivially_dead_insns): Don't use it.
9810         * web.c (union_defs): Remove comment about keeping nops.
9811         * gcse.c (hash_scan_insn): Don't take libcall pointers.
9812         (compute_hash_table_work): Don't track libcall notes.
9813         (do_local_cprop): Don't take libcall pointers.  Don't update
9814         libcall notes.
9815         (adjust_libcall_notes): Deleted.
9816         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
9817         ever have existed in the first place).
9818         (replace_store_insn): Don't try to remove libcall notes.
9819         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
9820         (resolve_reg_notes): Don't call them.
9821         (resolve_simple_move): Likewise.
9822         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
9823         Don't remove REG_RETVAL notes.
9824         * emit-rtl.c (try_split): Don't update libcall notes.
9825         (emit_copy_of_insn_after): Dito.
9826         * cselib.c (cselib_current_insn_in_libcall): Remove.
9827         (cselib_process_insn): Don't set/clear it.
9828         (new_elt_loc_list): Don't record it.
9829         (cselib_init): Don't initialize it.
9830         * cselib.c (struct elt_loc_list): Remove in_libcall field.
9831         * loop-invariant.c (find_invariant_insn): Don't look for libcall
9832         notes.
9833         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
9834         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
9835         (init_deps): Don't initialize it.
9836         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
9837         * combine.c (delete_noop_moves): Don't update libcall notes.
9838         (can_combine_p): Remove now pointless #if 0 block.
9839         (try_combine): Remove another obsolete #if 0 block.
9840         (distribute_notes): Don't distribute libcall notes.
9841         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
9842         * dce.c (libcall_dead_p): Remove.
9843         (delete_unmarked_insns): Don't handle libcall blocks.
9844         (preserve_libcall_for_dce): Remove.
9845         (prescan_insns_for_dce): Don't special-case libcall block insns.
9846         * reload1 (reload): Don't handle libcall notes.
9847         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
9848         documentation.
9849
9850 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
9851
9852         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
9853         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9854         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9855
9856 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
9857
9858         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
9859         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
9860         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
9861
9862 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9863
9864         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
9865
9866 2008-06-16  Ira Rosen  <irar@il.ibm.com>
9867
9868         PR tree-optimization/36493
9869         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
9870         the arguments list. Use VECTYPE to create vector pointer.
9871         (vectorizable_store): Fail if accesses through a pointer to vectype
9872         do not alias the original memory reference operands.
9873         Call vect_create_data_ref_ptr without the removed argument.
9874         (vectorizable_load): Likewise.
9875         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
9876         removed argument.
9877
9878 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
9879
9880         PR target/36336
9881         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
9882         reg_equiv_constant.
9883
9884 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
9885
9886         * config/mips/loongson2ef.md: New file.
9887         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
9888         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
9889         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
9890         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
9891         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
9892         and loongson_2f.
9893         (loongson2ef.md): New include.
9894         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
9895         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
9896         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
9897         (loongson_gt_<mode>, loongson_extract_halfword)
9898         (loongson_insert_halfword_0, loongson_insert_halfword_2)
9899         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
9900         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
9901         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
9902         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
9903         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
9904         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
9905         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
9906         (vec_interleave_low<mode>): Define type attribute.
9907         * config/mips/mips.c (mips_ls2): New static variable.
9908         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
9909         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
9910         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
9911         Implement target scheduling hooks.
9912         (mips_multipass_dfa_lookahead): Update to handle tuning for
9913         Loongson 2E/2F.
9914         (mips_sched_init): Initialize data for Loongson scheduling.
9915         (mips_ls2_variable_issue): New static function.
9916         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
9917         Add sanity check.
9918         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
9919         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
9920         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
9921         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
9922         Handle ST Loongson 2E/2F cores.
9923         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
9924
9925 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9926
9927         * omp-low.c (extract_omp_for_data): Fix comment typo.
9928         * c.opt: Fix typo.
9929
9930 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9931
9932         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
9933         FIXME note about gcc/config.guess.
9934         * doc/options.texi (Option file format): Remove non-ASCII bytes.
9935         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
9936         * doc/cppopts.texi: Likewise.
9937         * doc/extend.texi: Likewise.
9938         * doc/gcc.texi: Likewise.
9939         * doc/gccint.texi: Likewise.
9940         * doc/gcov.texi: Likewise.
9941         * doc/gty.texi: Likewise.
9942         * doc/hostconfig.texi: Likewise.
9943         * doc/install.texi: Likewise.
9944         * doc/invoke.texi: Likewise.
9945         * doc/loop.texi: Likewise.
9946         * doc/makefile.texi: Likewise.
9947         * doc/md.texi: Likewise.
9948         * doc/passes.texi: Likewise.
9949         * doc/tm.texi: Likewise.
9950         * doc/tree-ssa.texi: Likewise.
9951         * doc/trouble.texi: Likewise.
9952
9953 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
9954             Nathan Sidwell  <nathan@codesourcery.com>
9955             Maxim Kuvyrkov  <maxim@codesourcery.com>
9956             Richard Sandiford  <rdsandiford@googlemail.com>
9957
9958         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
9959         * config/mips/mips-protos.h (mips_expand_vector_init): New.
9960         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
9961         builtins.
9962         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
9963         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
9964         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
9965         V8QImode cases.
9966         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
9967         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
9968         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
9969         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
9970         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
9971         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
9972         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
9973         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
9974         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
9975         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
9976         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
9977         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
9978         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
9979         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
9980         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
9981         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
9982         (mips_builtins): Add Loongson builtins.
9983         (mips_loongson_2ef_bdesc): New.
9984         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
9985         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
9986         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
9987         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
9988         New.
9989         (mips_expand_vector_init): New.
9990         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
9991         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
9992         if appropriate.
9993         * config/mips/mips.md: Add unspec numbers for Loongson
9994         builtins.  Include loongson.md.
9995         (MOVE64): Include Loongson vector modes.
9996         (SPLITF): Include Loongson vector modes.
9997         (HALFMODE): Handle Loongson vector modes.
9998         * config/mips/loongson.md: New.
9999         * config/mips/loongson.h: New.
10000         * config.gcc: Add loongson.h header for mips*-*-* targets.
10001         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
10002
10003 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
10004
10005         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
10006         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
10007         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
10008         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
10009         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
10010         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
10011         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
10012         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
10013         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
10014         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
10015         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
10016         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
10017         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
10018         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
10019         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
10020         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
10021         Remove use_fixproto=yes.
10022         (ia64*-*-hpux*): Remove comment about using fixproto.
10023         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
10024
10025 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10026
10027         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
10028         library rebuilds.
10029         * configure: Regenerate.
10030
10031 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
10032
10033         PR middle-end/36520
10034         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
10035         before evaluating it.
10036
10037 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
10038
10039         PR c/36507
10040         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
10041         nested inline functions.
10042         (start_decl, start_function): Don't invert DECL_EXTERNAL
10043         for nested inline functions.
10044
10045 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10046
10047         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
10048         splits that must be made for correctness.
10049
10050 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
10051
10052         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
10053         (AVAIL_NON_MIPS16): Likewise.
10054         (mips_builtin_description): Replace target_flags with a predicate.
10055         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
10056         (dspr2_32): New availability predicates.
10057         (MIPS_BUILTIN): New macro.
10058         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
10059         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
10060         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
10061         Replace the TARGET_FLAGS parameters with AVAIL parameters.
10062         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
10063         (mips_dsp_32only_bdesc): Merge into...
10064         (mips_builtins): ...this new array.
10065         (mips_bdesc_map, mips_bdesc_arrays): Delete.
10066         (mips_init_builtins): Update after above changes.
10067         (mips_expand_builtin_1): Merge into...
10068         (mips_expand_builtin): ...here and update after above changes.
10069
10070 2008-06-12  Paul Brook  <paul@codesourcery.com>
10071
10072         * longlong.h (__arm__): Define count_leading_zeros.
10073         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
10074         (clzsi2, clzdi2): New functions.
10075         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
10076         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
10077         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
10078         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
10079         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
10080         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
10081         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
10082         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
10083         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
10084         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
10085
10086 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
10087
10088         * config/m68k/m68k.c (m68k_tune_flags): New.
10089         (override_options): Compute m68k_tune_flags.
10090         (MULL_COST, MULW_COST): Update for various variants of CFV2.
10091         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
10092
10093 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
10094
10095         PR middle-end/36506
10096         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
10097
10098 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
10099
10100         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
10101         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
10102
10103 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
10104
10105         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
10106         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
10107
10108 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
10109
10110         PR middle-end/36506
10111         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
10112         reductions.
10113
10114 2008-06-12  Richard Guenther  <rguenther@suse.de>
10115
10116         PR tree-optimization/36345
10117         * tree-flow.h (struct ptr_info_def): Align escape_mask,
10118         add memory_tag_needed flag.
10119         (may_alias_p): Declare.
10120         * tree-ssa-alias.c (may_alias_p): Export.
10121         (set_initial_properties): Use memory_tag_needed flag.
10122         (update_reference_counts): Likewise.
10123         (reset_alias_info): Reset memory_tag_needed flag.
10124         (create_name_tags): Check memory_tag_needed flag.
10125         (dump_points_to_info_for): Dump it.
10126         * tree-ssa-structalias.c (struct variable_info): Remove
10127         directly_dereferenced flag.
10128         (new_var_info): Do not initialize it.
10129         (process_constraint_1): Do not set it.
10130         (update_alias_info): Set is_dereferenced flag.
10131         (set_uids_in_ptset): Use may_alias_p.
10132         (set_used_smts): Check memory_tag_needed flag.
10133         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
10134         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
10135         memory_tag_needed flag.
10136         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
10137         from broken design.
10138
10139 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
10140
10141         * config/i386/i386.c (ix86_compute_frame_layout): Disable
10142         red zone for w64 abi.
10143         (ix86_expand_prologue): Likewise.
10144         (ix86_force_to_memory): Likewise.
10145         (ix86_free_from_memory): Likewise.
10146
10147 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
10148
10149         PR target/36425
10150         * config/rs6000/rs6000.c (rs6000_override_options): Set
10151         rs6000_isel conditionally to the absence of comand line override.
10152         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
10153         Remove duplicate rs6000_isel setting.
10154         * config/rs6000/eabispe.h: Ditto.
10155
10156 2008-06-11  Richard Guenther  <rguenther@suse.de>
10157
10158         * alias.c (get_alias_set): Use the element alias-set for arrays.
10159         (record_component_aliases): For arrays and vectors do nothing.
10160         * c-common.c (strict_aliasing_warning): Handle the cases
10161         of alias set zero explicitly.
10162         * Makefile.in (dfp.o-warn): Add -Wno-error.
10163
10164 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
10165
10166         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
10167         tune_32 tune_64.
10168         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
10169         tune_32 tune_64 to supported_defaults.  Allow values not
10170         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
10171         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
10172         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
10173         with_cpu_64 to generic for 64-bit-supporting configurations, not
10174         with_cpu.  Remove FIXMEs.
10175         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
10176         --with-arch-64, --with-tune-32, --with-tune-64): Document.
10177         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
10178         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
10179         arch_32 and arch_64.
10180
10181 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
10182             Olivier Hainque  <hainque@adacore.com>
10183
10184         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
10185         Use DECL_SIZE_UNIT to retrieve the size of the field.
10186
10187 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
10188
10189         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
10190         with function calls after declarations.  Lay out
10191         neon_float_type_node before further use.
10192
10193 2008-06-11  Richard Guenther  <rguenther@suse.de>
10194
10195         * tree-flow.h (may_point_to_global_var): Declare.
10196         * tree-ssa-alias.c (may_point_to_global_var): New function.
10197         * tree-ssa-sink.c (is_hidden_global_store): Use it.
10198
10199 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
10200
10201         * configure.ac: Teach that fido supports .debug_line.
10202         * configure: Regenerate.
10203
10204 2008-06-10  Tom Tromey  <tromey@redhat.com>
10205
10206         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
10207         debug hook.
10208
10209 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
10210
10211         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
10212         (encode_decimal64, decode_decimal64, encode_decimal128,
10213         decode_decimal128): Reverse order of 32-bit parts of value if host
10214         and target endianness differ.
10215
10216 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
10217
10218         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
10219         Avoid division by 0.
10220         (tree_mod_pow2_value_transform): Likewise.
10221         (tree_ic_transform): Likewise.
10222         (tree_stringops_transform): Likewise.
10223         (tree_mod_subtract_transform): Likewise.
10224         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
10225         (copy_edges_for_bb): Likewise.
10226         (initialize_cfun): Likewise.
10227
10228 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
10229
10230         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
10231         nonmemory_operand. Add "N" operand constraint.
10232         (*btsi): Ditto.
10233         (*jcc_btdi_mask_rex64): New instruction and split pattern.
10234         (*jcc_btsi_mask): Ditto.
10235         (*jcc_btsi_mask_1): Ditto.
10236
10237 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
10238
10239         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
10240         TYPE_CANONICAL for copied element type.
10241
10242 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
10243
10244         PR target/36473
10245         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
10246         Add m_CORE2 and m_GENERIC.
10247         * config/i386/predicates.md (bt_comparison_operator): New predicate.
10248         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
10249         (*btsi): Ditto.
10250         (*jcc_btdi_rex64): New instruction and split pattern.
10251         (*jcc_btsi): Ditto.
10252         (*jcc_btsi_1): Ditto.
10253         (*btsq): Fix Intel asm dialect operand order.
10254         (*btrq): Ditto.
10255         (*btcq): Ditto.
10256
10257 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
10258
10259         PR middle-end/36447
10260         * simplify-rtx.c (simplify_subreg): Add check for shift count
10261         greater than size.
10262
10263 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
10264
10265         * doc/md.texi: Synchronize with later constraints.md change.
10266         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
10267         with a C implementation.
10268         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
10269         MFLO handling.
10270         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
10271         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
10272         when moving to and from MD_REGNUM.
10273         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
10274         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
10275         Handle byte and halfword moves.
10276         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
10277         separately.
10278         * config/mips/constraints.md (h): Turn into NO_REGS.
10279         (l, x): Update documentation.
10280         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
10281         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
10282         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
10283         (HILO): New mode iterator.
10284         (MOVE128): Add TI.
10285         (any_div): New code iterator.
10286         (u): Extend code attribute to div and udiv.
10287         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
10288         d_operand in the splitters.  Remove redundant CONST_INT checks.
10289         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
10290         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
10291         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
10292         accordingly, using normal moves instead of unspecs to move LO into
10293         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
10294         (<u>mulsidi3): Handle expansion in C code.
10295         (<u>mulsidi3_32bit_internal): Rename to...
10296         (<u>mulsidi3_32bit): ...this.
10297         (<u>mulsidi3_32bit_r4000): Fix insn separator.
10298         (*<u>mulsidi3_64bit): Rename to...
10299         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
10300         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
10301         to set LO and HI to the multiplication result.  Use a normal move
10302         for MFLO and an unspec for MFHI.
10303         (*<u>mulsidi3_64bit_parts): Replace with...
10304         (<u>mulsidi3_64bit_hilo): ...this new instruction.
10305         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
10306         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
10307         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
10308         instead of HI.  Split the instruction into a separate multiplication
10309         and MFHI if !TARGET_FIX_R4000.
10310         (<su>muldi3_highpart): Likewise.
10311         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
10312         and the "=h" clobber.
10313         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
10314         (<u>mulditi3): New expander.
10315         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
10316         (madsi): Remove "=h" clobber.
10317         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
10318         Force the modulus result to be a GPR and split the instruction into
10319         a division followed by an MFHI after reload.
10320         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
10321         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
10322         the MIPS16 HIGH define_split.
10323         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
10324         of acc<->gpr moves to "multi".
10325         (*movdi_64bit): Replace the single "x" alternative with
10326         alternatives for moving into and out of "a".
10327         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
10328         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
10329         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
10330         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
10331         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
10332         (movti): New expander.
10333         (*movti, *movti_mips16): New insns.
10334         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
10335         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
10336         (mthi<GPR:mode>_<HILO:mode>): Likewise.
10337         * config/mips/predicates.md (fpr_operand): Delete.
10338         (d_operand): New predicate.
10339
10340 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
10341
10342         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
10343         failure on some Bourne shells.
10344         (x86_64-*-*): Ditto.
10345
10346 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
10347
10348         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
10349
10350 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
10351
10352         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
10353         (sparc-sun-solaris2*): Likewise.
10354
10355 2008-06-09  Arnaud Charlet  <charlet@adacore.com
10356
10357         * doc/install.texi: Update requirements to build the Ada compiler.
10358
10359 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
10360
10361         * df-scan.c (struct df_scan_problem_data): Remove the
10362         mw_link_pool alloc pool.
10363         (df_scan_free_internal): Don't free it.
10364         (df_scan_alloc): Don't allocate it.
10365         * df.h (struct df_link): Update comment.
10366
10367 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
10368
10369         * except.h: Correct checks for when SJLJ exceptions must be used.
10370
10371 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10372
10373         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
10374         default.
10375
10376 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
10377
10378         PR tree-optimization/36218
10379         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
10380         configure for the build system.
10381         (BUILD_LDFLAGS): Define.
10382         * configure: Regenerate.
10383         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
10384
10385 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
10386
10387         PR target/36424
10388         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
10389         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
10390         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
10391
10392 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
10393
10394         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
10395
10396 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
10397
10398         * config.gcc (Obsolete configurations): Remove list of
10399         configurations.
10400         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
10401         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
10402         targets matched by those patterns.
10403         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
10404         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
10405         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
10406         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
10407         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
10408         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
10409         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
10410         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
10411         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
10412         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
10413         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
10414         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
10415         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
10416         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
10417         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
10418         Make code for Solaris 7 and greater unconditional for Solaris.
10419         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
10420         Remove --with-* handling.
10421         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
10422         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
10423         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
10424         LINK_OS_WINDISS_SPEC): Remove.
10425         * config/rs6000/sysv4.opt (mwindiss): Remove.
10426         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
10427         * configure: Regenerate.
10428         * doc/cpp.texi: Don't mention BeOS.
10429         * doc/extend.texi (interrupt): Don't mention MS1.
10430         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
10431         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
10432         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
10433         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
10434         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
10435         Remove.
10436         * doc/invoke.texi (MT Options): Remove.
10437         (-mwindiss): Remove.
10438         (CRIS Options): Remove cris-axis-aout references.
10439         (HPPA Options): Don't mention hppa1.1-*-pro.
10440         * doc/md.texi: (MorphoTech family): Remove.
10441         * libgcc2.c: Don't handle UWIN.
10442         * config/alpha/t-unicosmk: Remove.
10443         * config/alpha/unicosmk.h: Remove.
10444         * config/arm/kaos-arm.h: Remove.
10445         * config/arm/kaos-strongarm.h: Remove.
10446         * config/arm/strongarm-coff.h: Remove.
10447         * config/arm/strongarm-elf.h: Remove.
10448         * config/arm/strongarm-pe.h: Remove.
10449         * config/arm/t-strongarm-pe: Remove.
10450         * config/arm/t-xscale-coff: Remove.
10451         * config/arm/t-xscale-elf: Remove.
10452         * config/arm/xscale-coff.h: Remove.
10453         * config/arm/xscale-elf.h: Remove.
10454         * config/chorus.h: Remove.
10455         * config/cris/aout.h: Remove.
10456         * config/cris/aout.opt: Remove.
10457         * config/cris/t-aout: Remove.
10458         * config/i386/beos-elf.h: Remove.
10459         * config/i386/kaos-i386.h: Remove.
10460         * config/i386/ptx4-i.h: Remove.
10461         * config/i386/sco5.h: Remove.
10462         * config/i386/sco5.opt: Remove.
10463         * config/i386/sysv4-cpp.h: Remove.
10464         * config/i386/sysv5.h: Remove.
10465         * config/i386/t-beos: Remove.
10466         * config/i386/t-sco5: Remove.
10467         * config/i386/t-uwin: Remove.
10468         * config/i386/uwin.asm: Remove.
10469         * config/i386/uwin.h: Remove.
10470         * config/kaos.h: Remove.
10471         * config/mips/windiss.h: Remove.
10472         * config/mt: Remove directory.
10473         * config/pa/pa-osf.h: Remove.
10474         * config/pa/pa-pro-end.h: Remove.
10475         * config/pa/t-pro: Remove.
10476         * config/ptx4.h: Remove.
10477         * config/rs6000/beos.h: Remove.
10478         * config/rs6000/kaos-ppc.h: Remove.
10479         * config/rs6000/t-beos: Remove.
10480         * config/rs6000/windiss.h: Remove.
10481         * config/sh/kaos-sh.h: Remove.
10482         * config/sol2-6.h: Remove.
10483         * config/sparc/sol26-sld.h: Remove.
10484         * config/sparc/sysv4-only.h: Remove.
10485         * config/vax/bsd.h: Remove.
10486         * config/vax/t-memfuncs: Remove.
10487         * config/vax/ultrix.h: Remove.
10488         * config/vax/vaxv.h: Remove.
10489         * config/windiss.h: Remove.
10490
10491 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
10492
10493         PR rtl-optimization/36438
10494         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
10495         for vector shifts with constant scalar shift operands.
10496
10497 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
10498
10499         * doc/invoke.texi: Document -march=xlr.
10500         * config/mips/xlr.md: New file.
10501         * config/mips/mips.md: Include it.
10502         (cpu): Add "xlr".
10503         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
10504         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
10505         (mips_rtx_cost_data): Likewise.
10506
10507 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
10508
10509         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
10510         PRE_INC and PRE_DEC cases.
10511
10512 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
10513
10514         PR rtl-optimization/36419
10515         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
10516         the emitting jump insn.
10517
10518         PR target/36362
10519         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
10520         is not bool, boolify the whole *expr_p and convert to the desired type.
10521
10522 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
10523
10524         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
10525         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
10526         Add omp_private_outer_ref hook, add another argument to
10527         omp_clause_default_ctor hook.
10528         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
10529         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
10530         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
10531         hook_tree_tree_tree_tree_null.
10532         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
10533         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
10534         * hooks.c (hook_tree_tree_tree_tree_null): New function.
10535         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
10536         * tree.def (OMP_TASK): New tree code.
10537         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
10538         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
10539         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
10540         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
10541         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
10542         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
10543         OMP_CLAUSE_COLLAPSE_EXPR): Define.
10544         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
10545         (OMP_DIRECTIVE_P): Add OMP_TASK.
10546         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
10547         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
10548         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
10549         and OMP_CLAUSE_UNTIED entries.
10550         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
10551         num_ops to 2.
10552         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10553         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
10554         * tree-pretty-print.c (dump_omp_clause): Handle
10555         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
10556         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
10557         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
10558         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
10559         warning about unsigned iterators.  Change decl/init/cond/incr
10560         arguments to TREE_VECs, check arguments for all collapsed loops.
10561         (c_finish_omp_taskwait): New function.
10562         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
10563         ws_clauses.
10564         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
10565         default_function_array_conversion on init.  Add par_clauses argument.
10566         If decl is present in parallel's lastprivate clause, change it to
10567         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
10568         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
10569         collapse count in clauses.
10570         (c_parser_omp_for, c_parser_omp_parallel): Adjust
10571         c_parser_omp_for_loop callers.
10572         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
10573         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
10574         (c_parser_omp_clause_name): Handle collapse and untied clauses.
10575         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
10576         functions.
10577         (c_parser_omp_clause_schedule): Handle schedule(auto).
10578         Include correct location in the error message.
10579         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
10580         and PRAGMA_OMP_CLAUSE_UNTIED.
10581         (OMP_TASK_CLAUSE_MASK): Define.
10582         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
10583         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
10584         * tree-nested.c (convert_nonlocal_omp_clauses,
10585         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
10586         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
10587         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10588         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
10589         OMP_CLAUSE_DECL.
10590         (conver_nonlocal_reference, convert_local_reference,
10591         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
10592         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
10593         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
10594         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
10595         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
10596         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
10597         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
10598         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
10599         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
10600         OMP_CLAUSE_UNTIED.
10601         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
10602         * c-common.h (c_finish_omp_taskwait): New prototype.
10603         * gimple-low.c (lower_stmt): Handle OMP_TASK.
10604         * tree-parloops.c (create_parallel_loop): Create 1 entry
10605         vectors for OMP_FOR_{INIT,COND,INCR}.
10606         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
10607         (make_edges): Handle OMP_TASK.
10608         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
10609         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10610         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
10611         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
10612         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
10613         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
10614         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
10615         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
10616         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
10617         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
10618         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
10619         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
10620         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
10621         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
10622         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
10623         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
10624         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
10625         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
10626         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
10627         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
10628         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
10629         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
10630         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
10631         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
10632         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
10633         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
10634         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
10635         original iterator is present in lastprivate clause or if
10636         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
10637         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10638         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
10639         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
10640         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
10641         if it is set, lookup var in outer contexts too.  Handle
10642         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
10643         to be implicitly determined firstprivate for task regions.
10644         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
10645         if it is set, lookup var in outer contexts too.  Set
10646         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
10647         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
10648         OMP_CLAUSE_UNTIED.  Take region_type as last argument
10649         instead of in_parallel and in_combined_parallel.
10650         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
10651         Adjust callers.
10652         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
10653         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
10654         (new_omp_context): Set default_kind to
10655         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
10656         (omp_region_type): New enum.
10657         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
10658         fields, add region_type.
10659         (new_omp_context): Take region_type as argument instead of is_parallel
10660         and is_combined_parallel.
10661         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
10662         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
10663         ctx->is_combined_parallel checks.
10664         (gimplify_omp_task): New function.
10665         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
10666         OMP_CLAUSE_UNTIED.
10667         * omp-low.c (extract_omp_for_data): Use schedule(static)
10668         for schedule(auto).  Handle pointer and unsigned iterators.
10669         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
10670         Add loops argument.  Extract data for collapsed OMP_FOR loops.
10671         (expand_parallel_call): Assert sched_kind isn't auto,
10672         map runtime schedule to index 3.
10673         (struct omp_for_data_loop): New type.
10674         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
10675         Add loop, loops, collapse and iter_type fields.
10676         (workshare_safe_to_combine_p): Disallow combined for if
10677         iter_type is unsigned long long.  Don't combine collapse > 1 loops
10678         unless all bounds and steps are constant.  Adjust extract_omp_for_data
10679         caller.
10680         (expand_omp_for_generic): Handle pointer, unsigned and long long
10681         iterators.  Handle collapsed OMP_FOR loops.  Adjust
10682         for struct omp_for_data changes.  If libgomp function doesn't return
10683         boolean_type_node, add comparison of the return value with 0.
10684         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
10685         pointer, unsigned and long long iterators.  Adjust for struct
10686         omp_for_data changes.
10687         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
10688         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
10689         unsigned long long.  Allocate loops array, pass it to
10690         extract_omp_for_data.  For collapse > 1 loops use always
10691         expand_omp_for_generic.
10692         (omp_context): Add sfield_map and srecord_type fields.
10693         (is_task_ctx, lookup_sfield): New functions.
10694         (use_pointer_for_field): Use is_task_ctx helper.  Change first
10695         argument's type from const_tree to tree.  Clarify comment.
10696         In OMP_TASK disallow copy-in/out sharing.
10697         (build_sender_ref): Call lookup_sfield instead of lookup_field.
10698         (install_var_field): Add mask argument.  Populate both record_type
10699         and srecord_type if needed.
10700         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
10701         in srecord_type.
10702         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
10703         and DECL_FIELD_OFFSET.
10704         (scan_sharing_clauses): Adjust install_var_field callers.  For
10705         firstprivate clauses on explicit tasks allocate the var by value in
10706         record_type unconditionally, rather than by reference.
10707         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
10708         Use is_taskreg_ctx instead of is_parallel_ctx.
10709         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
10710         (create_omp_child_function_name): Add task_copy argument, use
10711         *_omp_cpyfn* names if it is true.
10712         (create_omp_child_function): Add task_copy argument, if true create
10713         *_omp_cpyfn* helper function.
10714         (scan_omp_parallel): Adjust create_omp_child_function callers.
10715         Rename parallel_nesting_level to taskreg_nesting_level.
10716         (scan_omp_task): New function.
10717         (lower_rec_input_clauses): Don't run constructors for firstprivate
10718         explicit task vars which are initialized by *_omp_cpyfn*.
10719         Pass outer var ref to omp_clause_default_ctor hook if
10720         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
10721         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
10722         OMP_CLAUSE_REDUCTION_INIT.
10723         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
10724         avoid duplicate setting of fields.  Handle
10725         OMP_CLAUSE_PRIVATE_OUTER_REF.
10726         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
10727         copy-out if TREE_READONLY, only copy-in.
10728         (expand_task_copyfn): New function.
10729         (expand_task_call): New function.
10730         (struct omp_taskcopy_context): New type.
10731         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
10732         New functions.
10733         (lower_omp_parallel): Rename to...
10734         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10735         Call create_task_copyfn if srecord_type is needed.  Adjust
10736         sender_decl type.
10737         (task_shared_vars): New variable.
10738         (check_omp_nesting_restrictions): Warn if work-sharing,
10739         barrier, master or ordered region is closely nested inside OMP_TASK.
10740         Add warnings for barrier if closely nested inside of work-sharing,
10741         ordered, or master region.
10742         (scan_omp_1): Call check_omp_nesting_restrictions even for
10743         GOMP_barrier calls.  Rename parallel_nesting_level to
10744         taskreg_nesting_level.  Handle OMP_TASK.
10745         (lower_lastprivate_clauses): Even if some lastprivate is found on a
10746         work-sharing construct, continue looking for them on parent parallel
10747         construct.
10748         (lower_omp_for_lastprivate): Add lastprivate clauses
10749         to the beginning of dlist rather than end.  Adjust for struct
10750         omp_for_data changes.
10751         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
10752         not after it.  Handle collapsed OMP_FOR loops, adjust for
10753         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
10754         (get_ws_args_for): Adjust extract_omp_for_data caller.
10755         (scan_omp_for): Handle collapsed OMP_FOR
10756         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
10757         (lower_omp_single_simple): If libgomp function doesn't return
10758         boolean_type_node, add comparison of the return value with 0.
10759         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
10760         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
10761         (parallel_nesting_level): Rename to...
10762         (taskreg_nesting_level): ... this.
10763         (is_taskreg_ctx): New function.
10764         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
10765         of is_parallel_ctx.
10766         (execute_lower_omp): Rename parallel_nesting_level to
10767         taskreg_nesting_level.
10768         (expand_omp_parallel): Rename to...
10769         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
10770         Call omp_task_call for OMP_TASK regions.
10771         (expand_omp): Adjust caller, handle OMP_TASK.
10772         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
10773
10774         * bitmap.c (bitmap_default_obstack_depth): New variable.
10775         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
10776         if argument is NULL and bitmap_default_obstack is already initialized.
10777         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
10778         at the end.
10779         * matrix-reorg.c (matrix_reorg): Likewise.
10780
10781 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
10782
10783         * config/i386/i386.md (*indirect_jump): Macroize using P
10784         mode iterator.  Remove !TARGET_64BIT from insn constraints.
10785         (*tablejump_1): Ditto.
10786         (*indirect_jump_rex64): Remove insn pattern.
10787         (*tablejump_1_rex64): Ditto.
10788         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
10789         and eh_return_si insn patterns.
10790
10791 2008-06-06  Richard Guenther  <rguenther@suse.de>
10792
10793         * tree-ssa-structalias.c (merge_smts_into): Remove.
10794         (find_what_p_points_to): Do not bother to compute the
10795         points-to set for pt_anything pointers.
10796         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
10797         for pt_anything pointers is ok.
10798
10799 2008-06-06  Jan Hubicka  <jh@suse.cz>
10800
10801         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
10802
10803 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10804
10805         * cgraph.c: Fix typos in comments.
10806         (cgraph_availability_names): Fix string typo.
10807         * fold-const.c: Fix typos in comments.
10808         (fold_binary): Fix typo in warning.
10809         * genautomata.c: Fix typos in comments.
10810         (check_presence_pattern_sets): Fix typo in local variable.
10811         (output_description): Fix typo in output.
10812         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
10813         * hwint.h: Likewise.
10814         * matrix-reorg.c (check_allocation_function): Likewise.
10815         * omega.c (smooth_weird_equations): Likewise.
10816         * auto-inc-dec.c: Fix typos in comments.
10817         * bb-reorder.c: Likewise.
10818         * builtins.c: Likewise.
10819         * c-common.c: Likewise.
10820         * c-cppbuiltin.c: Likewise.
10821         * c-parser.c: Likewise.
10822         * c-pretty-print.c: Likewise.
10823         * cfgcleanup.c: Likewise.
10824         * cfgexpand.c: Likewise.
10825         * cfghooks.c: Likewise.
10826         * cfglayout.c: Likewise.
10827         * cfgloopmanip.c: Likewise.
10828         * cgraphunit.c: Likewise.
10829         * coverage.c: Likewise.
10830         * dbxout.c: Likewise.
10831         * df-byte-scan.c: Likewise.
10832         * df-core.c: Likewise.
10833         * df-problems.c: Likewise.
10834         * df-scan.c: Likewise.
10835         * dfp.c: Likewise.
10836         * dominance.c: Likewise.
10837         * domwalk.c: Likewise.
10838         * dse.c: Likewise.
10839         * dwarf2out.c: Likewise.
10840         * emit-rtl.c: Likewise.
10841         * et-forest.c: Likewise.
10842         * function.c: Likewise.
10843         * function.h: Likewise.
10844         * gcc.c: Likewise.
10845         * gcov-io.c: Likewise.
10846         * gcov.c: Likewise.
10847         * gcse.c: Likewise.
10848         * genattrtab.c: Likewise.
10849         * ggc-page.c: Likewise.
10850         * gimplify.c: Likewise.
10851         * gthr-lynx.h: Likewise.
10852         * haifa-sched.c: Likewise.
10853         * ipa-cp.c: Likewise.
10854         * ipa-inline.c: Likewise.
10855         * ipa-prop.h: Likewise.
10856         * ipa-pure-const.c: Likewise.
10857         * ipa-struct-reorg.c: Likewise.
10858         * ipa-struct-reorg.h: Likewise.
10859         * ipa-type-escape.c: Likewise.
10860         * ipa.c: Likewise.
10861         * loop-doloop.c: Likewise.
10862         * mips-tfile.c: Likewise.
10863         * mkmap-flat.awk: Likewise.
10864         * mkmap-symver.awk: Likewise.
10865         * modulo-sched.c: Likewise.
10866         * omp-low.c: Likewise.
10867         * optabs.c: Likewise.
10868         * optabs.h: Likewise.
10869         * opts.c: Likewise.
10870         * passes.c: Likewise.
10871         * postreload-gcse.c: Likewise.
10872         * postreload.c: Likewise.
10873         * predict.c: Likewise.
10874         * pretty-print.h: Likewise.
10875         * profile.c: Likewise.
10876         * protoize.c: Likewise.
10877         * ra-conflict.c: Likewise.
10878         * real.c: Likewise.
10879         * recog.c: Likewise.
10880         * regclass.c: Likewise.
10881         * regs.h: Likewise.
10882         * reload.c: Likewise.
10883         * rtl-error.c: Likewise.
10884         * rtlanal.c: Likewise.
10885         * scan.h: Likewise.
10886         * sched-rgn.c: Likewise.
10887         * see.c: Likewise.
10888         * stmt.c: Likewise.
10889         * target.h: Likewise.
10890         * tree-dfa.c: Likewise.
10891         * tree-eh.c: Likewise.
10892         * tree-flow-inline.h: Likewise.
10893         * tree-inline.c: Likewise.
10894         * tree-into-ssa.c: Likewise.
10895         * tree-loop-distribution.c: Likewise.
10896         * tree-nested.c: Likewise.
10897         * tree-parloops.c: Likewise.
10898         * tree-pass.h: Likewise.
10899         * tree-pretty-print.c: Likewise.
10900         * tree-profile.c: Likewise.
10901         * tree-scalar-evolution.c: Likewise.
10902         * tree-sra.c: Likewise.
10903         * tree-ssa-alias-warnings.c: Likewise.
10904         * tree-ssa-ccp.c: Likewise.
10905         * tree-ssa-coalesce.c: Likewise.
10906         * tree-ssa-dom.c: Likewise.
10907         * tree-ssa-dse.c: Likewise.
10908         * tree-ssa-forwprop.c: Likewise.
10909         * tree-ssa-live.c: Likewise.
10910         * tree-ssa-live.h: Likewise.
10911         * tree-ssa-loop-im.c: Likewise.
10912         * tree-ssa-loop-ivopts.c: Likewise.
10913         * tree-ssa-loop-niter.c: Likewise.
10914         * tree-ssa-loop-prefetch.c: Likewise.
10915         * tree-ssa-phiopt.c: Likewise.
10916         * tree-ssa-phiprop.c: Likewise.
10917         * tree-ssa-sccvn.c: Likewise.
10918         * tree-ssa-ter.c: Likewise.
10919         * tree-ssa-threadupdate.c: Likewise.
10920         * tree-ssa.c: Likewise.
10921         * tree-vect-analyze.c: Likewise.
10922         * tree-vect-transform.c: Likewise.
10923         * tree-vectorizer.c: Likewise.
10924         * tree-vn.c: Likewise.
10925         * tree-vrp.c: Likewise.
10926         * tree.c: Likewise.
10927         * tree.def: Likewise.
10928         * tree.h: Likewise.
10929         * unwind-dw2-fde.c: Likewise.
10930         * unwind.inc: Likewise.
10931         * value-prof.c: Likewise.
10932         * vmsdbgout.c: Likewise.
10933
10934 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
10935
10936         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
10937         always place FP constants in the TOC for TARGET_POWERPC64.
10938         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
10939
10940 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
10941
10942         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
10943         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
10944         enable for TARGET_E500_DOUBLE.
10945         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
10946         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
10947         floating-point modes like integer modes for E500 double.
10948         (rs6000_legitimate_offset_address_p): Likewise.
10949         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
10950         addressing for DDmode for E500 double.
10951         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
10952         modes as using 64-bits of registers for E500 double.
10953         (spe_build_register_parallel): Do not handle DDmode or TDmode.
10954         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
10955         specially for E500 double.
10956         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
10957         TDmode for E500 double.
10958         (rs6000_gimplify_va_arg): Only handle SDmode in registers
10959         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
10960         (rs6000_split_multireg_move): Do not handle TDmode specially for
10961         E500 double.
10962         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
10963         using 64-bit registers for E500 double.
10964         (emit_frame_save): Do not handle DDmode specially for E500 double.
10965         (gen_frame_mem_offset): Likewise.
10966         (rs6000_function_value): Do not call spe_build_register_parallel
10967         for DDmode or TDmode.
10968         (rs6000_libcall_value): Likewise.
10969         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
10970         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
10971         for E500 double.
10972
10973 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
10974
10975         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
10976         in comments.
10977
10978 2008-06-04  Junjie Gu <jgu@tensilica.com>
10979
10980         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
10981         comparison for frame pointers.
10982
10983 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
10984
10985         PR target/27386
10986         * config/avr/avr.h (PUSH_ROUNDING): Remove.
10987
10988 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
10989
10990         PR target/30243
10991         * builtins.c (expand_builtin_signbit): Don't take lowpart when
10992         register is already smaller or equal to required mode.
10993
10994 2008-06-04  Xinliang David Li  <davidxl@google.com>
10995
10996         * tree-call-cdce.c: New file.
10997         (cond_dead_built_in_calls): New static variable.
10998         (input_domain): New struct.
10999         (check_pow): New function.
11000         (check_builtin_call): Ditto.
11001         (check_target_format): Ditto.
11002         (is_call_dce_candidate): Ditto.
11003         (gen_one_condition): Ditto.
11004         (gen_conditions_for_domain): Ditto.
11005         (get_domain): Ditto.
11006         (gen_conditions_for_pow_cst_base): Ditto.
11007         (gen_conditions_for_pow_int_base): Ditto.
11008         (gen_conditions_for_pow): Ditto.
11009         (get_no_error_domain): Ditto.
11010         (gen_shrink_wrap_conditions): Ditto.
11011         (shrink_wrap_one_built_in_call): Ditto.
11012         (shink_wrap_conditional_dead_built_in_calls): Ditto.
11013         (tree_call_cdce): Ditto.
11014         (gate_call_cdce): Ditto.
11015         (pass_call_cdce): New gimple pass.
11016         * passes.c: (init_optimization_passes): New pass.
11017         * tree-pass.h: New pass declaration.
11018         * opts.c (decode_options): New flag setting.
11019         * common.opt: Add -ftree-builtin-call-dce flag.
11020         * Makefile.in: Add new source file.
11021         * tempvar.def: New tv_id.
11022         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
11023
11024 2008-06-04  Richard Guenther  <rguenther@suse.de>
11025
11026         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
11027         (is_call_clobbered): Always check var_ann->call_clobbered.
11028         (mark_call_clobbered): Always set var_ann->call_clobbered.
11029         (clear_call_clobbered): Always clear var_ann->call_clobbered.
11030         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
11031         (reset_alias_info): Clear call clobbering info on MTAGs and
11032         globals as well.
11033         (set_pt_anything): Set pt_global_mem.
11034         (create_tag_raw): Adjust comment.
11035         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
11036
11037 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
11038             Maxim Kuvyrkov  <maxim@codesourcery.com>
11039
11040         * config/m68k/m68k.opt (mxgot): New option.
11041         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
11042         (m68k_output_addr_const_extra): New.
11043         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
11044         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
11045         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
11046         * doc/invoke.texi (M680x0 Options): Document -mxgot.
11047
11048 2008-06-04  Richard Guenther  <rguenther@suse.de>
11049
11050         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
11051         negative or non-representable offsets.
11052
11053 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
11054
11055         * config/i386/i386.c (ix86_gen_leave): New.
11056         (ix86_gen_pop1): Likewise.
11057         (ix86_gen_add3): Likewise.
11058         (ix86_gen_sub3): Likewise.
11059         (ix86_gen_sub3_carry): Likewise.
11060         (ix86_gen_one_cmpl2): Likewise.
11061         (ix86_gen_monitor): Likewise.
11062         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
11063         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
11064         ix86_gen_one_cmpl2 and ix86_gen_monitor.
11065         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
11066         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
11067         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
11068         (ix86_expand_epilogue): Updated.
11069         (print_operand): Handle integer register operand for 'z'.
11070         (ix86_expand_strlensi_unroll_1): Likewise.
11071         (ix86_expand_strlen): Likewise.
11072         (ix86_expand_builtin): Likewise.
11073         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
11074         mov{q}/mov{l} and add{q}/add{l}.
11075
11076 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11077
11078         * config/i386/i386.md (P): New mode iterator.
11079         (SFmode push_operand splitter): Macroize DImode and SImode pushes
11080         using P mode iterator.
11081         (DFmode push_operand splitter): Ditto.
11082         (XFmode push_operand splitter): Ditto.
11083         (DFmode float_extend SFmode push_operand splitter): Ditto.
11084         (XFmode float_extend SFmode push_operand splitter): Do not generate
11085         SImode pushes for 64bit target.  Macroize Dimode and SImode
11086         pushes using P mode iterator.
11087         (XFmode float_extend DFmode push_operand splitter): Ditto.
11088
11089 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11090
11091         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
11092         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
11093         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
11094         return type to int.
11095         (ix86_call_abi_override): Remove check for call_used_regs.
11096
11097 2008-06-03  Richard Guenther  <rguenther@suse.de>
11098
11099         * tree-ssa-structalias.c (find_func_aliases): Add constraints
11100         for the lhs of calls if the return type contains pointers.
11101
11102 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
11103
11104         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
11105         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
11106         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
11107         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
11108         of cfun and DEFAULT_ABI to deceide abi mode.
11109         (DEFAULT_ABI): New.
11110         (REG_PARM_STACK_SPACE): Removed.
11111         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
11112         (STACK_BOUNDARY): Use default target to deceide stack boundary.
11113         * config/i386/i386-protos.h (ix86_cfun_abi): New.
11114         (ix86_function_abi): Likewise.
11115         (ix86_function_type_abi): Likewise.
11116         (ix86_call_abi_override): Likewise.
11117         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
11118         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
11119         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
11120         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
11121         specific defines.
11122         (X86_64_REGPARM_MAX): New.
11123         (X86_64_SSE_REGPARM_MAX): New.
11124         (X64_REGPARM_MAX): New.
11125         (X64_SSE_REGPARM_MAX): New.
11126         (X86_32_REGPARM_MAX): New.
11127         (X86_32_SSE_REGPARM_MAX): New.
11128         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
11129         (ix86_function_regparm): Handle user calling abi.
11130         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
11131         by DEFAULT_ABI versus SYSV_ABI check.
11132         (ix86_reg_parm_stack_space): New.
11133         (ix86_function_type_abi): New.
11134         (ix86_call_abi_override): New.
11135         (ix86_function_abi): New.
11136         (ix86_cfun_abi): New.
11137         (init_cumulative_args): Call abi specific initialization.
11138         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
11139         (function_arg_64): Extend SSE_REGPARM_MAX check.
11140         (function_arg (): Remove TARGET_64BIT_MS_ABI.
11141         (ix86_pass_by_reference): Likewise.
11142         (ix86_function_value_regno_p): Likewise.
11143         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
11144         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
11145         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
11146         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
11147         (setup_incoming_varargs_64): Adjust regparm for call abi.
11148         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
11149         (ix86_va_start): Likewise.
11150         (ix86_gimplify_va_arg): Likewise.
11151         (ix86_expand_prologue): Likewise.
11152         (output_pic_addr_const): Likewise.
11153         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
11154         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
11155         (x86_output_mi_thunk): Likewise.
11156         (x86_function_profiler): Likewise.
11157         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
11158         (SYSV_ABI, MS_ABI): New constants.
11159         (DEFAULT_ABI): New.
11160         (init_regs): Add prototype of function in regclass.c file.
11161         (OVERRIDE_ABI_FORMAT): New.
11162         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
11163         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
11164         (OUTGOING_REG_PARM_STACK_SPACE): New.
11165         (ix86_reg_parm_stack_space): New prototype.
11166         (CUMULATIVE_ARGS): Add call_abi member.
11167         (machine_function): Add call_abi member.
11168         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
11169         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
11170
11171 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
11172
11173         PR target/34879
11174         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
11175         (avr_builtin_setjmp_frame_value): New function.
11176         * config/avr/avr.md (nonlocal_goto_receiver): Define.
11177         (nonlocal_goto): Define.
11178
11179 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
11180
11181         * config/mips/mips.c (mips_emit_loadgp): Return early if
11182         there is nothing do to, otherwise emit a blockage if
11183         !TARGET_EXPLICIT_RELOCS || crtl->profile.
11184         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
11185
11186 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11187
11188         * configure.ac: Drop unneeded backslash ending up in config.in.
11189         * acinclude.m4: Likewise.
11190         * config.in: Regenerate.
11191
11192 2008-05-26  Jan Hubicka  <jh@suse.cz>
11193
11194         * predict.c (maybe_hot_frequency_p): Break out of...
11195         (maybe_hot_bb_p): ... here.
11196         (maybe_hot_edge_p): New.
11197         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
11198         * basic-block.h (maybe_hot_edge_p): Declare.
11199
11200 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
11201
11202         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
11203         (*cmpfp_<mode>_cc): Ditto.
11204         (*fp_jcc_8<mode>_387): Ditto.
11205         (*fop_<MODEF:mode>_2_i387): Ditto.
11206         (*fop_<MODEF:mode>_3_i387): Ditto.
11207         (*fop_xf_2_i387): Ditto.
11208         (*fop_xf_3_i387): Ditto.
11209
11210 2008-06-02  Tomas Bily  <tbily@suse.cz>
11211
11212         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
11213
11214 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11215
11216         * config/mips/mips.c (mips_valid_offset_p): New function.
11217         (mips_valid_lo_sum_p): Likewise.
11218         (mips_classify_address): Use them.
11219         (mips_force_address): New function.
11220         (mips_legitimize_address): Use it.
11221         * config/mips/mips.md (MOVE128): New mode iterator.
11222         (movtf): Require TARGET_64BIT.  Remove empty strings.
11223         (*movtf_internal): Rename to...
11224         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
11225         of "R" and use {,fp}{load,store} attributes instead of "multi".
11226         Use a separate define_split.
11227         (*movtf_mips16): New pattern.
11228
11229 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11230
11231         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
11232         * config/mips/mips.c (mips_expand_before_return): New function.
11233         (mips_expand_epilogue): Call it.
11234         * config/mips/mips.md (return): Turn into a define_expand.
11235         (*return): New insn.
11236
11237 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
11238
11239         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
11240         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
11241         functions.  Do not emit uses and clobbers of CONCATs; individually
11242         use and clobber their operands.
11243         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
11244         gen_clobber, emit_use and gen_use.
11245         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
11246         (expand_builtin_return): Likewise.
11247         * cfgbuild.c (count_basic_blocks): Likewise.
11248         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
11249         * explow.c (emit_stack_restore): Likewise.
11250         * expmed.c (extract_bit_field_1): Likewise.
11251         * expr.c (convert_move, emit_move_complex_parts): Likewise.
11252         (emit_move_multi_word, store_constructor): Likewise.
11253         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
11254         (thread_prologue_and_epilogue_insns): Likewise.
11255         * lower-subreg.c (resolve_simple_move): Likewise.
11256         * optabs.c (widen_operand, expand_binop): Likewise.
11257         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
11258         * reload.c (find_reloads): Likewise.
11259         * reload1.c (eliminate_regs_in_insn): Likewise.
11260         * stmt.c (expand_nl_goto_receiver): Likewise.
11261         * config/alpha/alpha.md (builtin_longjmp): Likewise.
11262         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
11263         * config/arm/arm.c (arm_load_pic_register): Likewise.
11264         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
11265         * config/arm/arm.md (untyped_return): Likewise.
11266         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
11267         * config/avr/avr.c (expand_prologue): Likewise.
11268         * config/bfin/bfin.c (do_unlink): Likewise.
11269         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
11270         * config/cris/cris.c (cris_expand_prologue): Likewise.
11271         * config/darwin.c (machopic_indirect_data_reference): Likewise.
11272         (machopic_legitimize_pic_address): Likewise.
11273         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
11274         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
11275         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
11276         (ix86_expand_convert_uns_didf_sse): Likewise.
11277         (ix86_expand_vector_init_general): Likewise.
11278         * config/ia64/ia64.md (eh_epilogue): Likewise.
11279         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
11280         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
11281         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
11282         (config/iq2000/iq2000.c): Likewise.
11283         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
11284         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
11285         (builtin_longjmp): Likewise.
11286         * config/mn10300/mn10300.md (call, call_value): Likewise.
11287         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
11288         * config/pdp11/pdp11.md (abshi2): Likewise.
11289         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
11290         * config/s390/s390.c (s390_emit_prologue): Likewise.
11291         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
11292         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
11293         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
11294         * config/sh/sh.c (prepare_move_operands): Likewise.
11295         (output_stack_adjust, sh_expand_epilogue): Likewise.
11296         (sh_set_return_address, sh_expand_t_scc): Likewise.
11297         * config/sparc/sparc.c (load_pic_register): Likewise.
11298         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
11299         * config/spu/spu.c (spu_expand_epilogue): Likewise.
11300         * config/v850/v850.c (expand_epilogue): Likewise.
11301
11302 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
11303
11304         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
11305         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
11306         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
11307         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
11308         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
11309         stack pointer register.
11310         (output_movhi): Remove code for interrupt specific writing to the
11311         stack pointer register.
11312
11313 2008-05-31  Richard Guenther  <rguenther@suse.de>
11314
11315         PR tree-optimization/34244
11316         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
11317         (tree_expr_nonzero_warnv_p): Likewise.
11318         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
11319         ssa_name_nonnegative_p.
11320         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
11321         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
11322         not tree_expr_nonzero_warnv_p.
11323
11324         PR tree-optimization/36262
11325         Revert
11326         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
11327
11328         PR tree-optimization/34244
11329         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
11330         (record_numbers_of_iterations): New function.
11331         (execute_vrp): Cache the numbers of iterations of loops.
11332         * tree-scalar-evolution.c (scev_reset_except_niters):
11333         New function.
11334         (scev_reset): Use scev_reset_except_niters.
11335         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
11336
11337 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
11338
11339         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
11340         __WORKAROUND_RETS when appropriate.
11341
11342 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
11343
11344         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
11345         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
11346         mode iterator.
11347         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
11348         *fop_df_comm_sse insn patterns using MODEF mode iterator.
11349         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
11350         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
11351         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
11352         *fop_df_1_mixed insn patterns using MODEF mode iterator.
11353         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
11354         *fop_df_1_sse insn patterns using MODEF mode iterator.
11355         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
11356         *fop_df_1_i387 insn patterns using MODEF mode iterator.
11357         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
11358         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
11359         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
11360         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
11361         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
11362         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
11363         (*fop_xf_4_i387): Use <MODE> for mode attribute.
11364         (*fop_xf_5_i387): Ditto.
11365         (*fop_xf_6_i387): Ditto.
11366
11367 2008-05-30  Richard Guenther  <rguenther@suse.de>
11368
11369         * builtins.c (build_string_literal): Avoid generating
11370         a non-gimple_val result.
11371
11372 2008-05-30  DJ Delorie  <dj@redhat.com>
11373
11374         * exec-tool.in: Use an environment variable (private) instead of a
11375         file (shared) as a semaphore, so as to not break parallel builds.
11376
11377 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
11378
11379         * optabs.c (maybe_encapsulate_block): Remove.
11380         (emit_libcall_block): Adjust accordingly.
11381         * optabs.h (maybe_encapsulate_block): Remove prototype.
11382
11383         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
11384         Don't use maybe_encapsulate_block.
11385
11386 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
11387
11388         * config/rs6000/rs6000.c (rs6000_legitimize_address,
11389         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
11390         rtx is a SYMBOL_REF before calling get_pool_constant.
11391
11392 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
11393
11394         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
11395
11396 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
11397
11398         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
11399         rather than OS names to choose INO_T_EQ definition.
11400         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
11401         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
11402
11403 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
11404
11405         PR target/36348
11406         * config/darwin-f.c: New.
11407         * config/t-darwin: Added rule to build darwin-f.o.
11408         * config.gcc: Defined new variable, fortran_target_objs.
11409         (*-*-darwin*): Set fortran_target_objs.
11410         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
11411         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
11412         * configure: Regenerated.
11413
11414 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
11415
11416         PR target/35771
11417         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
11418         canonical type if needed.
11419
11420 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
11421
11422         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
11423
11424 2008-05-29  Richard Guenther  <rguenther@suse.de>
11425
11426         PR tree-optimization/36343
11427         PR tree-optimization/36346
11428         PR tree-optimization/36347
11429         * tree-flow.h (clobber_what_p_points_to): Declare.
11430         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
11431         pointed-to variable is dereferenced is irrelevant to whether
11432         the pointer can access the pointed-to variable.
11433         (clobber_what_p_points_to): New function.
11434         * tree-ssa-alias.c (set_initial_properties): Use it.
11435         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
11436         call clobber check for NMTs.
11437
11438 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
11439
11440         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
11441         for printing gcov_type.
11442
11443 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
11444
11445         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
11446         and the eh region information.
11447         * value-prof.c (gimple_move_stmt_histograms): New function.
11448         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
11449
11450 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
11451
11452         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
11453
11454 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
11455
11456         * value-prof.c (tree_ic_transform): Print counts.
11457         * tree-profile.c (tree_gen_ic_func_profiler):
11458         Clear __gcov_indreict_call_callee variable to avoid misattribution
11459         of the profile.
11460
11461 2008-05-28  Rafael Espindola  <espindola@google.com>
11462
11463         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
11464         invalid sharing.
11465
11466 2008-05-28  Richard Guenther  <rguenther@suse.de>
11467
11468         PR tree-optimization/36339
11469         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
11470         and clobbering code out of the loop.
11471
11472 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
11473
11474         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
11475         letters defined.
11476
11477         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
11478         s390_contiguous_bitmask_p, s390_symref_operand_p,
11479         s390_check_symref_alignment, s390_reload_larl_operand,
11480         s390_reload_symref_address): New functions.
11481         (s390_branch_condition_mnemonic): Support compare and branch
11482         instructions.
11483         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
11484         and 'W' constraints.
11485         (s390_secondary_reload): Add secondary reloads for unaligned
11486         symbol refs or symbol refs to floating point or QI/TI mode
11487         integer values.
11488         (legitimate_address_p): Accept symbol references as addresses.
11489         (s390_expand_insv): Use rotate and insert selected bits
11490         instruction for insv when building for z10.
11491         (print_operand_address): Handle symbol ref addresses.
11492         (print_operand): Output modifier 'c' added for signed byte values.
11493         (s390_encode_section_info): Mark symbol refs with
11494         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
11495
11496         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
11497         (length attribute): RRF, RRR have 4 byte length.
11498         (FPALL, INTALL): New mode iterators added.
11499         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
11500         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
11501         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
11502         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
11503         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
11504         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
11505         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
11506         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
11507         instructions.
11508         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
11509         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
11510         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
11511         reload<INTALL:mode><P:mode>_toreg_z10,
11512         reload<FPALL:mode><P:mode>_tomem_z10,
11513         reload<FPALL:mode><P:mode>_toreg_z10,
11514         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
11515         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
11516         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
11517         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
11518         definition.
11519         (movmem, clrmem, cmpmem): New splitters added.
11520
11521         * config/s390/predicates.md (larl_operand): Use
11522         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
11523         SYMBOL_REF_ALIGN1_P.
11524         (s390_signed_integer_comparison,
11525         s390_unsigned_integer_comparison): New predicates.
11526
11527         * config/s390/s390-protos.h (s390_check_symref_alignment,
11528         s390_contiguous_bitmask_p, s390_reload_larl_operand,
11529         s390_reload_symref_address,
11530         s390_compare_and_branch_condition_mask): Prototypes added.
11531
11532         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
11533         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
11534         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
11535
11536 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
11537
11538         * config/s390/s390.c (z10_cost): New cost function for z10.
11539         (s390_handle_arch_option, override_options): Support -march=z10 switch.
11540         (s390_issue_rate): Adjust issue rate for z10.
11541         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
11542         (processor_flags): Add PF_Z10.
11543         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
11544         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
11545         * gcc/config.gcc: Add z10.
11546
11547 2008-05-28  Richard Guenther  <rguenther@suse.de>
11548
11549         PR tree-optimization/36291
11550         * tree-flow. h (struct gimple_df): Remove var_anns member.
11551         * tree-flow-inline.h (gimple_var_anns): Remove.
11552         (var_ann): Simplify.
11553         * tree-dfa.c (create_var_ann): Simplify.
11554         (remove_referenced_var): Clear alias info from var_anns of globals.
11555         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
11556         (delete_tree_ssa): Clear alias info from var_anns of globals.
11557         Do not free var_anns.
11558         (var_ann_eq): Remove.
11559         (var_ann_hash): Likewise.
11560
11561 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
11562
11563         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
11564         and loongson2f entries.
11565         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
11566         * config/mips/mips.h (processor_type): Add Loongson-2E
11567         and Loongson-2F entries.
11568         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
11569         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
11570         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
11571         * doc/invoke.texi (MIPS Options): Document loongson2e
11572         and loongson2f processor names.
11573
11574 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11575
11576         PR target/35767
11577         PR target/35771
11578         * config/i386/i386.c (ix86_function_arg_boundary): Use
11579         alignment of canonical type.
11580         (ix86_expand_vector_move): Check unaligned memory access for
11581         all SSE modes.
11582
11583 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
11584
11585         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
11586         Moved to the front of file.
11587
11588 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
11589             H.J. Lu  <hongjiu.lu@intel.com>
11590
11591         * dwarf2out.c (current_fde): New.
11592         (add_cfi): Use it.
11593         (lookup_cfa:): Likewise.
11594         (dwarf2out_end_epilogue): Likewise.
11595         (dwarf2out_note_section_used): Likewise.
11596
11597 2008-05-27  Michael Matz  <matz@suse.de>
11598
11599         PR c++/27975
11600         * c.opt (Wenum-compare): New warning option.
11601         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
11602
11603 2008-05-27  Michael Matz  <matz@suse.de>
11604
11605         PR middle-end/36326
11606         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
11607         non-BLKmode types.
11608         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
11609         into memory as tail calls.
11610
11611 2008-05-27  Richard Guenther  <rguenther@suse.de>
11612
11613         PR tree-optimization/36339
11614         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
11615         pointers cause all addressable variables to be call clobbered.
11616
11617 2008-05-27  Richard Guenther  <rguenther@suse.de>
11618
11619         PR tree-optimization/36245
11620         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
11621
11622 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11623
11624         * config/s390/s390.md: Replace all occurences of the 'm'
11625         constraint with 'RT'.
11626
11627 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11628
11629         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
11630         definitions added.
11631         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
11632         "*movdi_64".
11633         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
11634         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
11635         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
11636
11637 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11638
11639         * reload.c: (find_reloads): Skip alternatives according to the
11640         "enabled" attribute. Constify the constraint variable.
11641         * recog.c (get_attr_enabled): Add default implementation.
11642         (extract_insn): Set the alternative_enabled_p array
11643         in the recog_data struct.
11644         (preprocess_constraints, constrain_operands): Skip
11645         alternatives according to the "enabled" attribute
11646         * recog.h (struct recog_data): New field alternative_enabled_p.
11647         (skip_alternative): New inline function.
11648         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
11649         (record_reg_classes): Skip alternative according to the
11650         "enabled" attribute.
11651
11652         * doc/md.texi: Add documention for the "enabled" attribute.
11653
11654 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
11655
11656         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
11657         * postreload.c (reload_cse_simplify_operands): Replace 'm'
11658         constraint with TARGET_MEM_CONSTRAINT.
11659         * recog.c (asm_operand_ok, preprocess_constraints,
11660         constrain_operands): Likewise.
11661         * regclass.c (record_reg_classes): Likewise.
11662         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
11663         * reload1.c (maybe_fix_stack_asms): Likewise.
11664         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
11665         * recog.h: Adjust comment.
11666         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
11667         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
11668         * doc/md.texi: Add a note to description of 'm' constraint.
11669         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
11670
11671 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
11672
11673         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
11674         that the bitfield is of integral type before testing its precision.
11675
11676 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
11677             Sa Liu  <saliu@de.ibm.com>
11678
11679         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
11680         __modti3, __udivti3, __umodti3 and __udivmodti4.
11681         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
11682         that implement TImode mul and div functions.
11683         * config/spu/multi3.c: New. Implement __multi3.
11684         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
11685         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
11686         functions on SPU.
11687
11688 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
11689
11690         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
11691         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
11692         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
11693         tls_sysv_suffix): New mode and mode attribute iterators.
11694         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
11695         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
11696         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
11697         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
11698         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
11699         iterators.
11700
11701 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
11702
11703         PR tree-optimization/36329
11704         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
11705         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
11706         * cgraphbuild.c (initialize_inline_failed): Use the latter
11707         macro in lieu of the former.
11708         * ipa-inline.c (cgraph_mark_inline): Likewise.
11709         (cgraph_decide_inlining_of_small_function): Likewise.
11710         (cgraph_decide_inlining): Likewise.
11711         (cgraph_decide_inlining_incrementally): Likewise.
11712
11713 2008-05-26  Tristan Gingold  <gingold@adacore.com>
11714             Anatoly Sokolov  <aesok@post.ru>
11715
11716         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
11717         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
11718         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
11719         optimization for 'avr6' architecture.
11720
11721 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
11722
11723         PR target/34932
11724         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
11725
11726 2008-05-26  Richard Guenther  <rguenther@suse.de>
11727
11728         * tree-ssa-sccvn.c (expr_has_constants): Declare.
11729         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
11730
11731 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
11732
11733         PR middle-end/36253
11734         * caller-save.c (insert_restore): Verify alignment of spill space.
11735         (insert_save): Likewise.
11736         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
11737         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
11738         (STACK_SLOT_ALIGNMENT): Likewise.
11739         * function.c (LOCAL_ALIGNMENT): Removed.
11740         (get_stack_local_alignment): New.
11741         (assign_stack_local): Use it.  Set alignment on stack slot.
11742         (assign_stack_temp_for_type): Use get_stack_local_alignment.
11743         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
11744         (STACK_SLOT_ALIGNMENT): New.
11745         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
11746         stack slot in XFmode.
11747
11748         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
11749
11750 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
11751
11752         PR/36321
11753         * config/i386/i386.md (allocate_stack_worker_64): Make sure
11754         argument operand in rax isn't removed.
11755
11756 2008-05-26  Richard Guenther  <rguenther@suse.de>
11757
11758         PR middle-end/36300
11759         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
11760         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
11761
11762 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11763
11764         PR bootstrap/36331
11765         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
11766
11767 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
11768
11769         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
11770         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
11771
11772 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11773
11774         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
11775         build a trampoline if we don't want one.
11776         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
11777         return zero for nested functions if we don't want a trampoline.
11778
11779 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11780
11781         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
11782
11783 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
11784
11785         PR fortran/18428
11786         * c.opt: Removed undocumented option '-lang-fortran'.
11787         * c-common.h: Removed global variable 'lang_fortran'.
11788         * c-opts.c (c_common_handle_option): Removed code to handle
11789         option '-lang-fortran'. Updated includes.
11790         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
11791         definition of '__GFORTRAN__'.
11792         (define__GNUC__): Reimplemented to use BASEVER and
11793         cpp_define_formatted.
11794         (builtin_define_with_value_n): Removed.
11795         * c-incpath.h: Renamed to ...
11796         * incpath.h: ... this.
11797         * c-incpath.c: Renamed to ...
11798         * incpath.c: ... this. Updated includes.
11799         * fix-header.c: Updated includes.
11800         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
11801         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
11802         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
11803
11804 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
11805
11806         * tree.h: Update the table of flags used on tree nodes.
11807         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
11808         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
11809         (FORCED_LABEL): Add access check.
11810         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
11811         (ASM_INPUT_P): Likewise.
11812         (ASM_VOLATILE_P): Likewise.
11813         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
11814         (OMP_SECTION_LAST): Access private_flag directly.
11815         (OMP_RETURN_NOWAIT): Likewise.
11816         (OMP_PARALLEL_COMBINED): Likewise.
11817         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
11818         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
11819         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
11820         deprecated_flag directly.
11821
11822 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
11823
11824         * final.c (frame_pointer_needed): Removed.
11825         * flags.h (frame_pointer_needed): Likewise.
11826
11827         * function.h (rtl_data): Add frame_pointer_needed.
11828         (frame_pointer_needed): New.
11829
11830 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
11831
11832         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
11833
11834 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
11835
11836         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
11837         SRC is a REG.
11838
11839 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
11840
11841         * c-common.c (strip_array_types): Move function to..
11842         * tree.c: ..here.
11843         (get_inner_array_type): Delete.
11844         * c-common.h (strip_array_types): Move declaration to..
11845         * tree.h: ..here.
11846         (get_inner_array_type): Delete.
11847         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
11848         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
11849         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
11850         * config/pa/pa.c (emit_move_sequence): Likewise.
11851
11852 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
11853
11854         * config/i386/i386.md (*sse_prologue_save_insn): Set length
11855         attribute to 34.
11856
11857 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
11858
11859         * function.c: Include target hook for nonlocal_goto frame value.
11860
11861 2008-05-24  Richard Guenther  <rguenther@suse.de>
11862
11863         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
11864         variable can be only accessed through a pointer or a union.
11865
11866 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11867
11868         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
11869         * doc/extend.texi: Likewise.
11870
11871 2008-05-23  DJ Delorie  <dj@redhat.com>
11872
11873         * config/m32c/jump.md (untyped_call): Add.
11874
11875         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
11876         for A24 to PSImode.
11877         (m32c_address_cost): Detail costs for indirect offsets.
11878
11879 2008-05-23  Rafael Espindola  <espindola@google.com>
11880
11881         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
11882         if a node is a SUBREG.
11883         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
11884         is a SUBREG.
11885
11886 2008-05-23  Paul Brook  <paul@codesourcery.com>
11887             Carlos O'Donell  <carlos@codesourcery.com>
11888
11889         * doc/extend.texi: Clarify use of __attribute__((naked)).
11890         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
11891         * target.h (gcc_target): Add allocate_stack_slots_for_args.
11892         * function.c (use_register_for_decl): Use
11893         targetm.calls.allocate_stack_slots_for_args.
11894         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
11895         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
11896         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
11897
11898 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
11899
11900         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
11901
11902 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
11903
11904         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
11905         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
11906         is only rounded once.
11907
11908 2008-05-23  Richard Guenther  <rguenther@suse.de>
11909
11910         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
11911
11912 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
11913             Jakub Jelinek  <jakub@redhat.com>
11914
11915         PR target/36079
11916         * configure.ac: Handle --enable-cld.
11917         * configure: Regenerated.
11918         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
11919         * config/i386/i386.h (struct machine_function): Add needs_cld field.
11920         (ix86_current_function_needs_cld): New define.
11921         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
11922         (cld): New isns pattern.
11923         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
11924         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
11925         * config/i386/i386.opt (mcld): New option.
11926         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
11927         TARGET_CLD and ix86_current_function_needs_cld.
11928         (override_options): Use -mcld by default for 32-bit code if
11929         USE_IX86_CLD.
11930
11931         * doc/install.texi (Options specification): Document --enable-cld.
11932         * doc/invoke.texi (Machine Dependent Options)
11933         [i386 and x86-64 Options]: Add -mcld option.
11934         (Intel 386 and AMD x86-64 Options): Document -mcld option.
11935
11936 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
11937         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
11938         (return_in_memory_64): Likewise.
11939         (return_in_memory_ms_64): Likewise.
11940
11941 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11942
11943         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
11944         * builtins.c (fold_builtin_fpclassify): New.
11945         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
11946         * builtins.def (BUILT_IN_FPCLASSIFY): New.
11947         * c-common.c (handle_type_generic_attribute): Adjust to accept
11948         fixed arguments before an elipsis.
11949         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
11950         * doc/extend.texi: Document __builtin_fpclassify.
11951
11952 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
11953
11954         * omp-low.c (gate_expand_omp_ssa): Remove.
11955         (pass_expand_omp_ssa): Remove.
11956         (gate_expand_omp): Do not check for flag_openmp_ssa.
11957         * common.opt (-fopenmp-ssa): Remove.
11958         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
11959
11960 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
11961
11962         * config/sh/sh.opt (mfixed-range): New option.
11963         * config/sh/sh-protos.h (sh_fix_range): Declare.
11964         * config/sh/sh.c (sh_fix_range): New function.
11965         * config/sh/sh.h (sh_fixed_range_str): Declare.
11966         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
11967         is not empty.
11968         * doc/invoke.texi (SH Options): Document -mfixed-range.
11969
11970 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
11971
11972         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
11973         it before the redeclaration.
11974
11975 2008-05-22  Anatoly Sokolov <aesok@post.ru>
11976
11977         * config/avr/avr.c (get_sequence_length): Add new function.
11978         (expand_prologue, expand_epilogue): Remove duplicate code.
11979
11980 2008-05-22  Rafael Espindola  <espindola@google.com>
11981
11982         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
11983         sharing.
11984
11985 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
11986
11987         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
11988         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
11989
11990         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
11991         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
11992         (vect_update_misalignment_for_peel): Likewise.
11993         (vector_alignment_reachable_p): Likewise.
11994         * tree-vect-transform.c (vectorizable_load): Likewise.
11995         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
11996         (get_vectype_for_scalar_type): Pass mode of scalar_type
11997         to UNITS_PER_SIMD_WORD.
11998
11999         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
12000         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
12001         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
12002         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
12003         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
12004
12005 2008-05-22  Ira Rosen  <irar@il.ibm.com>
12006
12007         PR tree-optimization/36293
12008         * tree-vect-transform.c (vect_transform_strided_load): Don't check
12009         if the first load must be skipped because of a gap.
12010
12011 2008-05-22  Richard Guenther  <rguenther@suse.de>
12012
12013         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
12014         more cases of offset disambiguation that is possible if
12015         strict-aliasing rules apply.
12016         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
12017         for basic offset and type-based disambiguation.
12018
12019 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12020
12021         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
12022         ix86_expand_vector_set on V16QImode for SSE4.1.
12023
12024 2008-05-21  Tom Tromey  <tromey@redhat.com>
12025
12026         * c.opt (Wimport): Mark as undocumented.
12027         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
12028         -Wno-import.
12029         (Warning Options): Likewise.
12030         * doc/cppopts.texi: Don't mention -Wimport.
12031
12032 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
12033
12034         PR tree-optimization/36287
12035         PR tree-optimization/36286
12036         * lambda-code.c (build_access_matrix): Do not use the loop->num
12037         for computing the number of induction variables: use the loop depth
12038         instead.
12039
12040 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
12041
12042         PR/36280
12043         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
12044         option -f(no-)leading-underscore.
12045
12046 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12047
12048         * config/i386/i386.c (ix86_expand_vector_init_general): Use
12049         GET_MODE_NUNITS (mode).
12050
12051 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
12052
12053         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
12054         (-mmulhw): Add 464 to description.
12055         (-mdlmzb): Likewise.
12056         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
12057         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
12058         464fp entries.
12059         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
12060         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
12061         * config/rs6000/rs6000.md: Update comments for 464.
12062
12063 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
12064
12065         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
12066
12067 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12068
12069         * config/i386/sse.md (vec_extractv4sf): Removed.
12070         (vec_extractv2df): Likewise.
12071         (vec_extractv2di): Likewise.
12072         (vec_extractv4si): Likewise.
12073         (vec_extractv8hi): Likewise.
12074         (vec_extractv16qi): Likewise.
12075         (vec_extract<mode>): New.
12076
12077 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12078
12079         * config/i386/sse.md (vec_setv4sf): Removed.
12080         (vec_setv2df): Likewise.
12081         (vec_setv2di): Likewise.
12082         (vec_setv4si): Likewise.
12083         (vec_setv8hi): Likewise.
12084         (vec_setv16qi): Likewise.
12085         (vec_set<mode>): New.
12086
12087 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12088
12089         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
12090         goto for vec_concat and vec_interleave.
12091
12092 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
12093
12094         * config/i386/sse.md (vec_initv4sf): Removed.
12095         (vec_initv2df): Likewise.
12096         (vec_initv2di): Likewise.
12097         (vec_initv4si): Likewise.
12098         (vec_initv8hi): Likewise.
12099         (vec_initv16qi): Likewise.
12100         (vec_init<mode>): New.
12101
12102 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
12103
12104         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
12105
12106 2008-05-21  Tom Tromey  <tromey@redhat.com>
12107
12108         * ggc-zone.c (lookup_page_table_if_allocated): New function.
12109         (zone_find_object_offset): Likewise.
12110         (gt_ggc_m_S): Likewise.
12111         (highest_bit): Likewise.
12112         * ggc-page.c (gt_ggc_m_S): New function.
12113         * stringpool.c (string_stack): Remove.
12114         (init_stringpool): Update.
12115         (ggc_alloc_string): Use ggc_alloc.
12116         (maybe_delete_ident): New function.
12117         (ggc_purge_stringpool): Likewise.
12118         (gt_ggc_m_S): Remove.
12119         * ggc-common.c (ggc_protect_identifiers): New global.
12120         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
12121         ggc_protect_identifiers.
12122         * ggc.h (ggc_protect_identifiers): Declare.
12123         (gt_ggc_m_S): Update.
12124         (ggc_purge_stringpool): Declare.
12125         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
12126         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
12127         special case.
12128         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
12129
12130 2008-05-21  David S. Miller  <davem@davemloft.net>
12131
12132         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
12133         tmake_file.
12134
12135 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
12136
12137         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
12138         once finished.
12139
12140 2008-05-20  David Daney  <ddaney@avtrex.com>
12141
12142         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
12143         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
12144         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
12145         UNSPEC_UPDATE_GOT_VERSION): Renumber.
12146         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
12147         (atomic_hiqi_op): New define_code_iterator.
12148         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
12149         mips_expand_compare_and_swap_12.
12150         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
12151         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
12152         (sync_<optab><mode>, sync_old_<optab><mode>,
12153         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12154         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
12155         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
12156         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
12157         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
12158         (test_and_set_12): New insn.
12159         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
12160         sync_new_<optab><mode>, sync_old_nand<mode>,
12161         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
12162         clobber to operand 0 for SI and DI mode insns.
12163         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
12164         mips_gen_fn_4): New typedefs.
12165         (mips_gen_fn_ptrs): Define new union type.
12166         (mips_expand_compare_and_swap_12): Remove declaration.
12167         (mips_expand_atomic_qihi): Declare function.
12168         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
12169         (mips_expand_atomic_qihi): ... this.  Use new generator function
12170         parameter.
12171         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
12172         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
12173         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
12174         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
12175         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
12176         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
12177         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
12178         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
12179         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
12180         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
12181         New macros.
12182
12183 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
12184
12185         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
12186         the missing break.
12187
12188 2008-05-20  Anatoly Sokolov <aesok@post.ru>
12189
12190         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
12191         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
12192         (avr_attribute_table): Add 'OS_main' function attribute.
12193         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
12194         functions with 'OS_main' attribute.
12195
12196 2008-05-20  Richard Guenther  <rguenther@suse.de>
12197
12198         PR tree-optimization/35204
12199         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
12200         helper, split out from ...
12201         (DFS): ... here.  Make the DFS walk non-recursive.
12202
12203 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
12204             Jan Sjodin  <jan.sjodin@amd.com>
12205
12206         PR tree-optimization/36181
12207         * tree-parloops.c (loop_has_vector_phi_nodes): New.
12208         (parallelize_loops): Don't parallelize when the loop has vector
12209         phi nodes.
12210
12211 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12212             Sebastian Pop  <sebastian.pop@amd.com>
12213
12214         * tree-loop-linear.c (gather_interchange_stats): Look in the access
12215         matrix, and never look at the tree representation of the memory
12216         accesses.
12217         (linear_transform_loops): Computes parameters and access matrices.
12218         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
12219         when fails.
12220         (access_matrix_get_index_for_parameter): New.
12221         * tree-data-ref.h (struct access_matrix): New.
12222         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
12223         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
12224         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
12225         am_vector_index_for_loop): New.
12226         (struct data_reference): Add field access_matrix.
12227         (DR_ACCESS_MATRIX): New.
12228         (compute_data_dependences_for_loop): Update declaration.
12229         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
12230         * lambda.h (lambda_vector_vec_p): Declared.
12231         * lambda-code.c: Depend on pointer-set.h.
12232         (lambda_collect_parameters_from_af, lambda_collect_parameters,
12233         av_for_af_base, av_for_af, build_access_matrix,
12234         lambda_compute_access_matrices): New.
12235         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
12236
12237 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
12238
12239         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
12240         $SOURCEDIR/include.
12241
12242 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12243             Sebastian Pop  <sebastian.pop@amd.com>
12244
12245         PR tree-optimization/36206
12246         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
12247         FOLD_CONVERSIONS.
12248         (instantiate_scev_1): Rename flags to fold_conversions.
12249         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
12250         outeside instantiation_loop.
12251         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
12252         (evolution_function_is_affine_or_constant_p): Removed.
12253         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
12254         instantiate_scev.
12255         (analyze_siv_subscript): Pass in the loop nest number.
12256         Call evolution_function_is_affine_in_loop instead of
12257         evolution_function_is_affine_p.
12258         (analyze_overlapping_iterations): Pass in the loop nest number.
12259
12260 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
12261             Sebastian Pop  <sebastian.pop@amd.com>
12262
12263         PR tree-optimization/36206
12264         * tree-chrec.h (chrec_fold_op): New.
12265         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
12266         and other trees.
12267
12268 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
12269
12270         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
12271         (DIRS_EQ): New.
12272         (remove_duplicates): Do not set inode on non-inode systems.
12273         Use DIRS_EQ.
12274
12275 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
12276
12277         * config.gcc (tm_file): Update comments about relative pathnames.
12278
12279 2008-05-20  Richard Guenther  <rguenther@suse.de>
12280
12281         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
12282         * tree-ssa-sccvn.c (process_scc): Likewise.
12283         * tree-ssa-sink.c (execute_sink_code): Likewise.
12284         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
12285         * tree-vrp.c (process_assert_insertions): Likewise.
12286         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
12287         (perform_tree_ssa_dce): Likewise.
12288         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
12289         (dump_dominator_optimization_stats): Likewise.
12290         * tree-vectorizer.c (vectorize_loops): Likewise.
12291
12292 2008-05-20  Richard Guenther  <rguenther@suse.de>
12293
12294         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
12295
12296 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
12297
12298         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
12299         (ix86_i386elf_return_in_memory): Likewise.
12300         (ix86_i386interix_return_in_memory): Likewise.
12301         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
12302         (SUBTARGET_RETURN_IN_MEMORY): New.
12303         * config/i386/i386elf.h: Likewise.
12304         * config/i386/ptx4-i.h: Likewise.
12305         * config/i386/sol2-10.h: Likewise.
12306         * config/i386/sysv4.h: Likewise.
12307         * config/i386/vx-common.h: Likewise.
12308         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
12309         * config/i386/i386.c (ix86_return_in_memory): Made static and
12310         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
12311         (ix86_i386elf_return_in_memory): Removed.
12312         (ix86_i386interix_return_in_memory): Removed.
12313         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
12314         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
12315
12316 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
12317
12318         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
12319
12320 2008-05-19  Xinliang David Li  <davidxl@google.com>
12321
12322         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
12323         * opts.c: Ditto.
12324         * common.opt: Ditto.
12325         * doc/invoke.texi: Ditto.
12326
12327 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
12328
12329         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
12330         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
12331
12332 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
12333
12334         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
12335         sizes of operand array from 8/4 to 4/2.
12336         (ix86_expand_vector_init_general): Change size of operand array
12337         from 32 to 16.  Remove op0, op1 and half_mode.
12338
12339 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
12340
12341         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
12342         (ix86_expand_vector_init_interleave): Likewise.
12343         (ix86_expand_vector_init_general): Use them.  Assert
12344         word_mode == SImode when n_words == 4.
12345
12346 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
12347
12348         * config/i386/i386.c (ix86_secondary_reload): New static function.
12349         (TARGET_SECONDARY_RELOAD): New define.
12350         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
12351         * config/i386/i386.md (reload_outqi): Remove.
12352
12353 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12354
12355         PR middle-end/35509
12356         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
12357         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
12358         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
12359         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
12360         (fold_builtin_1): Likewise.
12361         * builtins.def (BUILT_IN_ISINF_SIGN): New.
12362         c-common.c (check_builtin_function_arguments): Handle
12363         BUILT_IN_ISINF_SIGN.
12364         * doc/extend.texi: Document __builtin_isinf_sign.
12365         * fold-const.c (operand_equal_p): Handle COND_EXPR.
12366
12367 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
12368
12369         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
12370         EH cleanup at the end of the pass, search for those that have been
12371         turned into forwarder blocks and do the cleanup on their successor.
12372
12373 2008-05-18  Richard Guenther  <rguenther@suse.de>
12374
12375         * tree-cfg.c (verify_gimple_expr): Allow conversions from
12376         pointers to sizetype and vice versa.
12377
12378 2008-05-18 Xinliang David Li   <davidxl@google.com>
12379
12380         * gcc/tree-ssa-dce.c: Coding style fix.
12381         (check_pow): Documentation comment.
12382         (check_log): Documenation comment. Coding style fix.
12383         (is_unnecessary_except_errno_call): Ditto.
12384         (gen_conditions_for_pow): Ditto.
12385         (gen_conditions_for_log): Ditto.
12386         (gen_shrink_wrap_conditions): Ditto.
12387         (shrink_wrap_one_built_in_calls): Ditto.
12388         * gcc/doc/invoke.texi: Better documentation string.
12389         * ChangeLog: Fix wrong change log entries from
12390         May 17 checkin on function call DCE.
12391
12392 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
12393
12394         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
12395
12396 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
12397
12398         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
12399         * df-problems.c (simulation routines): Fixed block comment to
12400         properly say how to add forwards scanning functions.
12401
12402 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
12403
12404         * tree-inline.c (setup_one_parameter): Remove dead code.
12405
12406 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
12407
12408         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
12409         a BIT_AND_EXPR only for an INTEGER_TYPE.
12410
12411 2008-05-17 Xinliang David Li   <davidxl@google.com>
12412
12413         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
12414         (check_pow, check_log, is_unnecessary_except_errno_call): New
12415         functions to check for eliminating math functions that are pure
12416         except for setting errno.
12417         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
12418         general condition expressions for shrink-wrapping pow/log calls.
12419         (gen_shrink_wrap_conditions): Ditto.
12420         (shrink_wrap_one_built_in_call): Ditto.
12421         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
12422         (mark_operand_necessary): If debugging, output if OP is necessary.
12423         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
12424         unnecessary.
12425         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
12426         opt level >= 2.
12427         * gcc/common.opt: New user flag -ftree-builtin-dce.
12428         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
12429
12430 2008-05-16  David S. Miller  <davem@davemloft.net>
12431
12432         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
12433         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
12434
12435 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
12436
12437         PR target/36246
12438         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
12439
12440 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12441
12442         * ifcvt.c (dead_or_predicable): Rename
12443         df_simulate_one_insn_backwards to df_simulate_one_insn.
12444         * recog.c (peephole2_optimize): Ditto.
12445         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
12446         Ditto.
12447         * df.h: Rename df_simulate_one_insn_backwards to
12448         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
12449         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
12450         scanning of defs and uses.
12451         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
12452         (df_simulate_one_insn_forwards): Removed.
12453
12454 2008-05-16  Doug Kwan  <dougkwan@google.com>
12455
12456         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
12457         QNaN & SNaN.
12458         (real_from_string): Handle NaNs and Inf as approriate.
12459
12460 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
12461
12462         * doc/gty.texi (Source Files Containing Type Information): Note
12463         that headers should appear first in the gtfiles list.
12464
12465 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12466
12467         * tree.def (COND_EXEC): Properly documented this code.
12468
12469 2008-05-16  Diego Novillo  <dnovillo@google.com>
12470
12471         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
12472         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
12473         the new field.
12474
12475 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12476
12477         * tree-ssa-dse (max_stmt_uid): Removed.
12478         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
12479         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
12480         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
12481         * function.h (cfun.last_stmt_uid): New field.
12482         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
12483         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
12484         New functions.
12485         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
12486         (create_stmt_ann): Initialize the ann->uid field.
12487         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
12488         with new calls.
12489         * tree-flow.h (renumber_gimple_stmt_uids): New function.
12490
12491 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
12492
12493         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
12494         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
12495         (init_empty_tree_cfg): Call it.
12496
12497 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12498
12499         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
12500         Update all users.
12501
12502 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
12503
12504         * doc/invoke.text (-fdump-tree-*-verbose): New option.
12505         * tree-dump.c (dump_options): New verbose option.
12506         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
12507         Add verbose dump.
12508         * tree-pass.h (TDF_VERBOSE): New dump flag.
12509         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
12510         (tree-flow.h): Added include.
12511         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
12512
12513 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
12514
12515         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
12516
12517         From Jie Zhang  <jie.zhang@analog.com>
12518         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12519         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
12520         mcpu=bf561-none and mcpu=bf561-0.2.
12521         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12522         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
12523         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
12524         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
12525         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
12526         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
12527         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
12528         option.
12529         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
12530         (cputype_selected): Remove.
12531         (bfin_handle_option): Don't use cputype_selected.
12532         (override_options): When no mcpu option, enable all workarounds.
12533         Don't use bfin_workarounds.
12534         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
12535         processor type.
12536         (DEFAULT_CPU_TYPE): Don't define.
12537
12538 2008-05-16  Richard Guenther  <rguenther@suse.de>
12539
12540         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
12541         on deletion of the last stmt.
12542
12543 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
12544
12545         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
12546         V8HImode for SSE2 and V16QImode for SSE4.1.
12547
12548 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
12549
12550         * cgraph.h (compute_inline_parameters): Made public.
12551         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
12552         variable_generate_summary, function_write_summary,
12553         variable_write_summary, variable_read_summary.  Added generate_summary,
12554         write_summary, read_summary.
12555         * cgraphunit.c (cgraph_process_new_functions): Changed call from
12556         pass_ipa_inline.function_generate_summary, to
12557         compute_inline_parameters.
12558         * ipa-inline.c (compute_inline_parameters): Made public and added
12559         node parameter.
12560         (compute_inline_parameters_for_current): New function.
12561         (pass_inline_param): Now calls compute_inline_parameters_for_current.
12562         (inline_generate_summary): Removed parameter and made to loop over
12563         all cgraph nodes.
12564         (pass_ipa_inline): Updated for new IPA_PASS structure.
12565         * passes.c (execute_ipa_summary_passes): Now is called once per
12566         pass rather than once per node*pass.
12567
12568 2008-05-15  Anatoly Sokolov <aesok@post.ru>
12569
12570         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
12571         avr_have_mul_p, avr_asm_only_p): Remove variables.
12572         (avr_override_options): Remove initialization of removed variables.
12573         (avr_file_start):  Convert removed variables to fields of
12574         'struct base_arch_s *avr_current_arch'.
12575         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
12576         (AVR_HAVE_MUL): (Ditto.).
12577         (AVR_HAVE_MOVW): (Ditto.).
12578         (AVR_HAVE_LPMX): (Ditto.).
12579         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
12580         avr_asm_only_p): Remove declaration.
12581
12582 2008-05-15  Diego Novillo  <dnovillo@google.com>
12583
12584         * config/arm/arm.c (arm_return_in_memory): Fix return type.
12585         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
12586
12587 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
12588
12589         PR middle-end/36194
12590         * combine.c (check_conversion): Rename back to check_promoted_subreg.
12591         Don't call record_truncated_value from here.
12592         (record_truncated_value): Turn it into a for_each_rtx callback.
12593         (record_truncated_values): New function.
12594         (combine_instructions): Call note_uses with record_truncated_values.
12595         Change name of check_conversion to check_promoted_subreg.
12596
12597 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
12598
12599         * doc/sourcebuild.texi: Document support for torture tests.
12600
12601 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
12602
12603         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
12604         to alternative 4 of operand 2.
12605
12606 2008-05-15  Richard Guenther  <rguenther@suse.de>
12607
12608         * tree-pass.h (current_pass): Declare.
12609         (get_pass_for_id): Likewise.
12610         * passes.c (passes_by_id, passes_by_id_size): New globals.
12611         (set_pass_for_id): New function.
12612         (get_pass_for_id): Likewise.
12613         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
12614         (execute_function_todo): Flush per function statistics.
12615         * toplev.c (compile_file): Init statistics.
12616         (general_init): Do early statistics initialization.
12617         (finalize): Finish statistics.
12618         * statistics.h (statistics_early_init): Declare.
12619         (statistics_init): Likewise.
12620         (statistics_fini): Likewise.
12621         (statistics_fini_pass): Likewise.
12622         (statistics_counter_event): Likewise.
12623         (statistics_histogram_event): Likewise.
12624         * statistics.c: New file.
12625         * Makefile.in (OBJS-common): Add statistics.o.
12626         (statistics.o): Add dependencies.
12627         * doc/invoke.texi (-fdump-statistics): Document.
12628
12629         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
12630         (insert): Likewise.
12631         (execute_pre): Use statistics_counter_event.
12632         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
12633         (substitute_and_fold): Increment it.  Use statistics_counter_event.
12634
12635 2008-05-15  Diego Novillo  <dnovillo@google.com>
12636
12637         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
12638
12639         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
12640         * tree-ssa-alias.c (new_type_alias): Remove references to
12641         sub-variables from comment.
12642         * tree-ssa-operands.c (swap_tree_operands): Likewise.
12643
12644 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
12645
12646         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
12647         attribute to 1 only for insertps alternative.
12648
12649 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
12650
12651         * config/bfin/bfin.md (loadbytes): New pattern.
12652         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
12653         (bfin_init_builtins): Initialize it.
12654         (bdesc_1arg): Add it.
12655
12656 2008-05-15  Sa Liu  <saliu@de.ibm.com>
12657
12658         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
12659         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
12660         * testsuite/lib/target-supports.exp: Add
12661         check_effective_target_fortran_integer_16.
12662
12663 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
12664
12665         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
12666         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
12667         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
12668         (TARGET_RETURN_IN_MEMORY): Define.
12669
12670 2008-05-15  Richard Guenther  <rguenther@suse.de>
12671
12672         PR middle-end/36244
12673         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
12674         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
12675         represent unmodifiable vars.
12676
12677 2008-05-15  Richard Guenther  <rguenther@suse.de>
12678
12679         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
12680         INDIRECT_REF and TARGET_MEM_REF.
12681         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
12682         TARGET_MEM_REF.
12683
12684 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
12685             H.J. Lu  <hongjiu.lu@intel.com>
12686
12687         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
12688         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
12689         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
12690         insn alternatives.  Add missing alternatives.
12691         (*vec_concatv2di_rex64_sse4_1): Likewise.
12692         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
12693         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
12694         Require TARGET_SSE.
12695
12696 2008-05-15  Richard Guenther  <rguenther@suse.de>
12697
12698         PR tree-optimization/36009
12699         PR tree-optimization/36204
12700         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
12701         (determine_invariantness_stmt): Record the loop a store is
12702         always executed in.
12703         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
12704         dependency.
12705
12706 2008-05-15  Richard Guenther  <rguenther@suse.de>
12707
12708         PR tree-optimization/34330
12709         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
12710         through the pointer will alias the SMT.
12711
12712 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
12713
12714         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
12715
12716 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
12717
12718         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
12719
12720 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12721             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12722
12723         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
12724         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
12725         (vashl_optab): New optab for vector/vector shifts.
12726         (vashr_optab): Ditto.
12727         (vlshr_optab): Ditto.
12728         (vrotl_optab): Ditto.
12729         (vrotr_optab): Ditto.
12730         (optab_subtype): New enum for optab_for_tree_code call.
12731         (optab_for_tree_code): Add enum optab_subtype argument.
12732
12733         * optabs.c (optab_for_tree_code): Take an additional argument to
12734         distinguish between a vector shift by a scalar and vector shift by
12735         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
12736         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
12737         vector shift by a vector.
12738         (expand_widen_pattern_expr): Pass additional argument to
12739         optab_for_tree_code.
12740
12741         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
12742         vrotl_optab, vrotr_optab.
12743
12744         * expr.c (expand_expr_real_1): Update calls to
12745         optab_for_tree_code to distinguish between vector shifted by a
12746         scalar and vector shifted by a vector.
12747         * tree-vectorizer.c (supportable_widening_operation): Ditto.
12748         (supportable_narrowing_operation): Ditto.
12749         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
12750         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
12751         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
12752         (vect_create_epilog_for_reduction): Ditto.
12753         (vectorizable_reduction): Ditto.
12754         (vectorizable_operation): Ditto.
12755         (vect_strided_store_supported): Ditto.
12756         (vect_strided_load_supported): Ditto.
12757         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
12758         * expmed.c (expand_shift): Ditto.
12759
12760         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
12761         scalar type.
12762         (ashr@var{m}3): Ditto.
12763         (vashl@var{m}3): Document new vector/vector shift standard name.
12764         (vashr@var{m}3): Ditto.
12765         (vlshr@var{m}3): Ditto.
12766         (vrotl@var{m}3): Ditto.
12767         (vrotr@var{m}3): Ditto.
12768
12769         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
12770         (PPERM_INVERT): Ditto.
12771         (PPERM_REVERSE): Ditto.
12772         (PPERM_REV_INV): Ditto.
12773         (PPERM_ZERO): Ditto.
12774         (PPERM_ONES): Ditto.
12775         (PPERM_SIGN): Ditto.
12776         (PPERM_INV_SIGN): Ditto.
12777         (PPERM_SRC1): Ditto.
12778         (PPERM_SRC2): Ditto.
12779
12780         * config/i386/sse.md (mulv2di3): Add SSE5 support.
12781         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
12782         allows a memory operand to be the value being added, and split it
12783         to improve vectorization.
12784         (sse5_pmacsdqh_mem): Ditto.
12785         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
12786         (sse5_mulv2div2di3_high): Ditto.
12787         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
12788         (vec_pack_trunc_v4si): Ditto.
12789         (vec_pack_trunc_v2di): Ditto.
12790         (sse5_pcmov_<mode>): Remove code that tried to use use
12791         andps/andnps instead of pcmov.
12792         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
12793         pmacsdqh instructions.
12794         (vec_widen_smult_lo_v4si): Ditto.
12795
12796         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
12797         (PPERM_INVERT): Ditto.
12798         (PPERM_REVERSE): Ditto.
12799         (PPERM_REV_INV): Ditto.
12800         (PPERM_ZERO): Ditto.
12801         (PPERM_ONES): Ditto.
12802         (PPERM_SIGN): Ditto.
12803         (PPERM_INV_SIGN): Ditto.
12804         (PPERM_SRC1): Ditto.
12805         (PPERM_SRC2): Ditto.
12806         (ix86_expand_sse_movcc): Move the SSE5 test after the if
12807         true/false tests.
12808         (ix86_expand_int_vcond): If SSE5 generate all possible integer
12809         comparisons.
12810         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
12811         says ignore whether the last reference is a memory operand.
12812
12813 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12814             Paolo Bonzini <bonzini at gnu dot org>
12815
12816         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
12817         shift patterns.
12818
12819         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
12820         (vlshr<mode>3): Rename from vlshr<mode>3.
12821         (vashr<mode>3): Rename from vashr<mode>3.
12822         (mulv4sf3): Change the names of vector shift patterns.
12823         (mulv4si3): Ditto.
12824         (negv4sf2): Ditt.
12825
12826         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
12827         shift insns.
12828
12829         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
12830         (SI_SHLHI): Ditto.
12831         (SI_SHL): Ditto.
12832         (SI_SHLI): Ditto.
12833         (SI_ROTH): Ditto.
12834         (SI_ROTHI): Ditto.
12835         (SI_ROT): Ditto.
12836         (SI_ROTI): Ditto.
12837         (SPU_RL_0): Ditto.
12838         (SPU_RL_1): Ditto.
12839         (SPU_RL_2): Ditto.
12840         (SPU_RL_3): Ditto.
12841         (SPU_RL_4): Ditto.
12842         (SPU_RL_5): Ditto.
12843         (SPU_RL_6): Ditto.
12844         (SPU_RL_7): Ditto.
12845         (SPU_SL_0): Ditto.
12846         (SPU_SL_1): Ditto.
12847         (SPU_SL_2): Ditto.
12848         (SPU_SL_3): Ditto.
12849         (SPU_SL_4): Ditto.
12850         (SPU_SL_5): Ditto.
12851         (SPU_SL_6): Ditto.
12852         (SPU_SL_7): Ditto.
12853
12854         * config/spu/spu.md (v): New iterator macro to add v for vector types.
12855         (floatunssidf2_internal): Change vector/vector shift names.
12856         (floatunsdidf2_internal): Ditto.
12857         (mulv8hi3): Ditto.
12858         (ashrdi3): Ditto.
12859         (ashrti3): Ditto.
12860         (cgt_df): Ditto.
12861         (cgt_v2df): Ditto.
12862         (dftsv): Ditto.
12863         (vashl<mode>3): Rename from ashl<mode>3.
12864         (vashr<mode>3): Rename from ashr<mode>3.
12865         (vlshr<mode>3): Rename from lshr<mode>3.
12866         (vrotl<mode>3): Rename from rotl<mode>3.
12867
12868 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
12869
12870         PR target/36224
12871         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
12872         multiply gives the wrong value when doing widening multiplies.
12873         (vec_widen_smult_lo_v4si): Ditto.
12874
12875 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
12876
12877         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
12878         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
12879         emit_library_call_value.
12880         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
12881         * tree.h (ECF_LIBCALL_BLOCK): Removed.
12882         * calls.c (initialize_argument_information, precompute_arguments,
12883         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
12884         (precompute_arguments): Removed flags parameter.
12885         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
12886
12887 2008-05-14  Richard Guenther  <rguenther@suse.de>
12888
12889         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
12890         Make sure to register the store if the use is a PHI_NODE.
12891
12892 2008-05-14  Olivier Hainque  <hainque@adacore.com>
12893
12894         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
12895         memory if the component is to be referenced in BLKmode according
12896         to get_inner_reference.
12897
12898 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
12899
12900         * calls.c (emit_library_call_value_1): Restore code clearing
12901         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
12902
12903 2008-05-14  Olivier Hainque  <hainque@adacore.com>
12904             Nicolas Roche  <roche@adacore.com>
12905
12906         * configure.ac: Add support for a "gcc_subdir" variable in
12907         config-lang.in, to denote a subdirectory where the language/GCC
12908         integration files are to be found.
12909         * configure: Regenerate.
12910
12911 2008-05-14  Ira Rosen  <irar@il.ibm.com>
12912
12913         PR tree-optimization/36098
12914         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
12915         value for the first load in the group in case of a gap.
12916         (vect_build_slp_tree): Check that there are no gaps in loads.
12917
12918 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
12919
12920         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
12921         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
12922         expand_copysign_bit, ): Change call to emit_no_conflict_block to
12923         emit_insn and remove unneeded code to construct extra args.
12924         (emit_no_conflict_block): Removed.
12925         * optabls.h: (emit_no_conflict_block): Removed.
12926         * cse.c (cse_extended_basic_block): Remove search for
12927         REG_NO_CONFLICT note.
12928         * global.c: Removed incorrect comment added in revision 117.
12929         * expr.c (convert_move): Change call to emit_no_conflict_block to
12930         emit_insn.
12931         * recog.c: Change comments so that they do not mention
12932         REG_NO_CONFLICT.
12933         * local_alloc.c (combine_regs): Removed last parameter.
12934         (no_conflict_p): Removed.
12935         (block_alloc): Removed note, no_conflict_combined_regno and set
12936         local vars. Removed all code to process REG_NO_CONFLICT blocks.
12937         (combine_regs): Removed already_dead and code to look for
12938         REG_NO_CONFLICT notes.
12939         * lower_subreg (remove_retval_note): Removed code to look for
12940         REG_NO_CONFLICT block.
12941         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
12942         (resolve_clobber): Remove code to process libcalls that have
12943         REG_NO_CONFLICT notes.
12944         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
12945         case.
12946         * combine.c (can_combine_p, distribute_notes):  Removed
12947         REG_NO_CONFLICT case.
12948         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
12949         to emit_insns.
12950         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
12951         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
12952         Ditto.
12953         * reg-notes.def (NO_CONFLICT): Removed.
12954
12955 2008-05-14  David S. Miller  <davem@davemloft.net>
12956
12957         * config/sparc/sparc.c (sparc_profile_hook): If
12958         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
12959         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
12960         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
12961
12962 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
12963
12964         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
12965
12966 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
12967
12968         PR target/36222
12969         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
12970         and op1 expansion before vector concat to have less live pseudos.
12971
12972 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
12973
12974         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
12975         ix86_expand_vector_set if supported.
12976
12977 2008-05-13  Diego Novillo  <dnovillo@google.com>
12978             Kenneth Zadeck  <zadeck@naturalbridge.com>
12979
12980         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
12981
12982         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
12983         phinodes_print_statistics, init_ssanames, fini_ssanames,
12984         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
12985         release_ssa_name, release_defs, replace_ssa_name_symbol,
12986         ssanames_print_statistics): Move ...
12987         * tree-flow.h: ... here.
12988         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
12989         Use FN instead of cfun.
12990         (make_ssa_name_fn): Rename from make_ssa_name.
12991         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
12992         * tree-flow-inline.h (make_ssa_name): Move from
12993         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
12994         * omp-low.c (expand_omp_parallel):
12995         * tree-flow-inline.h (redirect_edge_var_map_result):
12996         * tree-ssa.c (init_tree_ssa): Add argument FN.
12997         Use it instead of cfun.  Update all users.
12998
12999 2008-05-13  Tom Tromey  <tromey@redhat.com>
13000
13001         PR preprocessor/22168:
13002         * doc/cpp.texi (Top): Update menu.
13003         (Alternatives to Wrapper #ifndef): New node.
13004         (Other Directives): Document deprecation.
13005         (Obsolete Features): Remove menu.
13006         (Assertions): Merge node into Obsolete Features.
13007         (Obsolete once-only headers): Move earlier; rename to Alternatives
13008         to Wrapper #ifndef.
13009         * doc/cppopts.texi: Update.
13010         * c.opt (Wdeprecated): Enable for C and ObjC.
13011         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
13012         (C++ Dialect Options): Move -Wno-deprecated from here to...
13013         (Warning Options): ... here.
13014
13015 2008-05-13  Richard Guenther  <rguenther@suse.de>
13016
13017         PR middle-end/36227
13018         * fold-const.c (fold_sign_changed_comparison): Do not allow
13019         changes in pointer-ness.
13020
13021 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13022
13023         PR target/24713
13024         * config/sh/sh.c (sh_expand_prologue): Don't clear
13025         RTX_FRAME_RELATED_P for push insns.
13026
13027 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
13028
13029         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
13030
13031 2008-05-12  Anatoly Sokolov <aesok@post.ru>
13032
13033         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
13034         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
13035         Use 'machine->is_leaf' instead of 'leaf_func_p'.
13036
13037 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
13038
13039         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
13040         (*vec_concatv4sf_sse): This.
13041         (*sse2_concatv2si): Renamed to ...
13042         (*vec_concatv2si_sse2): This.
13043         (*sse1_concatv2si): Renamed to ...
13044         (*vec_concatv2si_sse): This.
13045         (*vec_concatv2di_rex): Renamed to ...
13046         (*vec_concatv2di_rex64): This.
13047         (*vec_concatv2si_sse4_1): New.
13048         (*vec_concatv2di_rex64_sse4_1): Likewise.
13049
13050 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
13051
13052         PR rtl-optimization/36111
13053         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
13054         that was created for swappable operands.
13055
13056 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
13057
13058         PR ada/36001
13059         * Makefile.in: Substitute GNATMAKE and GNATBIND.
13060         * configure.ac: Add call to ACX_PROG_GNAT.
13061
13062 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
13063
13064         * optc-gen.awk: Fix comment typo.
13065
13066 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
13067
13068         * pretty-print.c (pp_integer_with_precision): Use
13069         HOST_LONG_LONG_FORMAT.
13070
13071 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
13072
13073         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
13074
13075 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
13076
13077         * config/i386/i386.c (bdesc_ptest): Removed.
13078         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
13079         (bdesc_args): Add __builtin_ia32_ptestz128,
13080         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
13081         (ix86_init_mmx_sse_builtins): Updated.
13082         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
13083         (ix86_expand_builtin): Updated.
13084
13085 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
13086
13087         * tree-cfg.c (valid_fixed_convert_types_p): New function.
13088         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
13089
13090 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
13091
13092         * value-prof.c (interesting_stringop_to_profile): Do not
13093         return early for BUILT_IN_MEMPCPY.
13094
13095 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
13096
13097         * calls.c (expand_call): Don't use callgraph to increase
13098         preferred_stack_boundary.
13099
13100         * cgraph.h (cgraph_rtl_info): Use unsigned on
13101         preferred_incoming_stack_boundary.
13102
13103         * final.c (rest_of_clean_state): Use unsigned on
13104         preferred_stack_boundary.
13105
13106 2008-05-09  Tom Tromey  <tromey@redhat.com>
13107
13108         PR preprocessor/22231:
13109         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
13110         proceeding.
13111
13112 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
13113
13114         PR tree-optimization/36129
13115         * tree-ssa-ccp.c: Include value-prof.h.
13116         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
13117         built-in function was folded to a constant.
13118         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
13119
13120 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
13121             Sebastian Pop  <sebastian.pop@amd.com>
13122
13123         * tree-scalar-evolution.c: Document instantiate_scev.
13124         (instantiate_parameters_1): Renamed instantiate_scev_1.
13125         Don't use the same loop for instantiation_loop and evolution_loop.
13126         (instantiate_scev): New.
13127         (instantiate_parameters): Moved...
13128         (resolve_mixers): Update call to instantiate_scev_1 to pass the
13129         same loop twice.  Maintains the semantics for this function.
13130         * tree-scalar-evolution.h (instantiate_scev): Declare.
13131         (instantiate_parameters): ...here.  Now static inline.
13132         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
13133         instead of resolve_mixers.
13134
13135 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
13136
13137         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
13138
13139 2008-05-09  Tomas Bily  <tbily@suse.cz>
13140
13141         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
13142         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
13143         * tree-ssa-structalias.c (get_constraint_for): Likewise.
13144         * c-common.c (c_common_truthvalue_conversion): Likewise.
13145         * tree-object-size.c (compute_object_offset): Likewise.
13146         * tree-inline.c (estimate_num_insns_1): Likewise.
13147         * varasm.c (const_hash_1, compare_constant, copy_constant)
13148         (compute_reloc_for_constant, output_addressed_constants)
13149         (initializer_constant_valid_p): Likewise.
13150         * c-omp.c (check_omp_for_incr_expr): Likewise.
13151         * gimplify.c (gimplify_expr): Likewise.
13152         * c-typeck.c (c_finish_return): Likewise.
13153         * tree-vectorizer.c (supportable_widening_operation)
13154         (supportable_narrowing_operation): Likewise.
13155         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
13156         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
13157         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
13158         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
13159         (descr_info_loc): Likewise.
13160         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
13161         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
13162         (fold_unary): Likewise.
13163         * builtins.c (get_pointer_alignment): Likewise.
13164         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
13165         (instantiate_parameters_1): Likewise.
13166         * tree.c (expr_align, stabilize_reference): Likewise.
13167         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
13168         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
13169         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
13170         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
13171         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
13172         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
13173         Likewise.
13174         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
13175         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
13176         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
13177         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
13178         (forward_propagate_comparison)
13179         (tree_ssa_forward_propagate_single_use_vars): Likewise.
13180         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
13181         * emit-rtl.c (component_ref_for_mem_expr)
13182         (set_mem_attributes_minus_bitpos): Likewise.
13183         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
13184         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
13185         Likewise.
13186         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
13187         (build_function_call, pointer_diff, build_compound_expr)
13188         (c_finish_return): Likewise.
13189         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
13190         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
13191         Likewise.
13192         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
13193         * expr.c (is_aligning_offset): Likewise.
13194         * tree-ssa-alias.c (is_escape_site): Likewise.
13195         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
13196         (check_all_va_list_escapes): Likewise.
13197         * tree-ssa-loop-ivopts.c (determine_base_object)
13198         (determine_common_wider_type): Likewise.
13199         * dojump.c (do_jump): Likewise.
13200         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
13201         * tree-gimple.c (is_gimple_cast): Likewise.
13202         * fold-const.c (decode_field_reference, )
13203         (fold_sign_changed_comparison, fold_unary, fold_comparison)
13204         (fold_binary): Likewise.
13205         * tree-ssa-alias-warnings.c (find_alias_site_helper)
13206         (already_warned_in_frontend_p): Likewise.
13207         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
13208         * tree.c (really_constant_p, get_unwidened): Likewise.
13209         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
13210         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
13211         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
13212         Likewise.
13213         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
13214         CONVERT_EXPR_P.
13215         (CONVERT_EXPR_P): Define.
13216         (CASE_CONVERT): Define.
13217
13218 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
13219
13220         PR middle-end/36117
13221         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
13222         (delete_unmarked_insns): When deleting a call, call
13223         delete_unreachable_blocks.
13224         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
13225         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
13226
13227 2008-05-08  Richard Guenther  <rguenther@suse.de>
13228
13229         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
13230         (-ftree-salias): Likewise.
13231         (salias-max-implicit-fields): Remove param documentation.
13232         (salias-max-array-elements): Likewise.
13233         * tree-pass.h (pass_create_structure_vars): Remove.
13234         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
13235         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
13236         * tree-ssa-alias.c (create_structure_vars): Remove.
13237         (gate_structure_vars): Likewise.
13238         (pass_create_structure_vars): Likewise.
13239         (gate_build_alias): Likewise.
13240         (pass_build_alias): Adjust to run always and dump the function.
13241         * common.opt (ftree-salias): Hide.
13242         * passes.c (init_optimization_passes): Remove
13243         pass_create_structure_vars, adjust comment.
13244         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
13245         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
13246         * opts.c (decode_options): Do not set flag_tree_salias.
13247         (common_handle_option): Add OPT_ftree_salias to the backward
13248         compatibility section.
13249
13250 2008-05-08  Richard Guenther  <rguenther@suse.de>
13251
13252         * tree-flow-inline.h (var_can_have_subvars): Move ...
13253         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
13254         * tree-flow.h (var_can_have_subvars): Remove.
13255         (push_fields_onto_fieldstack): Remove.
13256         (sort_fieldstack): Likewise.
13257         (struct fieldoff): Move ...
13258         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
13259         alias_set and base_for_components fields.
13260         (sort_fieldstack): Make static.
13261         (push_fields_onto_fieldstack): Likewise.  Remove code that
13262         handles anything but RECORD_TYPEs.  Remove alias_set and
13263         base_for_components handling.
13264         (create_variable_info_for): Adjust.
13265
13266 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
13267
13268         * common.opt (Wframe-larger-than=): Shorten the help message
13269         to one line.
13270         * doc/invoke.texi (Wframe-larger-than=): Add more description.
13271
13272 2008-05-08  Rafael Espindola  <espindola@google.com>
13273
13274         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
13275         trap.
13276         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
13277         trap and that both operands are gimple values.
13278         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
13279         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
13280         is a fp operation.
13281
13282 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
13283
13284         * read-rtl.c (join_c_conditions): Return the first string if the
13285         two strings are equal.
13286
13287 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
13288
13289         * gensupport.h (pred_data): Add a "num_codes" field.
13290         (add_predicate_code): Declare.
13291         * gensupport.c (add_predicate_code): New function.
13292         (std_pred_table): Add an "allows_const_p" field.
13293         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
13294         Remove the (incomplete) list of such codes from the codes field.
13295         (init_predicate_table): Use add_predicate_code.  Add all
13296         RTX_CONST_OBJs if allows_const_p is true.
13297         * genrecog.c (process_define_predicate): Use add_predicate_code.
13298
13299 2008-05-08  David Daney  <ddaney@avtrex.com>
13300             Richard Sandiford  <rsandifo@nildram.co.uk>
13301
13302         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
13303         special case of constant zero operands.
13304         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
13305         old and new values.  Special case constant zero values.
13306         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
13307         fails.
13308         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
13309         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
13310
13311 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
13312
13313         PR target/36090
13314         * simplify-rtx.c (simplify_plus_minus): Create CONST of
13315         similar RTX_CONST_OBJ before CONST_INT.
13316
13317 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
13318
13319         * stmt.c (expand_stack_restore): Change sa mode if needed.
13320
13321 2008-05-08  Richard Guenther  <rguenther@suse.de>
13322
13323         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
13324         return type to bool.
13325         (ix86_sol10_return_in_memory): Likewise.
13326         (ix86_i386elf_return_in_memory): Likewise.
13327         (ix86_i386interix_return_in_memory): Likewise.
13328         * config/i386/i386.c (ix86_return_in_memory): Likewise.
13329         (ix86_sol10_return_in_memory): Likewise.
13330         (ix86_i386elf_return_in_memory): Likewise.
13331         (ix86_i386interix_return_in_memory): Likewise.
13332
13333 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
13334
13335         PR bootstrap/36180
13336         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
13337         fndecl argument.
13338         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
13339         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
13340         declared in front.
13341
13342 2008-05-08  Richard Guenther  <rguenther@suse.de>
13343
13344         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
13345         * tree-data-ref.h (struct dr_alias): Remove subvars field.
13346         (DR_SUBVARS): Remove.
13347         * tree-dfa.c (dump_subvars_for): Remove.
13348         (debug_subvars_for): Likewise.
13349         (dump_variable): Do not dump subvars.
13350         (remove_referenced_var): Do not remove subvars.
13351         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
13352         (lookup_subvars_for_var): Remove.
13353         (get_subvars_for_var): Likewise.
13354         (get_subvars_at): Likewise.
13355         (get_first_overlapping_subvar): Likewise.
13356         (overlap_subvar): Likewise.
13357         * tree-flow.h (subvar_t): Remove.
13358         (struct var_ann_d): Remove subvars field.
13359         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
13360         argument.  Remove special handling of SFTs.
13361         (compute_tag_properties): Likewise.
13362         (set_initial_properties): Likewise.
13363         (compute_call_clobbered): Likewise.
13364         (count_mem_refs): Likewise.
13365         (compute_memory_partitions): Likewise.
13366         (compute_flow_insensitive_aliasing): Likewise.
13367         (setup_pointers_and_addressables): Likewise.
13368         (new_type_alias): Likewise.
13369         (struct used_part): Remove.
13370         (used_portions): Likewise.
13371         (struct used_part_map): Likewise.
13372         (used_part_map_eq): Likewise.
13373         (used_part_map_hash): Likewise.
13374         (free_used_part_map): Likewise.
13375         (up_lookup): Likewise.
13376         (up_insert): Likewise.
13377         (get_or_create_used_part_for): Likewise.
13378         (create_sft): Likewise.
13379         (create_overlap_variables_for): Likewise.
13380         (find_used_portions): Likewise.
13381         (create_structure_vars): Likewise.
13382         * tree.def (STRUCT_FIELD_TAG): Remove.
13383         * tree.h (MTAG_P): Adjust.
13384         (struct tree_memory_tag): Remove base_for_components and
13385         unpartitionable flags.
13386         (struct tree_struct_field_tag): Remove.
13387         (SFT_PARENT_VAR): Likewise.
13388         (SFT_OFFSET): Likewise.
13389         (SFT_SIZE): Likewise.
13390         (SFT_NONADDRESSABLE_P): Likewise.
13391         (SFT_ALIAS_SET): Likewise.
13392         (SFT_UNPARTITIONABLE_P): Likewise.
13393         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
13394         (union tree_node): Remove sft field.
13395         * alias.c (get_alias_set): Remove special handling of SFTs.
13396         * print-tree.c (print_node): Remove handling of SFTs.
13397         * tree-dump.c (dequeue_and_dump): Likewise.
13398         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
13399         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
13400         * tree-predcom.c (set_alias_info): Do not set subvars.
13401         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
13402         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
13403         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
13404         (add_vars_for_offset): Remove.
13405         (add_virtual_operand): Remove special handling of SFTs.
13406         (add_call_clobber_ops): Likewise.
13407         (add_call_read_ops): Likewise.
13408         (get_asm_expr_operands): Likewise.
13409         (get_modify_stmt_operands): Likewise.
13410         (get_expr_operands): Likewise.
13411         (add_to_addressable_set): Likewise.
13412         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
13413         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
13414         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
13415         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
13416         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
13417         (tree_node_structure): Likewise.
13418         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
13419         handling of SFTs.
13420         (find_what_p_points_to): Likewise.
13421
13422 2008-05-08  Sa Liu  <saliu@de.ibm.com>
13423
13424         * config/spu/spu.md: Fixed subti3 pattern.
13425
13426 2008-05-08  Richard Guenther  <rguenther@suse.de>
13427
13428         PR middle-end/36154
13429         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
13430         sure to create a representative for trailing arrays for PTA.
13431
13432 2008-05-08  Richard Guenther  <rguenther@suse.de>
13433
13434         PR middle-end/36172
13435         * fold-const.c (operand_equal_p): Two objects which types
13436         differ in pointerness are not equal.
13437
13438 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
13439
13440         * calls.c (compute_argument_block_size): Add argument tree fndecl.
13441         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
13442         (emit_library_call_value_1): Add new variable fndecl initialized by
13443         NULL_TREE. It should be the decl type of orgfun, but this information
13444         seems not to be available here, so it uses the default calling abi.
13445         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
13446         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
13447         by TARGET_RETURN_IN_MEMORY.
13448         * config/i386/i386-interix.h: Likewise.
13449         * config/i386/i386.h: Likewise.
13450         * config/i386/i386elf.h: Likewise.
13451         * config/i386/ptx4-i.h: Likewise.
13452         * config/i386/sol2-10.h: Likewise.
13453         * config/i386/sysv4.h: Likewise.
13454         * config/i386/vx-common.h: Likewise.
13455         * config/cris/cris.h: Removed #if 0 clause.
13456         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
13457         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
13458         argument.
13459         (ix86_sol10_return_in_memory): Likewise.
13460         (ix86_i386elf_return_in_memory): New.
13461         (ix86_i386interix_return_in_memory): New.
13462         * config/mt/mt-protos.h (mt_return_in_memory): New.
13463         * config/mt/mt.c: Likewise.
13464         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
13465         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
13466         * config/bfin/bfin.h: Likewise.
13467         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
13468         argument.
13469         * config/bfin/bfin.c: Likewise.
13470         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
13471         * config/alpha/unicosmk.h: Likewise.
13472         * config/i386/cygming.h: Likewise.
13473         * config/iq2000/iq2000.h: Likewise.
13474         * config/mips/mips.h: Likewise.
13475         * config/mn10300/mn10300.h: Likewise.
13476         * config/rs6000/rs6000.h: Likewise.
13477         * config/score/score.h: Likewise.
13478         * config/spu/spu.h: Likewise.
13479         * config/v850/v850.h: Likewise.
13480         * defaults.h: Likewise.
13481         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
13482         * expr.c (emit_block_move): Adjust use of
13483         OUTGOING_REG_PARM_STACK_SPACE.
13484         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
13485         OUTGOING_REG_PARM_STACK_SPACE.
13486         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
13487
13488 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
13489
13490         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
13491         on OMP_RETURN for OMP_FOR.
13492
13493         PR debug/35896
13494         * dwarf2out.c (dw_expand_expr, common_check): Removed.
13495         (fortran_common): New function.
13496         (gen_variable_die): Call fortran_common instead of common_check,
13497         adjust for it returning tree instead of rtx.  Formatting.
13498
13499 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
13500
13501         PR rtl/7335
13502         PR rtl/33826
13503         * see.c (see_copy_insn): Copy new pure const attributes for new call.
13504         * c-decl.c (merge_decls): Ditto.
13505         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
13506         to RTL_CONST_OR_PURE_CALL_P.
13507         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
13508         Initialized DECL_LOOPING_CONST_PURE.
13509         (process_call_operands): Set tree_side_effects properly.
13510         * tree.h (TREE_READONLY_DECL_P): Removed.
13511         (DECL_IS_PURE): Renamed to DECL_PURE_P.
13512         (DECL_LOOPING_OR_CONST_P): New macro.
13513         (struct tree_function_decl): Added looping_const_or_pure_p.
13514         (ECF_*) Renumbered.
13515         (ECF_LOOPING_OR_CONST_P): New macro.
13516         * rtlanal.c (pure_const_p): Removed.
13517         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
13518         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
13519         to RTL_CONST_CALL_P.
13520         * ipa-pure-const.c (pure_const_state_e): Added looping field.
13521         (check_decl, check_tree, check_call, scan_function): Initialize
13522         looping.
13523         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
13524         (static_execute): Set looping true for recursive functions.
13525         Undo setting state to IPA_NEITHER for recursive functions.
13526         * cse.c (cse_insn):
13527         * ifcvt.c (noce_can_store_speculate_p): Changed
13528         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
13529         RTL_CONST_OR_PURE_CALL_P.
13530         * dse.c (scan_insn): Ditto.
13531         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
13532         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
13533         RTL_CONST_OR_PURE_CALL_P.
13534         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
13535         pure_call_p to RTL_CONST_CALL_P.
13536         * gimplify.c (gimplify_call_expr): Clear side effects for
13537         non-looping pure and constant calls.
13538         * calls.c (emit_call_1): Set rtl flags from ecf flags.
13539         (flags_from_decl_or_type): Set ecf flags from decl flags.
13540         (initialize_argument_information): Turn off
13541         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
13542         Change const to pure if callee_copies is true rather than just
13543         turning off const.
13544         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
13545         way of marking pure calls.
13546         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
13547         Remove hack that was supposed to fix pr7335 and remove old
13548         way of marking pure calls.
13549         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
13550         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
13551         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
13552         RTL_CONST_OR_PURE_CALL_P.
13553         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
13554         * loop-invariant.c (find_exits, find_invariant_bb): Changed
13555         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
13556         * sched-deps.c (schedule_analyze): Ditto.
13557         * rtl.h (struct rtx_def): Use call field, unchanging field, and
13558         return_val field of calls to represent pure and const function info.
13559         (CONST_OR_PURE_CALL_P): Deleted macro.
13560         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
13561         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
13562         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
13563         TREE_READONLY.
13564         * tree-optimize.c (execute_fixup_cfg): Added test for
13565         ECF_LOOPING_CONST_OR_PURE.
13566         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
13567         DECL_PURE_P.
13568         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
13569         effects for looping pure or const calls.
13570         (verify_gimple_expr): Added verification code.
13571         * config/alpha/alpha.c (alpha_legitimize_address,
13572         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
13573         RTL_CONST_CALL_P.
13574         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
13575         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
13576         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
13577         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
13578         RTL_CONST_OR_PURE_CALL_P.
13579         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
13580         and const calls to be deleted.
13581
13582 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
13583
13584         PR target/35714
13585         * config/i386/mmx.md (mmx_subv2sf3): New expander.
13586         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
13587         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
13588         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13589         to handle nonimmediate operands.
13590         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
13591         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
13592         to handle nonimmediate operands.
13593         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
13594         (mmx_pmulhrwv4hi3): New expander.  Use
13595         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13596         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
13597         (sse2_umulv1siv1di3): New expander.  Use
13598         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13599         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
13600         (mmx_eq<mode>3): New expander.  Use
13601         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13602         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
13603         (mmx_uavgv8qi3): New expander.  Use
13604         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13605         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
13606         (mmx_uavgv4hi3): New expander.  Use
13607         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13608
13609         * config/i386/sse.md
13610         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
13611         to handle nonimmediate operands.
13612         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
13613         to handle nonimmediate operands.
13614         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
13615         to handle nonimmediate operands.
13616         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
13617         to handle nonimmediate operands.
13618         (sse2_unpckhpd_exp): New expander.  Use
13619         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13620         (sse2_unpcklpd_exp): New expander.  Use
13621         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13622         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
13623         to handle nonimmediate operands.
13624         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
13625         to handle nonimmediate operands.
13626         (*sse2_<plusminus_insn><mode>3): Rename from
13627         sse2_<plusminus_insn><mode>3 insn pattern.
13628         (sse2_<plusminus_insn><mode>3): New expander.  Use
13629         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13630         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
13631         (sse2_umulv2siv2di3): New expander.  Use
13632         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13633         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
13634         (sse4_1_mulv2siv2di3): New expander.  Use
13635         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13636         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
13637         (sse2_pmaddwd): New expander.  Use
13638         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13639         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
13640         (sse2_eq<mode>3): New expander.  Use
13641         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13642         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
13643         (sse4_1_eqv2di3): New expander.  Use
13644         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13645         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
13646         (sse2_uavgv16qi3): New expander.  Use
13647         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13648         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
13649         (sse2_uavgv16qi3): New expander.  Use
13650         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13651         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
13652         (sse2_uavgv8hi3): New expander.  Use
13653         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13654         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
13655         (ssse3_pmulhrswv8hi3): New expander.  Use
13656         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13657         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
13658         (ssse3_pmulhrswv4hi3): New expander.  Use
13659         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13660
13661         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
13662         (<sse>_vmmul<mode>3): Ditto.
13663         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
13664         (divv2df3): Ditto.
13665         (ssse3_pmaddubsw128): Use register_operand for operand 1.
13666         (ssse3_pmaddubsw): Ditto.
13667
13668         * config/i386/i386.c (struct_builtin_description)
13669         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
13670         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
13671         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
13672         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
13673         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
13674         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
13675         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
13676         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
13677         (ix86_fixup_binary_operands): Assert that src1
13678         and src2 must have the same mode when swapped.
13679         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
13680         and ix86_binary_operator_ok.  Do not force operands in registers
13681         when optimizing.
13682
13683 2008-05-07  Jan Hubicka  <jh@suse.cz>
13684
13685         * cgraph.c (dump_cgraph_node): Update.
13686         * cgraph.h (cgraph_local_info): Break out inline summary.
13687         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
13688         hook.
13689         * ipa-inline (inline_summary): New accestor function.
13690         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
13691         cgraph_decide_inlining, compute_inline_parameters): Update.
13692         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
13693
13694 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
13695
13696         Cleanup ColdFire scheduling support and add V4 pipeline model.
13697
13698         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
13699         (define_attr cpu): Add cfv4 value.
13700         (define_attr type, define_attr type1): Merge into a single 'type'
13701         attribute.  Update all uses.
13702         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
13703         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
13704         Update all uses.
13705         (define_attr opx_mem, define_attr opy_mem): Remove.
13706         (define_attr op_mem): Clean up, update comment.
13707         (define_attr size): Use specific values instead of general int.
13708         (define_attr guess, define_attr split): Remove.  Update all uses.
13709         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
13710         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
13711         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
13712         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
13713         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
13714         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
13715         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
13716         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
13717         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
13718         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
13719         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
13720         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
13721         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
13722         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
13723         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
13724         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
13725         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
13726         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
13727         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
13728         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
13729         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
13730         Update or set attributes.
13731         (stack_tie): New fake instruction.
13732
13733         * config/m68k/m68k.h (TUNE_CFV4): New macro.
13734         (m68k_sched_attr_size): Update declaration.
13735         (m68k_sched_attr_type2): Remove.
13736         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
13737         Declare new bypass predicates.
13738
13739         * config/m68k/m68k.c (m68k_sched_issue_rate,
13740         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
13741         implementations.
13742         (TARGET_SCHED_ISSUE_RATE,
13743         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
13744         (override_options): Handle scheduling for ColdFire V4 core.
13745         (m68k_expand_prologue): Emit stack_tie.
13746         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
13747         'OP_TYPE_FPN'.  Update all uses.
13748         (sched_guess_p): Remove.
13749         (sched_address_type): Handle symbolic addresses.
13750         (sched_get_operand): New static function.
13751         (sched_operand_type): Merge into sched_attr_op_type.
13752         (sched_attr_op_type): Handle FP registers, handle quick constants,
13753         update.
13754         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
13755         (m68k_sched_attr_size): Update.  Move logic to ...
13756         (sched_get_attr_size_int): New static function.
13757         (sched_get_opxy_mem_type): New static function.
13758         (m68k_sched_attr_op_mem): Update.
13759         (m68k_sched_attr_type2): Remove.
13760         (sched_cfv4_bypass_data): New static variable.
13761         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
13762         (m68k_sched_issue_rate): Implement scheduler hook.
13763         (struct _sched_ib: enabled_p): New field.
13764         (m68k_sched_variable_issue): Update.  Handle V4.
13765         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
13766         sched_dump_class_func_t, sched_dump_split_class,
13767         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
13768         sched_dump_dfa_class, m68k_sched_dump): Remove.
13769         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
13770         hook.
13771         (m68k_sched_init_global): Remove statisctics dumping, introduce
13772         sanity check that all instructions have pipeline reservations.  Handle
13773         ColdFire V4 core.
13774         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
13775         Handle ColdFire V4 core.
13776         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
13777         New static functions.
13778         (m68k_sched_address_bypass_p): New bypass predicate.
13779         (sched_get_indexed_address_scale): New static function.
13780         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
13781
13782         * cf.md: Update comments.
13783         (define_attr type2): Remove.  Use 'type' attribute instead.
13784         Update all uses.
13785         (cf_ib): Rename to cfv123_ib.  Update all uses.
13786         (cf_oep): Rename to cfv123_oep.  Update all uses.
13787         (cf_chr): Rename to cfv123_chr.  Update all uses.
13788         (cf_mem): Rename to cfv123_mem.  Update all uses.
13789         (cf_mac): Move to more appropriate place.
13790         (cfv123_guess): New automaton and cpu_unit.
13791         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
13792         Update uses of 'size' attribute.  Handle before reload scheduling.
13793         (cfv123_guess): New dummy reservation for unhandled instructions.
13794         (cfv4_*): Pipeline description of ColdFire V4 core.
13795         (ignore): New reservation to handle 'ignore' type.
13796
13797 2008-05-07  Ian Lance Taylor  <iant@google.com>
13798
13799         PR middle-end/36013
13800         * gimplify.c (find_single_pointer_decl_1): Don't look through
13801         indirections.
13802         (find_single_pointer_decl): Adjust comments.
13803
13804 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
13805
13806         PR middle-end/36137
13807         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
13808         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
13809
13810         PR middle-end/36106
13811         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
13812         integral type rather than floating point, then VIEW_CONVERT_EXPR
13813         to the floating point type.
13814
13815 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
13816
13817         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
13818         TFmode op0 to register.
13819
13820 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
13821
13822         * c-decl.c (grokdeclarator): Comment typo.
13823
13824 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
13825
13826         * tree-flow.h: Remove prototype for computed_goto_p.
13827         * tree-cfg.c (computed_goto_p): Make static.
13828
13829 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
13830
13831         PR target/35657
13832         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
13833         (contains_aligned_value_p): This.  Handle _Decimal128.
13834         (ix86_function_arg_boundary): Only align _Decimal128 to its
13835         natural boundary and handle it properly.
13836
13837 2008-05-06  Martin Jambor  <mjambor@suse.cz>
13838
13839         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
13840         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
13841         (ipcp_method_set_orig_node): Removed.
13842         (ipcp_cval_get_cvalue_type): Removed.
13843         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
13844         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
13845         (ipcp_cval_set_cvalue_type): Removed.
13846         (ipcp_cval_get_cvalue): Removed.
13847         (ipcp_cval_set_cvalue): Removed.
13848         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
13849         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
13850         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
13851         (ipcp_cval_meet): Renamed to ipa_lattice_meet
13852         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
13853         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
13854         (ipcp_get_ith_lattice): Changed parameters.
13855         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
13856         (ipcp_lattice_from_jfunc): Changed parameters.
13857         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
13858         (ipcp_method_cval_print): Added temporary variable info.
13859         (ipcp_redirect): Removed already unused local variable caller.
13860         (ipcp_redirect): New temporary variable orig_callee_info
13861         (ipcp_redirect): Removed newly unused local variable callee.
13862         (ipcp_redirect): Removed (a bit confusing) local variable type.
13863         (ipcp_insert_stage): Added local variable info.
13864         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
13865         renamed too
13866         (ipcp_formal_create): Removed.
13867         (ipcp_method_cval_set): Removed.
13868         (ipcp_propagate_stage): Renamed lattice variables.
13869         (ipcp_method_cval_set_cvalue_type): Removed.
13870         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
13871         (ipcp_print_all_lattices): Changed printed strings to refer to
13872         lattices rather than cvals.
13873         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
13874         (ipcp_propagate_const): Changed formal parameters.
13875         (build_const_val): Changed formal parameters.
13876         (ipcp_insert_stage): Removed useless variable cvalue
13877         (build_const_val): Changed formal parameters.
13878         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
13879         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
13880         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
13881         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
13882         (ipcp_print_func_profile_counts): Changed string from "method" to
13883         "function"
13884         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
13885         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
13886         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
13887         (ipcp_structures_print): Renamed to ipcp_print_all_structures
13888         (ipcp_profile_print): Renamed to ipcp_print_profile_data
13889         (ipcp_lat_is_const): Changed parameters and made inline.
13890         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
13891         (ipcp_redirect): Renamed to ipcp_need_redirect_p
13892         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
13893         the predicate condition directly
13894         (ipcp_propagate_stage): Added local variable args. Removed local
13895         variable callee.  (Both are mere code simplifications.)
13896         (ipcp_method_dont_insert_const): Renamed to
13897         ipcp_node_not_modifiable_p.
13898         (ipcp_node_not_modifiable_p): Made inline.
13899         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
13900         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
13901         (ipcp_print_all_lattices): Removed variable cvalue
13902         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
13903         Updated comments.
13904
13905 2008-05-06  Olivier Hainque  <hainque@adacore.com>
13906
13907         * tree-sra.c (try_instantiate_multiple_fields): Early return
13908         if field has POINTER_TYPE.
13909
13910 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
13911
13912         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
13913         by using 'q' specifier for instruction.
13914         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
13915
13916 2008-05-06  Anatoly Sokolov <aesok@post.ru>
13917
13918         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
13919         Change mode of zero_extract from QImode to HImode.
13920         (sign bit tests peepholes): (Ditto.).
13921
13922 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
13923
13924         * config/i386/mmx.md: Remove double backslashes from asm templates.
13925         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
13926         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13927         to handle nonimmediate operands.
13928         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
13929         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
13930         to handle nonimmediate operands.
13931         (*mmx_<code>v2sf3_finite): New insn pattern.
13932         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
13933         (mmx_<code>v2sf3): New expander.  Use
13934         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13935         (mmx_<plusminus_insn><mode>3): New expander.  Use
13936         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13937         (*mmx_<plusminus_insn><mode>3): New insn pattern.
13938         (mmx_add<mode>3): Removed.
13939         (mmx_ssadd<mode>3): Ditto.
13940         (mmx_usadd<mode>3): Ditto.
13941         (mmx_sub<mode>3): Ditto.
13942         (mmx_sssub<mode>3): Ditto.
13943         (mmx_ussub<mode>3): Ditto.
13944         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
13945         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
13946         to handle nonimmediate operands.
13947         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
13948         insn pattern.
13949         (mmx_smulv4hi3_highpart): New expander.  Use
13950         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13951         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
13952         insn pattern.
13953         (mmx_umulv4hi3_highpart): New expander.  Use
13954         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13955         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
13956         (mmx_<code>v4hi3): New expander.  Use
13957         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13958         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
13959         (mmx_<code>v8qi3): New expander.  Use
13960         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13961         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
13962         (mmx_<code><mode>3): New expander.  Use
13963         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
13964
13965 2008-05-05  Jan Hubicka  <jh@suse.cz>
13966
13967         PR tree-optimization/36118
13968         * passes.c (pass_init_dump_file): Fix dump header.
13969
13970 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13971
13972         PR middle-end/36141
13973         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
13974         VCE for function decls.
13975
13976 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
13977
13978         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
13979
13980 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
13981
13982         * config/i386/i386.md (sat_plusminus): New.
13983         (plusminus_insn): Likewise.
13984         (plusminus_mnemonic): Likewise.
13985         (addsub): Removed.
13986         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
13987         (*<addsub><mode>3_cc_overflow): Renamed to ...
13988         (*<plusminus_insn><mode>3_cc_overflow): This.
13989         (*<addsub>si3_zext_cc_overflow): Renamed to ...
13990         (*<plusminus_insn>si3_zext_cc_overflow): This.
13991
13992         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
13993         (<plusminus_insn><mode>3): This.
13994         (*<addsub><mode>3): Renamed to ...
13995         (*<plusminus_insn><mode>3): This.
13996         (<sse>_vm<addsub><mode>3): Renamed to ...
13997         (<sse>_vm<plusminus_insn><mode>3): This.
13998         (sse3_h<addsub>v4sf3): Renamed to ...
13999         (sse3_h<plusminus_insn>v4sf3): This.
14000         (sse3_h<addsub>v2df3): Renamed to ...
14001         (sse3_h<plusminus_insn>v2df3): This.
14002         (<plusminus_insn><mode>3): New.
14003         (*<plusminus_insn><mode>3): Likewise.
14004         (sse2_<plusminus_insn><mode>3): Likewise.
14005         (add<mode>): Removed.
14006         (*add<mode>3): Likewise.
14007         (sse2_ssadd<mode>3): Likewise.
14008         (sse2_usadd<mode>3): Likewise.
14009         (sub<mode>3): Likewise.
14010         (*sub<mode>3): Likewise.
14011         (sse2_sssub<mode>3): Likewise.
14012         (sse2_ussub<mode>3): Likewise.
14013
14014 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
14015
14016         * gthr-single.h: Add in required interface elements as per gthr.h.
14017         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
14018         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
14019         Generalize UNUSED macro.
14020         (__gthread_once): Add.
14021         (__gthread_key_create): Add.
14022         (__gthread_key_delete): Add.
14023         (__gthread_getspecific): Add.
14024         (__gthread_setspecific): Add.
14025
14026 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
14027
14028         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
14029         the same size types for the indirect reference on the rhs, then
14030         create a VCE.
14031
14032 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
14033
14034         * config/i386/i386.md
14035         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
14036         one insn template instead of template series.
14037         (*xordi_1_rex64): Ditto.
14038         (*xordi_2_rex64): Ditto.
14039
14040 2008-05-05  Ira Rosen  <irar@il.ibm.com>
14041
14042         PR tree-optimization/36119
14043         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
14044         in case of SLP.
14045
14046 2008-06-04  Jan Hubicka  <jh@suse.cz>
14047
14048         tree-optimization/36100
14049         * tree-pass.h (pass_O0_always_inline): Declare.
14050         * ipa-inline.c (inline_transform): Remove dead code.
14051         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
14052         pass_O0_always_inline): New.
14053         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
14054
14055 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
14056
14057         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
14058         mnemonic in this_param move for TARGET_64BIT.
14059
14060 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
14061
14062         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
14063         (*strmovsi_rex_1): Ditto.
14064         (*strsetsi_1): Ditto.
14065         (*strsetsi_rex_1): Ditto.
14066
14067         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
14068         adddicc expanders using SWI mode iterator.
14069
14070 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
14071
14072         PR target/36121
14073         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
14074         argument handling.
14075
14076 2008-05-04  David S. Miller  <davem@davemloft.net>
14077
14078         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
14079         (sparc*-*-linux*): Use linux.h in tm_file.
14080         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
14081         compiler defaulting to 32-bit.
14082         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
14083         no longer needed.
14084         * config/sparc/linux.h: Remove definitions now obtained
14085         properly from linux.h
14086         * config/sparc/linux64.h: Likewise.
14087         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
14088         don't want this setting for 32-bit builds in a biarch compiler.
14089         * doc/install.texi: Add sparc-linux to list of targets
14090         supporting --enable-targets=all.
14091
14092 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
14093
14094         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
14095
14096 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
14097
14098         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
14099         after V4SI_FTYPE_V8HI.
14100         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
14101         case V4SI_FTYPE_V2DF.
14102
14103 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
14104
14105         * doc/invoke.texi (max-flow-memory-locations): Removed.
14106         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
14107
14108 2008-05-03  Richard Guenther  <rguenther@suse.de>
14109
14110         PR middle-end/34973
14111         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
14112
14113 2008-05-02  David S. Miller  <davem@davemloft.net>
14114
14115         * config.gcc (need_64bit_hwint): Document libcpp dependency.
14116
14117 2008-05-02  Simon Baldwin <simonb@google.com>
14118
14119         PR bootstrap/36108
14120         * c-common.h (warn_array_subscript_range): Removed.
14121         * c-common.c (warn_array_subscript_range): Ditto.
14122         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
14123         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
14124
14125 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
14126
14127         * config/i386/i386.c (ix86_special_builtin_type): New.
14128         (bdesc_special_args): Likewise.
14129         (ix86_expand_special_args_builtin): Likewise.
14130         (ix86_init_mmx_sse_builtins): Updated.
14131         (ix86_expand_builtin): Updated.
14132         (ix86_expand_store_builtin): Removed.
14133         (ix86_expand_unop_builtin): Likewise.
14134
14135         * config/i386/mm3dnow.h (__v2sf): Moved to ...
14136         * config/i386/mmintrin.h (__v2sf): Here.
14137
14138         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
14139         const __v2sf.
14140         (_mm_loadl_pi): Likewise.
14141         (_mm_storeh_pi): Replace __v2si with __v2sf.
14142         (_mm_storel_pi): Likewise.
14143
14144         * doc/extend.texi: Correct __builtin_ia32_loadhps,
14145         __builtin_ia32_loadlps, __builtin_ia32_storehps,
14146         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
14147         __builtin_ia32_loadlpd.
14148
14149 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
14150
14151         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
14152         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
14153         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
14154         (ix86_init_mmx_sse_builtins): Updated.
14155         (ix86_expand_args_builtin): Likewise.
14156         (ix86_expand_builtin): Likewise.
14157         (ix86_expand_unop1_builtin): Renamed to ...
14158         (ix86_expand_unop_vec_merge_builtin): This.
14159
14160 2008-05-01  Jan Hubicka  <jh@suse.cz>
14161
14162         PR bootstrap/36100
14163         * ipa-inline.c (inline_generate_summary): Make static.
14164         (inline_transform): Do not call inlining at -O0; make static.
14165         * passes.c (execute_todo): Add sanity check.
14166         (execute_one_ipa_transform_pass): Execute proper flags.
14167
14168 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
14169
14170         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
14171         (DECL_NONADDRESSABLE_P): Likewise.
14172         * alias.c (record_component_aliases): Fix comment.
14173
14174 2008-05-01  Simon Baldwin <simonb@google.com>
14175
14176         * c-common.h (warn_array_subscript_range): New function.
14177         * c-common.c (warn_array_subscript_range): Ditto.
14178         * tree-vrp.c (check_array_ref): Corrected code to agree with
14179         comment, ignoring only arrays of size 0 or size 1.
14180         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
14181
14182 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14183
14184         * config/i386/i386.c (ix86_builtin_type): Replace
14185         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
14186         (bdesc_args): Updated.
14187         (ix86_init_mmx_sse_builtins): Likewise.
14188         (ix86_expand_args_builtin): Likewise.
14189
14190         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
14191         with __v1di.
14192
14193         * doc/extend.texi: Correct __builtin_ia32_palignr.
14194
14195 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14196
14197         PR target/36095
14198         * config/i386/i386.c (bdesc_crc32): Removed.
14199         (ix86_expand_crc32): Likewise.
14200         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
14201         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
14202         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
14203         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
14204         UINT_FTYPE_UINT_UCHAR.
14205         (bdesc_args): Updated. Add crc32 builtins.
14206         (ix86_init_mmx_sse_builtins): Updated.
14207         (ix86_expand_args_builtin): Updated to support subreg.
14208
14209         * doc/extend.texi: Correct __builtin_ia32_crc32di.
14210
14211 2008-05-01  Jan Hubicka  <jh@suse.cz>
14212
14213         * tree-pass.h (opt_pass): Add IPA_PASS.
14214         (varpool_node, cgraph_node): Forward declare.
14215         (ipa_opt_pass): Define.
14216         (pass_ipa_inline): Turn into ipa_opt_pass.
14217         (pass_apply_inline): Remove.
14218         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
14219         (apply_inline): Turn into ....
14220         (inline_transform): ... this one.
14221         (inline_generate_summary): New function.
14222         (pass_apply_inline): Remove.
14223         * function.h (ipa_opt_pass): Forward declare structure; typedef;
14224         vector.
14225         (struct function): Add ipa_transforms_to_apply.
14226         * passes.c (register_one_dump_file): Work on IPA_PASS.
14227         (init_optimization_passes): Remove pass_inline_parameters and
14228         pass_apply_inline.
14229         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
14230         (execute_one_pass) ... here; apply transforms when possible.
14231         (add_ipa_transform_pass, execute_ipa_summary_asses,
14232         execute_one_ipa_transform_pass): New.
14233         (execute_ipa_pass_list): Update for IPA_PASS type.
14234
14235 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14236
14237         * config/i386/i386.c (ix86_builtin_type): Add
14238         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
14239         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
14240         (bdesc_args): Add SSE4a builtins.
14241         (ix86_init_mmx_sse_builtins): Updated.
14242         (ix86_expand_args_builtin): Likewise.
14243         (ix86_expand_builtin): Likewise.
14244
14245 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
14246
14247         * config/i386/i386.c (ix86_builtin_type): Add
14248         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
14249         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
14250         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
14251         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
14252         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
14253         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
14254         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
14255         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
14256         and DI_FTYPE_DI_DI_INT.
14257         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
14258         (ix86_init_mmx_sse_builtins): Updated.
14259         (ix86_expand_args_builtin): Likewise.
14260         (ix86_expand_builtin): Likewise.
14261         (ix86_expand_binop_imm_builtin): Removed.
14262
14263         * doc/extend.texi: Correct __builtin_ia32_palignr128.
14264
14265 2008-04-30  Richard Guenther  <rguenther@suse.de>
14266
14267         PR tree-optimization/32921
14268         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
14269
14270 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
14271
14272         * config/arm/arm.c (arm_unwind_emit): Use
14273         crtl->all_throwers_are_sibcalls instead of
14274         cfun->all_throwers_are_sibcalls.
14275         (arm_output_fn_unwind): Likewise.
14276         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
14277         instead of cfun->uses_pic_offset_table.
14278         (frv_expand_prologue): Likewise.
14279         (frv_frame_pointer_required): Likewise.
14280         (frv_expand_fdpic_call): Likewise.
14281         (frv_emit_movsi): Likewise.
14282         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
14283         cfun->returns_pcc_struct instead of
14284         current_function_returns_pcc_struct.
14285         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
14286         instead of cfun->calls_eh_return.
14287         (m32c_pushm_popm): Likewise.
14288         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
14289         "extern" declaration.
14290
14291 2008-04-30  Richard Guenther  <rguenther@suse.de>
14292
14293         PR tree-optimization/21636
14294         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
14295         constant address.
14296         (evaluate_stmt): Print the likely value.
14297         (ccp_visit_stmt): Avoid excessive vertical spacing.
14298
14299 2008-04-30  Rafael Espindola  <espindola@google.com>
14300
14301         * builtins.c (fold_call_expr): Return realret.
14302         * tree-ssa-threadedge.c
14303         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
14304         __builtin_object_size.
14305
14306 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
14307
14308         * gcc.c (wrapper_string): New variable.
14309         (insert_wrapper): New function.
14310         (execute): New option -wrapper.
14311         * doc/invoke.texi (Overall Options): New driver option -wrapper.
14312
14313 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
14314
14315         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
14316         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
14317         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
14318         from...
14319         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
14320         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
14321         config/rs6000/e500crtres64gprctr.asm,
14322         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
14323         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
14324         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
14325         config/rs6000/e500crtsav64gprctr.asm,
14326         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
14327         config/rs6000/e500crtsavg64gprctr.asm: New files.
14328         * config/rs6000/t-ppccomm: Add build rules for new files.
14329         (LIB2FUNCS_STATIC_EXTRA): Add new files.
14330         * config/rs6000/t-netbsd: Add build rules for new files.
14331         (LIB2FUNCS_STATIC_EXTRA): New variable.
14332         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
14333         (CRTSAVRES_DEFAULT_SPEC): Likewise.
14334         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
14335
14336 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
14337
14338         * config/i386/i386.c (ix86_builtin_type): Add
14339         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
14340         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
14341         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
14342         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
14343         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
14344         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
14345         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
14346         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
14347         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
14348         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
14349         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
14350         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
14351         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
14352         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
14353         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
14354         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
14355         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
14356         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
14357         V1DI_FTYPE_V2SI_V2SI.
14358         (bdesc_2arg): Moved to ...
14359         (bdesc_args): Here.
14360         (ix86_init_mmx_sse_builtins): Updated.
14361         (ix86_expand_args_builtin): Updated.  Take a pointer
14362         to const struct builtin_description.  Handle comparison
14363         builtin functions.
14364         (ix86_expand_sse_compare): Take a new argument for swapping operands.
14365         (ix86_expand_builtin): Updated.
14366
14367         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
14368         (ssse3_pmaddubsw128): This.
14369         (ssse3_pmaddubswv4hi3): Renamed to ...
14370         (ssse3_pmaddubsw): This.
14371
14372         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
14373         (__builtin_ia32_packssdw128): Likewise.
14374         (__builtin_ia32_packuswb128): Likewise.
14375         (__builtin_ia32_pmaddubsw): Likewise.
14376         (__builtin_ia32_pmaddubsw128): Likewise.
14377
14378 2008-04-30  Richard Guenther  <rguenther@suse.de>
14379
14380         PR tree-optimization/14847
14381         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
14382         (recognize_bits_test): Use it.
14383         (recognize_single_bit_test): Likewise.
14384
14385 2008-04-30  Martin Jambor  <mjambor@suse.cz>
14386
14387         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
14388         instead of setting number of formal parameters to zero.
14389         (ipcp_init_stage): Do not set the number of actual parameters to zero
14390         either.
14391         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
14392         which are called with variable number of arguments.
14393         (ipcp_insert_stage): Explicitely skipping all nodes which are
14394         called with variable number of arguments.
14395         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
14396         number of parameters.
14397
14398         * ipa-prop.h (struct ipa_node_params): Added flag
14399         called_with_var_arguments
14400         (ipa_set_param_count): Added.  Changed sole setter to use it.
14401         (ipa_get_param_count): Added.  All readers of param_count
14402         converted to use it instead.
14403         (ipa_set_called_with_variable_arg): Added.
14404         (ipa_is_called_with_var_arguments): Added.
14405         (ipa_get_ith_param): Added.  All readers of param_decls converted
14406         to use it instead.
14407         (ipa_set_cs_argument_count): Added, sole writer to argument_count
14408         changed to use it.
14409         (ipa_get_cs_argument_count): Added, all readers of argument_count
14410         changed to cal it.
14411         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
14412         to use it.
14413
14414         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
14415         (struct ipcp_lattice): Renamed cval_type to type
14416         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
14417
14418         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
14419         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
14420         (ipcp_insert_stage): Changed the type of variable cvalue to tree
14421         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
14422         (build_const_val): Changed the type of parameter cvalue to tree
14423         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
14424         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
14425
14426         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
14427         constant
14428
14429         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
14430         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
14431         (ipa_add_method): Renamed to ipa_push_func_to_list
14432         (ipa_remove_method): Renamed to ipa_pop_func_from_list
14433         (ipa_callsite_param_count): Removed.
14434         (ipa_callsite_param_count_set): Removed.
14435         (ipa_callsite_param): Removed.
14436         (ipa_callsite_callee): Removed.
14437         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
14438         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
14439         (ipa_method_formal_count): Removed.
14440         (ipa_method_formal_count_set): Removed.
14441         (ipa_method_get_tree): Removed.
14442         (ipa_method_tree_map_create): Removed.
14443         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
14444         (ipa_create_param_decls_array): Creates the array itself
14445         (ipa_create_param_decls_array): Temporary variable info instead of
14446         a few dereferences.
14447         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
14448         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
14449         (get_type): Removed.
14450         (ipa_jf_get_info_type): Removed.
14451         (ipa_node_create): Renamed to ipa_create_node_params
14452         (ipa_free): Renamed to ipa_free_all_node_params
14453         (ipa_nodes_create): Renamed to ipa_create_all_node_params
14454         (ipa_edges_create): Renamed to ipa_create_all_edge_args
14455         (ipa_edges_free): Renamed to ipa_free_all_edge_args
14456         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
14457         (ipa_free_all_node_params): Deallocation to jump_functions moved to
14458         ipa_free_all_edge_args
14459         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
14460         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
14461         (ipa_create_methodlist_node): Removed.
14462         (ipa_methodlist_method): Removed.
14463         (ipa_methodlist_method_set): Removed.
14464         (ipa_methodlist_next_method): Removed.
14465         (ipa_methodlist_next_method_set): Removed.
14466         (ipa_method_is_modified): Removed.
14467         (ipa_method_modify_create): Removed.
14468         (ipa_method_modify_init): Temporary variable info instead of a few
14469         dereferences.
14470         (ipa_detect_param_modifications): Temporary variable info instead of
14471         a few dereferences.
14472         (ipa_compute_jump_functions): Temporary variable info instead of
14473         a few dereferences.
14474         (ipa_method_modify_set): Removed.
14475         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
14476         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
14477         than craph_node as the first parameter.
14478         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
14479         (ipa_method_modify_init): Removed.
14480         (ipa_compute_jump_functions): Added a temp variable instead of
14481         repeatadly dereferencing the cgraph_edge.aux pointer
14482         (ipa_callsite_param_set_type): Removed.
14483         (ipa_compute_jump_functions): i renamed to index and moved to
14484         an inner block
14485         (ipa_callsite_param_set_info_type_formal): Removed.
14486         (ipa_callsite_param_set_info_type): Removed.
14487         (ipa_callsite_param_map_create): Removed.
14488         (ipa_callsite_tree): Removed.
14489         (ipa_callsite_caller): Removed.
14490         (ipa_pop_func_from_list): return_method removed to return_func
14491
14492         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
14493         prefixed all values with IPA_. Changed all users.
14494         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
14495         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
14496         and FORMAL_IPATYPE IPA_PASS_THROUGH.
14497         (union parameter_info): Renamed to jump_func_value.
14498         (union jump_func_value): Renamed value to constant
14499         (struct ipa_jump_func): Renamed info_type to value
14500         (struct ipa_node): Renamed to ipa_node_params
14501         (struct ipa_node_params): Renamed ipa_arg_num to param_count
14502         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
14503         (struct ipa_node_params): Renamed ipa_mod to modified_flags
14504         (struct ipa_edge): Renamed to ipa_edge_args
14505         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
14506         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
14507         (struct ipa_methodlist): Renamed to ipa_func_list
14508         (struct ipa_func_list): method_p renamed to node, next_method
14509         renamed to next
14510         (ipa_methodlist_p): Removed, switched all users to struct pointer
14511         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
14512
14513 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
14514
14515         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
14516         (rs6000_emit_epilogue): Use backchain to restore only when we
14517         have a large frame.  Make use of frame pointer to restore if we
14518         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
14519
14520 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
14521
14522         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
14523         Add mode to zero_extract.
14524         (sign bit tests peepholes): (Ditto.).
14525
14526 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
14527
14528         * config/i386/i386.c (ix86_builtins): Replace Prescott New
14529         Instructions in comments with SSE3.
14530         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
14531         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
14532         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
14533         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
14534         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
14535         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
14536         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
14537         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
14538         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
14539         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
14540         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
14541         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
14542         (bdesc_sse_args): Renamed to ...
14543         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
14544         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
14545         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
14546         IX86_BUILTIN_FABSQ.
14547         (bdesc_1arg): Moved to ...
14548         (bdesc_args): Here.
14549         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
14550         Instructions in comments with SSE3.
14551         (ix86_expand_sse_operands_builtin): Renamed to ...
14552         (ix86_expand_args_builtin): This.  Updated.
14553         (ix86_expand_unop1_builtin): Update comments.
14554         (ix86_expand_builtin): Updated.
14555
14556 2008-04-29  Richard Guenther  <rguenther@suse.de>
14557
14558         PR tree-optimization/36078
14559         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
14560         Update virtual SSA form after cleaning up the CFG.
14561
14562 2008-04-29  Richard Guenther  <rguenther@suse.de>
14563
14564         PR middle-end/15255
14565         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
14566
14567 2008-04-29  Richard Guenther  <rguenther@suse.de>
14568
14569         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
14570         (compute_may_aliases): Do not call finalize_ref_all_pointers.
14571         (compute_flow_insensitive_aliasing): Do not treat
14572         PTR_IS_REF_ALL pointers special.
14573         (get_smt_for): Likewise.
14574         (may_alias_p): Re-structure.
14575         (is_escape_site): A ref-all pointer conversion is not an escape site.
14576         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
14577         PTR_IS_REF_ALL pointers special.
14578         * tree-ssa-structalias.h (struct alias_info): Remove
14579         ref_all_symbol_mem_tag field.
14580         (PTR_IS_REF_ALL): Remove.
14581
14582 2008-04-29  Richard Guenther  <rguenther@suse.de>
14583
14584         PR middle-end/36077
14585         * fold-const.c (extract_muldiv_1): In combining division constants
14586         make sure to never overflow.
14587
14588 2008-04-29  Nick Clifton  <nickc@redhat.com>
14589
14590         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
14591
14592 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14593
14594         PR bootstrap/35169
14595         * optc-gen.awk: Work around HP-UX/IA awk bug.
14596
14597 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
14598
14599         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
14600         2008-04-25 commit.
14601
14602 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
14603
14604         PR target/36073
14605         * config/i386/i386.md
14606         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
14607         Change operand 1 predicate to nonimmediate_operand.
14608
14609 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
14610
14611         PR debug/36060
14612         * dwarf2out.c (struct die_struct): Mark as chain_circular through
14613         die_sub field.
14614         * gengtype.c (walk_type, write_func_for_structure): Handle
14615         chain_circular.
14616         * doc/gty.texi: Document chain_circular.
14617
14618 2008-04-28  Richard Guenther  <rguenther@suse.de>
14619
14620         PR tree-optimization/36066
14621         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
14622         SCEV and loop.
14623
14624 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
14625
14626         PR target/36064
14627         * config/i386/i386.md
14628         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
14629         Use match_scratch instead of match_operand for operands 3 and 4.
14630
14631 2008-04-27  Richard Guenther  <rguenther@suse.de>
14632
14633         PR tree-optimization/18754
14634         PR tree-optimization/34223
14635         * tree-pass.h (pass_complete_unrolli): Declare.
14636         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
14637         loop size before and after unconditionally of UL_NO_GROWTH in effect.
14638         Rewrite loop into loop closed SSA form if it is not already.
14639         (tree_unroll_loops_completely): Re-structure to iterate over
14640         innermost loops with intermediate CFG cleanups.
14641         Unroll outermost loops only if requested or the code does not grow
14642         doing so.
14643         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
14644         loops are available.
14645         (tree_vectorize): Instead do so here.
14646         (tree_complete_unroll): Also unroll outermost loops.
14647         (tree_complete_unroll_inner): New function.
14648         (gate_tree_complete_unroll_inner): Likewise.
14649         (pass_complete_unrolli): New pass.
14650         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
14651         uses outside of the loop.
14652         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
14653         form if it is available.
14654         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
14655         * passes.c (init_optimization_passes): Schedule complete inner
14656         loop unrolling pass before the first CCP pass after final inlining.
14657
14658 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
14659
14660         * targhooks.h (default_emutls_var_fields,
14661         default_emutls_var_init): Declare.
14662         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
14663         * target.h (struct gcc_target): Add struct emutls member.
14664         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
14665         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
14666         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
14667         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
14668         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
14669         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
14670         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
14671         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
14672         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
14673         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
14674         emit debug information.
14675         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
14676         * varasm.c: Include targhooks.h.
14677         (emutls_object_section, emutls_tmpl_section): New.
14678         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
14679         (EMUTLS_SEPARATOR): New.
14680         (prefix_name): New.
14681         (get_emutls_object_name): New.
14682         (default_emutls_var_fields): New, broken out of ...
14683         (get_emutls_object_type): ... here.  Adjust to use target hooks.
14684         (get_emutls_init_templ_addr): Adjust to use target hooks.
14685         (emutls_decl): Adjust to use target hooks.
14686         (emutls_finish): Likewise.
14687         (default_emutls_var_init): New, broken out of ...
14688         (assemble_variable): ... here.  Adjust to use target hooks.
14689         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
14690         SECCAT_EMUTLS_TMPL.
14691         * c-common.c (handle_section_attribute): Prevent overriding
14692         sections for emulated tls with special sections.
14693         * config/i386/i386.c (x86_64_elf_select_section): Add
14694         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
14695         (x86_64_elf_unique_section): Likewise.
14696         * config/vxworks.c: Include tree.h.
14697         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
14698         (vxworks_override_options): Set TLS scheme.
14699         * doc/tm.texi (Emulated TLS): New node.
14700
14701 2008-04-26  Simon Baldwin <simonb@google.com>
14702
14703         PR c/35652
14704         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
14705         with propagated string constants.
14706
14707 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
14708
14709         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
14710         constraint for operand 2 when operand 0 is memory operand.
14711         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
14712         operand 0 is memory operand.
14713         (fix_trunc<mode>_i387_with_temp): Ditto.
14714         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
14715         operand 2 when operand 1 is memory operand.
14716         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
14717         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
14718         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
14719         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
14720         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
14721         operands 2,3 and 4 when operand 1 is memory operand.
14722         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
14723         is memory operand.
14724         (fistdi2_floor_with_temp): Ditto.
14725         (fist<mode>2_floor_with_temp): Ditto.
14726         (fistdi2_ceil_with_temp): Ditto.
14727         (fist<mode>2_ceil_with_temp): Ditto.
14728         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
14729
14730 2008-04-26  David Daney  <ddaney@avtrex.com>
14731
14732         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
14733         unspec_volitile.
14734         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
14735         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
14736         UNSPEC_UPDATE_GOT_VERSION): Renumber.
14737         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
14738         (compare_and_swap_12): New insn.
14739         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
14740         * config/mips/mips.c (mips_force_binary): New function.
14741         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
14742         (mips_expand_compare_and_swap_12): New function.
14743         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
14744
14745 2008-04-25  Jan Hubicka  <jh@suse.cz>
14746
14747         PR testsuite/35843
14748         * cfgexpand.c (pass_expand): Turn into RTL pass.
14749         * passes.c (execute_one_pass): Do pass typechecking after execution.
14750         * tree-pass.h (pass_expand): Turn into RTL pass.
14751
14752         * function.h (struct rtl_data): Move here fields
14753         accesses_prior_frames, calls_eh_return, saves_all_registers,
14754         has_nonlocal_goto, has_asm_statement, is_thunk,
14755         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
14756         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
14757         arg_pointer_save_area_init from struct function; turn into bool.
14758         (struct function): Move
14759         calls_eh_return, saves_all_registers, has_nonlocal_goto,
14760         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
14761         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
14762         tail_call_emit, arg_pointer_save_area_init
14763         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
14764         (current_function_returns_struct, current_function_returns_pcc_struct,
14765         current_function_calls_setjmp, current_function_calls_alloca,
14766         current_function_accesses_prior_frames,
14767         current_function_calls_eh_return, current_function_is_thunk,
14768         current_function_stdarg, current_function_profile,
14769         current_function_limit_stack, current_function_uses_pic_offset_table,
14770         current_function_uses_const_pool, current_function_has_nonlocal_label,
14771         current_function_saves_all_registers,
14772         current_function_has_nonlocal_goto,
14773         current_function_has_asm_statement): Remove accesor macros.
14774         * ra-conflict.c (global_conflicts): Update.
14775         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
14776         (suitable_for_tail_call_opt_p): Update.
14777         * builtins.c (expand_builtin_return_addr): Update.
14778         (expand_builtin_setjmp_setup): Update.
14779         (expand_builtin_nonlocal_goto): Update.
14780         * final.c (final_start_function): Update.
14781         (profile_function): Update.
14782         (leaf_function_p): Update.
14783         (only_leaf_regs_used): Update.
14784         * df-scan.c (df_get_exit_block_use_set): Update.
14785         * dojump.c (clear_pending_stack_adjust): Update.
14786         * tree-stdarg.c (gate_optimize_stdarg): Update.
14787         * gimple-low.c (lower_function_body): Update.
14788         * global.c (compute_regsets): Update.
14789         (global_alloc): Update.
14790         * dwarf2out.c (dwarf2out_begin_prologue): Update.
14791         * expr.c (expand_assignment): Update.
14792         * dse.c (dse_step0): Update.
14793         (dse_step1): Update.
14794         * c-decl.c (store_parm_decls): Update.
14795         * local-alloc.c (combine_regs): Update.
14796         (find_free_reg): Update.
14797         * function.c (assign_parms_augmented_arg_list): Update.
14798         (assign_parm_find_data_types): Update.
14799         (assign_parms): Update.
14800         (allocate_struct_function): Update.
14801         (expand_function_start): Update.
14802         (expand_function_end): Update.
14803         (get_arg_pointer_save_area): Update.
14804         (thread_prologue_and_epilogue_insns): Update.
14805         (rest_of_match_asm_constraints): Update.
14806         * stor-layout.c (variable_size): Update.
14807         * gcse.c (gcse_main): Update.
14808         (bypass_jumps): Update.
14809         * gimplify.c (gimplify_function_tree): Update.
14810         * calls.c (emit_call_1): Update.
14811         (expand_call): Update.
14812         * bt-load.c (compute_defs_uses_and_gen): Update.
14813         * except.c (sjlj_assign_call_site_values): Update.
14814         (sjlj_emit_function_enter): Update.
14815         (can_throw_external): Update.
14816         (set_nothrow_function_flags): Update.
14817         (expand_builtin_unwind_init): Update.
14818         (expand_eh_return): Update.
14819         (convert_to_eh_region_ranges): Update.
14820         (output_function_exception_table): Update.
14821         * emit-rtl.c (gen_tmp_stack_mem): Update.
14822         * cfgexpand.c (expand_used_vars): Update.
14823         (tree_expand_cfg): Update.
14824         * cfgcleanup.c (rest_of_handle_jump): Update.
14825         * explow.c (allocate_dynamic_stack_space): Update.
14826         * varasm.c (assemble_start_function): Update.
14827         (force_const_mem): Update.
14828         (mark_constant_pool): Update.
14829         * tree-optimize.c (tree_rest_of_compilation): Update.
14830         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
14831         * tree-cfg.c (notice_special_calls): Update.
14832         (is_ctrl_altering_stmt): Update.
14833         (tree_can_make_abnormal_goto): Update.
14834         (tree_purge_dead_abnormal_call_edges): Update.
14835         * config/alpha/predicates.md: Update.
14836         * config/alpha/alpha.c (alpha_sa_mask): Update.
14837         (alpha_sa_size): Update.
14838         (alpha_does_function_need_gp): Update.
14839         (alpha_expand_prologue): Update.
14840         (alpha_start_function): Update.
14841         (alpha_output_function_end_prologue): Update.
14842         (alpha_expand_epilogue): Update.
14843         * config/frv/frv.c (frv_stack_info): Update.
14844         (frv_expand_epilogue): Update.
14845         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
14846         (s390_register_info): Update.
14847         (s390_frame_info): Update.
14848         (s390_init_frame_layout): Update.
14849         (s390_can_eliminate): Update.
14850         (save_gprs): Update.
14851         * config/spu/spu.c (spu_split_immediate): Update.
14852         (need_to_save_reg): Update.
14853         (spu_expand_prologue): Update.
14854         (spu_expand_epilogue): Update.
14855         * config/sparc/sparc.md: Update.
14856         * config/sparc/sparc.c (eligible_for_return_delay): Update.
14857         (sparc_tls_got): Update.
14858         (legitimize_pic_address): Update.
14859         (sparc_emit_call_insn): Update.
14860         (sparc_expand_prologue): Update.
14861         (output_return): Update.
14862         (print_operand): Update.
14863         (sparc_function_ok_for_sibcall): Update.
14864         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
14865         * config/m32r/m32r.md: Update.
14866         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
14867         (m32r_compute_frame_size): Update.
14868         (m32r_expand_prologue): Update.
14869         (m32r_expand_epilogue): Update.
14870         (m32r_legitimize_pic_address): Update.
14871         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
14872         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
14873         * config/i386/i386.c (ix86_frame_pointer_required): Update.
14874         (gen_push): Update.
14875         (ix86_save_reg): Update.
14876         (ix86_compute_frame_layout): Update.
14877         (ix86_expand_prologue): Update.
14878         (ix86_expand_epilogue): Update.
14879         * config/sh/sh.c (output_stack_adjust): Update.
14880         (calc_live_regs): Update.
14881         (sh5_schedule_saves): Update.
14882         (sh_expand_prologue): Update.
14883         (sh_expand_epilogue): Update.
14884         (sh_setup_incoming_varargs): Update.
14885         (sh_allocate_initial_value): Update.
14886         (sh_get_pr_initial_val): Update.
14887         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
14888         * config/sh/sh.md (label:): Update.
14889         * config/avr/avr.c (out_movhi_mr_r): Update.
14890         * config/crx/crx.h (enum): Update.
14891         * config/xtensa/xtensa.h (along): Update.
14892         * config/stormy16/stormy16.c Update.
14893         (xstormy16_compute_stack_layout): Update.
14894         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
14895         (fr30_expand_prologue): Update.
14896         * config/cris/cris.c (cris_conditional_register_usage): Update.
14897         (cris_reg_saved_in_regsave_area): Update.
14898         (cris_initial_frame_pointer_offset): Update.
14899         (cris_simple_epilogue): Update.
14900         (cris_expand_prologue): Update.
14901         (cris_expand_epilogue): Update.
14902         (cris_expand_pic_call_address): Update.
14903         (cris_asm_output_symbol_ref): Update.
14904         (cris_asm_output_label_ref): Update.
14905         * config/cris/cris.md Update.
14906         * config/iq2000/iq2000.c (compute_frame_size): Update.
14907         (iq2000_expand_epilogue): Update.
14908         * config/mt/mt.h (save_direction): Update.
14909         * config/mn10300/mn10300.c (mn10300_function_value): Update.
14910         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
14911         (ia64_secondary_reload_class): Update.
14912         * config/m68k/m68k.c (m68k_save_reg): Update.
14913         (m68k_expand_prologue): Update.
14914         (m68k_expand_epilogue): Update.
14915         (legitimize_pic_address): Update.
14916         * config/rs6000/rs6000.c (rs6000_got_register): Update.
14917         (first_reg_to_save): Update.
14918         (first_altivec_reg_to_save): Update.
14919         (compute_vrsave_mask): Update.
14920         (compute_save_world_info): Update.
14921         (rs6000_stack_info): Update.
14922         (spe_func_has_64bit_regs_p): Update.
14923         (rs6000_ra_ever_killed): Update.
14924         (rs6000_emit_eh_reg_restore): Update.
14925         (rs6000_emit_allocate_stack): Update.
14926         (rs6000_emit_prologue): Update.
14927         (rs6000_emit_epilogue): Update.
14928         (rs6000_output_function_epilogue): Update.
14929         (output_profile_hook): Update.
14930         (rs6000_elf_declare_function_name): Update.
14931         * config/rs6000/rs6000.h (rs6000_args): Update.
14932         * config/rs6000/rs6000.md: Update.
14933         * config/mcore/mcore.c (mcore_expand_prolog): Update.
14934         * config/arc/arc.c (arc_output_function_epilogue): Update.
14935         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
14936         * config/darwin.c (machopic_function_base_name): Update.
14937         * config/score/score3.c (score3_compute_frame_size): Update.
14938         (rpush): Update.
14939         (rpop): Update.
14940         (score3_epilogue): Update.
14941         * config/score/score7.c (score7_compute_frame_size): Update.
14942         (score7_prologue): Update.
14943         (score7_epilogue): Update.
14944         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
14945         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
14946         * config/arm/arm.c (use_return_insn): Update.
14947         (require_pic_register): Update.
14948         (arm_load_pic_register): Update.
14949         (arm_compute_save_reg0_reg12_mask): Update.
14950         (arm_compute_save_reg_mask): Update.
14951         (thumb1_compute_save_reg_mask): Update.
14952         (output_return_instruction): Update.
14953         (arm_output_function_prologue): Update.
14954         (arm_output_epilogue): Update.
14955         (arm_get_frame_offsets): Update.
14956         (arm_expand_prologue): Update.
14957         (thumb_pushpop): Update.
14958         (thumb_exit): Update.
14959         (thumb1_expand_prologue): Update.
14960         (thumb1_expand_epilogue): Update.
14961         (arm_unwind_emit): Update.
14962         (arm_output_fn_unwind): Update.
14963         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
14964         * config/arm/arm.md: Update.
14965         * config/pa/pa.md: Update.
14966         * config/pa/pa.c (legitimize_pic_address): Update.
14967         (compute_frame_size): Update.
14968         (hppa_expand_prologue): Update.
14969         (hppa_expand_epilogue): Update.
14970         (borx_reg_operand): Update.
14971         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
14972         (HARD_REGNO_RENAME_OK): Update.
14973         * config/mips/mips.c (mips_global_pointer): Update.
14974         (mips_save_reg_p): Update.
14975         (mips_compute_frame_info): Update.
14976         (mips_frame_pointer_required): Update.
14977         (mips_expand_prologue): Update.
14978         (mips_expand_epilogue): Update.
14979         (mips_can_use_return_insn): Update.
14980         (mips_reorg_process_insns): Update.
14981         * config/v850/v850.c (compute_register_save_size): Update.
14982         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
14983         * config/mmix/mmix.c (along): Update.
14984         (mmix_expand_epilogue): Update.
14985         * config/bfin/bfin.c (legitimize_pic_address): Update.
14986         (must_save_p): Update.
14987         (stack_frame_needed_p): Update.
14988         (add_to_reg): Update.
14989         (bfin_expand_prologue): Update.
14990         * stmt.c (expand_asm_operands): Update.
14991         * reload1.c (reload): Update.
14992         (init_elim_table): Update.
14993
14994 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
14995
14996         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
14997
14998 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
14999
15000         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
15001         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
15002         (mov<mode>): Removed.
15003         (*movv4sf_internal): Likewise.
15004         (*movv2df_internal): Likewise.
15005
15006 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
15007
15008         * config.gcc (crx-*-elf): Remove deprecation.
15009
15010 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
15011
15012         * config/i386/cygming-crtend.c (register_frame_ctor): Register
15013         __gcc_deregister_frame with atexit.
15014         (deregister_frame_dtor): Remove.
15015
15016 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
15017             Nathan Sidwell  <nathan@codesourcery.com>
15018
15019         * config/rs6000/rs6000.opt (mspe): Remove Var property.
15020         (misel): Likewise.
15021         * config/rs6000/rs6000.h (rs6000_spe): Declare.
15022         (rs6000_isel): Likewise.
15023         * config/rs6000/rs6000.c (rs6000_spe): New variable.
15024         (rs6000_isel): New variable.
15025         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
15026
15027 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15028
15029         PR c++/35758
15030         * c-common.c (handle_vector_size_attribute): Call
15031         lang_hooks.types.reconstruct_complex_type instead of
15032         reconstruct_complex_type.
15033         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
15034         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
15035         * langhooks.h (struct lang_hooks_for_types): Add
15036         reconstruct_complex_type hook.
15037         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
15038         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
15039
15040 2008-04-24  Richard Guenther  <rguenther@suse.de>
15041
15042         * c-common.h (check_builtin_function_arguments): Declare.
15043         * c-common.c (validate_nargs): New function.
15044         (check_builtin_function_arguments): Likewise.
15045         * c-typeck.c (build_function_call): Call
15046         check_builtin_function_arguments.
15047         * builtins.c (fold_builtin_classify): Remove error reporting code.
15048         (fold_builtin_unordered_cmp): Likewise.
15049         (fold_builtin_1): Likewise.
15050         (fold_builtin_n): Likewise.
15051
15052 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15053
15054         PR tree-optimization/36008
15055         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
15056         the original op1, rather than delta by step.
15057
15058 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
15059             Sebastian Pop  <sebastian.pop@amd.com>
15060
15061         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
15062         eliminate_local_variables_stmt, eliminate_local_variables,
15063         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
15064         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
15065         of code delimited by two edges in the CFG.
15066         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
15067         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
15068         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
15069         the case of parallelisation of reductions.
15070         (expr_invariant_in_region_p): New.
15071
15072         * tree-flow.h (gather_blocks_in_sese_region): Declared.
15073         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
15074
15075 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15076             Richard Guenther  <rguenther@suse.de>
15077
15078         PR tree-optimization/36034
15079         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
15080         incapable of dealing with loads with gaps.
15081
15082 2008-04-24  Rafael Espindola  <espindola@google.com>
15083
15084         * tree-flow.h (vrp_evaluate_conditional): Change signature.
15085         * tree-ssa-propagate.c (fold_predicate_in): Update call to
15086         vrp_evaluate_conditional.
15087         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
15088         (vrp_evaluate_conditional): Split the cond argument.
15089         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
15090         (simplify_stmt_for_jump_threading): Update call to
15091         vrp_evaluate_conditional.
15092
15093 2008-04-24  Ira Rosen  <irar@il.ibm.com>
15094
15095         PR tree-optimization/35982
15096         * tree-vect-analyze.c (vect_check_interleaving): Check that the
15097         interleaved data-refs are of the same type.
15098
15099 2008-04-24  Danny Smith  <dannysmith@users.net>
15100
15101         * c-format.c (check_format_info_main): Use strncmp rather than a
15102         magic prefix to handle multichar length specs.
15103         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
15104         Don't prefix "I64" and "I32" with '\0'.
15105
15106 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
15107
15108         PR target/36015
15109         * config/i386/i386.c (init_cumulative_args): Don't pass anything
15110         in registers for -m32 only if stdarg_p (fntype).
15111
15112 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
15113
15114         PR rtl-optimization/36006
15115         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
15116         temp to op0 in order to avoid invalid rtx sharing.
15117
15118 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
15119
15120         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
15121         check TREE_INVARIANT.
15122         * tree-gimple.c (is_gimple_address): New.
15123         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
15124         * tree-gimple.h (is_gimple_address): New.
15125         * tree.h (decl_address_invariant_p): New.
15126         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
15127         (build_string): Likewise.
15128         (decl_address_invariant_p): New, from is_gimple_invariant_address.
15129         (tree_invariant_p_1): Likewise.
15130         (save_expr): Use it.
15131         (tree_invariant_p): New.
15132         (skip_simple_arithmetic): Use it.
15133         (stabilize_reference_1): Use it.
15134         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
15135         simplify.
15136         (build1_stat): Drop code to compute TREE_INVARIANT.
15137         (build2_stat): Drop code to compute TREE_INVARIANT.
15138         (build3_stat): Drop code to compute TREE_INVARIANT.
15139         (build4_stat): Drop code to compute TREE_INVARIANT.
15140         (build5_stat): Drop code to compute TREE_INVARIANT.
15141         (build7_stat): Drop code to compute TREE_INVARIANT.
15142         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
15143         * tree.h (struct tree_base): Remove invariant_flag.
15144         (TREE_INVARIANT): Remove.
15145         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
15146         (fold_builtin_expect): Check TREE_CONSTANT.
15147         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
15148         * c-tree.h (c_expr_to_decl): Drop third parameter.
15149         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
15150         (build_c_cast): Don't set TREE_INVARIANT.
15151         (pop_init_level): Don't set TREE_INVARIANT.
15152         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
15153         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
15154         TREE_CONSTANT.
15155         (gimplify_init_constructor): Don't set TREE_INVARIANT.
15156         (gimplify_addr_expr): Adjust comment.
15157         * tree-mudflap.c (mf_build_string):
15158         * print-tree.c (print_node): Don't print TREE_INVARIANT.
15159         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
15160         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
15161         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
15162         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
15163         * langhooks.h (struct lang_hooks): Drop third parameter from
15164         expr_to_decl.
15165
15166 2008-04-23  Richard Guenther  <rguenther@suse.de>
15167
15168         PR tree-optimization/27799
15169         PR tree-optimization/32921
15170         PR tree-optimization/32624
15171         * tree-ssa-structalias.c (merge_smts_into): Only merge the
15172         SMTs aliases and the tag itself into the solution.
15173         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
15174         merge the points-to solution back into the SMT aliases.
15175         (may_alias_p): Use alias_set_subset_of instead of
15176         aliases_conflict_p.  A pointer which points to
15177         memory with alias set zero may access any variable.
15178
15179 2008-04-23  Richard Guenther  <rguenther@suse.de>
15180
15181         * alias.c (alias_set_subset_of): Correctly handle asking
15182         if zero is a subset of an alias set with zero child.
15183         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
15184         (compute_flow_insensitive_aliasing): Correctly walk all
15185         pointers.  Do not unnecessarily union sets.
15186
15187 2008-04-23  Richard Guenther  <rguenther@suse.de>
15188
15189         PR middle-end/36021
15190         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
15191
15192 2008-04-22  Tomas Bily  <tbily@suse.cz>
15193
15194         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
15195         unreachable case.
15196         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
15197         NON_LVALUE_EXPR.
15198         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
15199         * tree-ssa-structalias.c (get_constraint_for): Likewise.
15200         * tree-inline.c (estimate_num_insns_1): Likewise.
15201         * varasm.c (const_hash_1, compare_constant, copy_constant)
15202         (compute_reloc_for_constant, output_addressed_constants): Likewise.
15203         * emit-rtl.c (component_ref_for_mem_expr)
15204         (set_mem_attributes_minus_bitpos): Likewise.
15205         * expr.c (highest_pow2_factor, expand_expr_real_1, )
15206         (is_aligning_offset): Likewise.
15207         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
15208         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
15209         * dojump.c (do_jump): Likewise.
15210         * builtins.c (get_pointer_alignment, get_memory_rtx)
15211         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
15212         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
15213
15214 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
15215
15216         PR rtl-optimization/36017
15217         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
15218         expanding the library call.
15219
15220 2008-04-22  Ian Lance Taylor  <iant@google.com>
15221
15222         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
15223         than size_in_bytes.
15224
15225 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
15226
15227         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
15228         of LR/CTR moves for Power6.
15229
15230 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
15231
15232         PR middle-end/36003
15233         * passes.c (init_optimization_passes): Remove
15234         pass_fast_rtl_byte_dce.
15235
15236 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
15237
15238         PR target/29096
15239         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
15240         builtin functions to generate faster code.
15241         (_mm_cvtpu16_ps): Ditto.
15242         (_mm_cvtpi32x2_ps): Ditto.
15243
15244 2008-04-22  Nick Clifton  <nickc@redhat.com>
15245
15246         * common.opt (ftree-loop-distribution): Add Optimization
15247         attribute.
15248
15249         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
15250         (frv_expand_builtin_va_start): Likewise.
15251
15252         * config/arm/arm.c (thumb_find_work_register): Fix location of
15253         argument register count.
15254
15255 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15256
15257         Support scheduling for ColdFire V1 and V3 microarchitecture.
15258         Improve scheduling of multiplication instructions.
15259
15260         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
15261         (mac): New instruction attribute.
15262         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
15263         (m68k_sched_mac): New variable.
15264         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
15265         Handle cfv1 and cfv3.
15266         (max_insn_size): New static variable.
15267         (struct _sched_ib): New type.
15268         (sched_ib): New static variable.
15269         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
15270         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
15271         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
15272         Update.
15273         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
15274         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
15275         new variables.  Update.
15276         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
15277         Add modeling of cfv3 instruction buffer.  Update.
15278         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
15279         * config/m68k/m68k.h (TUNE_CFV3): New macro.
15280         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
15281         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
15282         a particular reservation applies to.
15283         (type2): Reorganize attribute values.  Rename alu to alu_reg,
15284         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
15285         to mul_l and mul_w.
15286         (cf_ib_*): Simplify description of instruction buffer.
15287         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
15288         (cf_mem): Split into cf_mem1 and cf_mem2.
15289         (cf_v2_move_??): Rename to cfv12_alu_??.
15290         (cf_v2_move_l_??): Rename to cfv12_omove_??.
15291         (cf_v2_mul_??): Remove reservations.
15292         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
15293         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
15294         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
15295         appropriate place.
15296         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
15297         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
15298         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
15299         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
15300         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
15301         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
15302         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
15303         expansions of the above reservations for instructions of sizes
15304         1, 2 and 3 words.
15305
15306 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15307
15308         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
15309
15310 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
15311
15312         * coverage.c: Include tree-pass.h.
15313         (coverage_counter_alloc): Print da_file_name to the dump file.
15314
15315 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
15316
15317         * sbitmap.c (sbitmap_range_empty_p): New function.
15318         * sbitmap.h (sbitmap_range_empty_p): New function.
15319         * bitmap.h: Now includes obstack.h.
15320
15321 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
15322             Kenneth Zadeck  <zadeck@naturalbridge.com>
15323
15324         * dbgcnt.def (ra_byte_scan): Added.
15325         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
15326         when the last hit happens for a counter.
15327         * timevar.def (TV_DF_BYTE_LR): New variable.
15328         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
15329         * passes.c (pass_fast_rtl_byte_dce): New pass.
15330         * fwprop.c (update_df): Added mode to call df_ref_create.
15331         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
15332         DF_REF_EXTRACT_OFFSET.
15333         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
15334         DF_BYTE_LR_OUT, df_byte_lr): New macro.
15335         (df_mm): New enum.
15336         (df_ref_extract): Added mode field.
15337         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
15338         DF_REF_EXTRACT_OFFSET.
15339         (DF_REF_EXTRACT_MODE): New macro.
15340         (df_byte_lr_bb_info): New structure.
15341         (df_print_byte_regset, df_compute_accessed_bytes,
15342         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
15343         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
15344         df_byte_lr_simulate_uses,
15345         df_byte_lr_simulate_artificial_refs_at_top,
15346         df_byte_lr_simulate_artificial_refs_at_end,
15347         df_compute_accessed_bytes): New function.
15348         (df_ref_create): Add parameter.
15349         (df_byte_lr_get_bb_info): New inline function.
15350         * df-scan.c (df_ref_record, df_uses_record,
15351         df_ref_create_structure): Added mode parameter.
15352         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
15353         df_defs_record, df_uses_record, df_get_conditional_uses,
15354         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
15355         df_entry_block_defs_collect, df_exit_block_uses_collect):
15356         Added mode parameter to calls to df_ref_record, df_uses_record,
15357         df_ref_create_structure.
15358         (df_ref_equal_p, df_ref_compare): Added test for modes.
15359         (df_ref_create_structure): Added code to set mode.  Renamed
15360         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
15361         DF_REF_EXTRACT_OFFSET.
15362         * df-core.c (df_print_byte_regset): New function.
15363         * df-byte-scan.c: New file.
15364         * df-problems.c (df_rd_transfer_function): Removed unnecessary
15365         calls to BITMAP_FREE.
15366         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
15367         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
15368         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
15369         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
15370         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
15371         df_byte_lr_local_compute, df_byte_lr_init,
15372         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
15373         df_byte_lr_transfer_function, df_byte_lr_free,
15374         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
15375         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
15376         df_byte_lr_simulate_uses,
15377         df_byte_lr_simulate_artificial_refs_at_top,
15378         df_byte_lr_simulate_artificial_refs_at_end): New function.
15379         * dce.c (byte_dce_process_block): New function.
15380         (dce_process_block): au is now passed in rather than computed
15381         locally.  Changed loops that look at artificial defs to not look
15382         for conditional or partial ones, because there never are any.
15383         (fast_dce): Now is able to drive byte_dce_process_block or
15384         dce_process_block depending on the kind of dce being done.
15385         (rest_of_handle_fast_dce): Add parameter to fast_dce.
15386         (rest_of_handle_fast_byte_dce): New function.
15387         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
15388         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
15389
15390 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
15391
15392         PR fortran/35019
15393         * gcc.h: Added fortran options that take arguments to
15394         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
15395         macros.
15396
15397 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
15398
15399         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
15400         scalarization if on the LHS and not a full access.
15401
15402 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15403
15404         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
15405
15406 2008-04-18  Rafael Espindola  <espindola@google.com>
15407
15408         * tree-vrp.c (find_case_label_index): Fix the binary search.
15409         (find_case_label_range): New.
15410         (vrp_visit_switch_stmt): Use find_case_label_range.
15411         (simplify_switch_using_ranges): Use find_case_label_range.
15412
15413 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
15414
15415         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
15416         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
15417
15418 2008-04-18  Tom Tromey  <tromey@redhat.com>
15419
15420         PR libcpp/15500:
15421         * doc/cpp.texi (Implementation-defined behavior): Mention
15422         -finput-charset.
15423
15424 2008-04-18  Ian Lance Taylor  <iant@google.com>
15425
15426         * fold-const.c (pointer_may_wrap_p): New static function.
15427         (fold_comparison): Add another test for pointer overflow.  Use
15428         pointer_may_wrap_p to disable some false positives.
15429
15430 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
15431
15432         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
15433         (fname_as_string): Match updated cpp_interpret_string prototype.
15434         (fix_string_type): Support char16_t* and char32_t*.
15435         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
15436         derivative) nodes.  Register as builtin if C++0x.
15437         (c_parse_error): Support CPP_CHAR{16,32}.
15438         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
15439         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
15440         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
15441         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
15442         CTI_CHAR32_ARRAY_TYPE>: New elements.
15443         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
15444         char32_type_node, signed_char32_type_node, char16_array_type_node,
15445         char32_array_type_node): New defines.
15446         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
15447         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
15448         (lex_string): Support CPP_STRING{16,32}, match updated
15449         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
15450         (lex_charconst): Support CPP_CHAR{16,32}.
15451         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
15452         and CPP_STRING{16,32}.
15453
15454 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
15455
15456         PR bootstrap/35457
15457         * aclocal.m4: Regenerate.
15458         * configure: Regenerate.
15459
15460 2008-04-18  Jan Hubicka  <jh@suse.cz>
15461
15462         * except.c (dw2_size_of_call_site_table,
15463         sjlj_size_of_call_site_table): Use vector API for call_site_record.
15464
15465         * cgraphbuild.c (build_cgraph_edges): Update.
15466         * tree-pass.h: Update comment.
15467         * final.c (leaf_function_p): Update.
15468         (leaf_renumber_regs): Update.
15469         (rest_of_clean_state): Update.
15470         * omp-low.c (expand_omp_parallel): Update.
15471         * ipa-reference.c (analyze_function): Update.
15472         * reorg.c (find_end_label): Update.
15473         (optimize_skip): Update.
15474         (fill_simple_delay_slots): Update.
15475         (fill_simple_delay_slots): Update.
15476         (make_return_insns): Update.
15477         (dbr_schedule): Update.
15478         * gimple-low.c (record_vars_into): Update.
15479         * cfgbuild.c (make_edges): Update.
15480         * function.c (assign_stack_local): Update.
15481         (assign_parm_adjust_stack_rtl): Update.
15482         (locate_and_pad_parm): Update.
15483         (allocate_struct_function): Do not initialize stack_alignment_needed
15484         and preferred_stack_boundary here.
15485         (stack_protect_prologue): Update.
15486         (stack_protect_epilogue): Update.
15487         (expand_function_start): Initialize stack_alignment_needed,
15488         preferred_stack_boundary and max_jumptable_ents.
15489         (expand_function_end): Update.
15490         (free_after_compilation): Do not NULLify epilogue_delay_list.
15491         * function.h (struct rtl_data): Add stack_protect_guard,
15492         stack_alignment_needed,
15493         preferred_stack_boundary, epilogue_delay_list.
15494         (struct function): Remove value_histograms, stack_alignment_needed,
15495         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
15496         last_label_uid,
15497         unexpanded_var_list, stack_protect_guard.
15498         (current_function_epilogue_delay_list): Remove.
15499         * ipa-type-escape.c (analyze_function): Update.
15500         * gimplify.c (pop_gimplify_context): Update comment.
15501         * calls.c (expand_call): Update.
15502         (emit_library_call_value_1): Update.
15503         * except.c (set_nothrow_function_flags): Update.
15504         * cfgexpand.c (get_decl_align_unit): Update.
15505         (create_stack_guard): Update.
15506         (estimated_stack_frame_size): Update.
15507         (expand_used_vars): Update.
15508         (tree_expand_cfg): Free histogram earliers, init expansion variables.
15509         * explow.c (allocate_dynamic_stack_space): Update.
15510         * tree-ssa-live.c (remove_unused_locals): Update.
15511         * varasm.c (mark_constant_pool): Update.
15512         * tree-inline.c (remap_decls): Update.
15513         (initialize_cfun): Update.
15514         (declare_return_variable): Update.
15515         (inline_forbidden_p): Update.
15516         (expand_call_inline): Update.
15517         (declare_inline_vars): Update.
15518         (tree_function_versioning): Update.
15519         * tree-flow.h (value_histograms): New.
15520         (VALUE_HISTOGRAMS): New macro.
15521         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
15522         last_label_uid.
15523         * tree-cfg.c (set_bb_for_stmt): Update.
15524         (replace_by_duplicate_decl): Update.
15525         (move_block_to_fn): Update.
15526         (new_label_mapper): Update.
15527         (dump_function_to_file): Update.
15528         * ipa-struct-reorg.c (build_data_structure): Update.
15529         * cfgrtl.c (print_rtl_with_bb): Update.
15530         * reload1.c (reload): Update.
15531         (reload): Update.
15532         * config/i386/i386.c (setup_incoming_varargs_64,
15533         ix86_compute_frame_layout): Update.
15534         * config/arc/arc.c (arc_output_function_epilogue): Update.
15535
15536 2008-04-18  Marius Strobl <marius@FreeBSD.org>
15537
15538         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
15539         for FreeBSD as well.
15540         * gthr-posix95.h: Likewise.
15541
15542 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
15543
15544         PR rtl-optimization/35838
15545         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
15546         out the byte offset of the first subreg.
15547
15548 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
15549
15550         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
15551         to split_ti instead of three separate calls with single member arrays.
15552         (subti3 splitter): Ditto.
15553         (adddi3 splitter): Ditto with split_di.
15554         (subdi3 splitter): Ditto.
15555         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
15556         two separate calls with single member arrays.  Swap match_dup
15557         operands 1 and 2 to better fit into the array.
15558         (negdi2 splitter): Ditto with split_di.
15559         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
15560         two separate calls with single member arrays.  Swap match_dup operands
15561         6 and 7 to better fit into the array.
15562
15563 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
15564
15565         * config/i386/i386.c (sse_builtin_type): New.
15566         (bdesc_sse_args): Likewise.
15567         (bdesc_sse_3arg): Removed.
15568         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
15569         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
15570         IX86_BUILTIN_ROUNDPS.
15571         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
15572         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
15573         IX86_BUILTIN_ROUNDPS.
15574         (ix86_expand_sse_4_operands_builtin): Removed.
15575         (ix86_expand_sse_operands_builtin): New.
15576         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
15577         and CODE_FOR_sse4_1_roundps.
15578         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
15579         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
15580
15581 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
15582
15583         PR target/35907
15584         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
15585         regs before frame pop when needed.  If use_backchain_to_restore_sp
15586         then load backchain into a temp reg to restore vr and vrsave.  Add
15587         code to restore vr after frame pop if possible.
15588
15589 2008-04-17  Richard Guenther  <rguenther@suse.de>
15590
15591         * tree-vn.c (expressions_equal_p): Do not check type
15592         equality or compatibility before calling operand_equal_p.
15593         * fold-const.c (operand_equal_p): Check equivalence of
15594         integer constants before bailing out due to signedness or
15595         precision differences.
15596         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
15597         spurious differences in type qualification.  Ignore types
15598         for COMPONENT_REFs at all.
15599
15600 2008-04-17  Christian Bruel  <christian.bruel@st.com>
15601
15602         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
15603         msw_skip comparison.
15604
15605 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
15606
15607         PR c/35739
15608         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
15609         reg type.
15610
15611         PR tree-optimization/35899
15612         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
15613         rather than TREE_OPERAND.
15614
15615 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
15616
15617         PR target/35944
15618         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
15619         temporary registers.  Change operand predicate to general_operand.
15620         (remainderxf3): Ditto.
15621
15622 2008-04-16  Richard Guenther  <rguenther@suse.de>
15623
15624         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
15625         * tree-affine.c (aff_combination_expand): Look through some
15626         conversions.
15627
15628 2008-04-15  Doug Kwan  <dougkwan@google.com>
15629
15630         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
15631         for hex printing.
15632         * tree-pretty-print.c (dump_generic_node): Ditto.
15633         * final.c (output_addr_const): Ditto.
15634         * dwarf2out.c (output_cfi): Ditto.
15635         * c-pretty-print.c (pp_c_integer_constant): Ditto.
15636         * print-rtl.c (print_rtx): Ditto.
15637         * print-tree.c (print_node_brief, print_node): Ditto.
15638         * c-common.c (match_case_to_enum_1): Ditto.
15639         * sched-vis.c (print_value): Ditto.
15640         * config/i386/i386.c (print_operand): Cast to long unsigned int
15641         for hex printing.
15642
15643 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
15644         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
15645         MS Windows VirtualProtect function.
15646
15647 2008-04-15  Jan Hubicka  <jh@suse.cz>
15648
15649         * gengtype.c (write_root): Param_is argument is OK.
15650         * expr.c (expand_expr_real_1): Update call of get_exception_*.
15651         * function.h: Include varray.h
15652         (rtl_eh): New stucture based on except.c one.
15653         (call_site_record): New forward declaration and vector type.
15654         * calls.c (emit_call_1): Do not call
15655         note_current_region_may_contain_throw.
15656         * except.c (eh_status): Remove cur_region, try_region since they are
15657         unused.
15658         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
15659         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
15660         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
15661         Remove call_site_data_used, call_site_data_size.
15662         Turn call_site_record into vector in function.h.
15663         (note_current_region_may_contain_throw): Remove.
15664         (get_exception_pointer, get_exception_filter): Do not take struct
15665         function argument; update.
15666         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
15667         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
15668         build_post_landing_pads, dw2_build_landing_pads,
15669         sjlj_assign_call_site_values, sjlj_mark_call_sites,
15670         sjlj_emit_function_enter, sjlj_emit_function_enter,
15671         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
15672         sjlj_build_landing_pads, finish_eh_generation,
15673         remove_exception_handler_label, remove_eh_handler,
15674         maybe_remove_eh_handler, add_reachable_handler,
15675         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
15676         add_action_record, collect_one_action_chain, add_call_site,
15677         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
15678         sjlj_output_call_site_table, output_function_exception_table,
15679         * except.h (note_current_region_may_contain_throw): Remove
15680         (get_exception_pointer, get_exception_filter): Do not take struct
15681         function argument.
15682         * Makefile.in (GTFILES): Put varargs before struct function.
15683
15684 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15685
15686         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
15687         punt for STRING_CST.
15688         (get_constraint_for): Deal with STRING_CST here instead.
15689
15690 2008-04-15  Richard Guenther  <rguenther@suse.de>
15691
15692         * tree-ssa-propagate.c (substitute_and_fold): Substitute
15693         statements in a basic-block with a backward walk.  Do not
15694         substitute into dead statements but instead remove those.
15695
15696 2008-04-15  Richard Guenther  <rguenther@suse.de>
15697
15698         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
15699         to zero, thus disable creation of SFTs.
15700
15701 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
15702
15703         * tree-predcom.c (suitable_reference_p): Return false if the
15704         reference can throw.
15705
15706 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
15707
15708         PR c/35751
15709         * c-decl.c (finish_decl): If extern or static var has variable
15710         size, set TREE_TYPE (decl) to error_mark_node.
15711
15712 2008-04-15  Rafael Espindola  <espindola@google.com>
15713
15714         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
15715         variable arg1.
15716
15717 2008-04-15  Richard Guenther  <rguenther@suse.de>
15718
15719         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
15720         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
15721         (visit_reference_op_load): Do walk vuse-vdef chains on
15722         vn_reference_lookup.
15723         (visit_reference_op_store): But do not here.
15724         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
15725         vn_reference_lookup.
15726         (vn_lookup_with_vuses): But do so here.
15727
15728 2008-04-14  Ian Lance Taylor  <iant@google.com>
15729
15730         * fold-const.c (fold_overflow_warning): Remove assertion.
15731
15732 2008-04-15  Ben Elliston  <bje@au.ibm.com>
15733
15734         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
15735         temp1 local variables.
15736
15737 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
15738
15739         PR target/35661
15740         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
15741         ".text.unlikely" section as executable.
15742
15743 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
15744
15745         * config/ia64/ia64.c (rtx_needs_barrier): Handle
15746         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
15747         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
15748         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
15749         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
15750         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
15751         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
15752
15753 2008-04-14  Ian Lance Taylor  <iant@google.com>
15754
15755         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
15756         * fold-const.c (fold_comparison): If appropriate, test
15757         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
15758         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
15759         reassociating a pointer type.
15760         * doc/invoke.texi (Optimize Options): Document that
15761         -fstrict-overflow applies to pointer wraparound.
15762
15763 2008-04-13  Jan Hubicka  <jh@suse.cz>
15764
15765         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
15766
15767 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
15768
15769         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
15770         we are going to "save the world".
15771
15772 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
15773
15774         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
15775         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
15776         operand 0 constraint, not "=".
15777
15778 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
15779
15780         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
15781
15782 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15783
15784         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
15785         of size of positions_needed * CHAR_BIT.
15786
15787 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
15788
15789         PR middle-end/35897
15790         * dse.c (store_info): Change positions_needed to unsigned
15791         HOST_WIDE_INT.
15792         (lowpart_bitmask): New.
15793         (record_store): Cast to unsigned HOST_WIDE_INT for
15794         positions_needed.  Assert width <= size of positions_needed *
15795         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
15796         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
15797         lowpart_bitmask to set mask.
15798
15799 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
15800
15801         * config/bfin/constraints.md: New file.
15802         * config/bfin/bfin.md: Include it.
15803         (adddi3): Use satisfies_constraint functions instead of the old macros.
15804         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
15805         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
15806         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
15807         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
15808         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
15809         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
15810         EXTRA_CONSTRAINT): Delete.
15811         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
15812         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
15813         of the old macros.
15814         * config/bfin/bfin.c: Include "tm-constrs.h".
15815         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
15816         Use satisfies_constraint functions instead of the old macros.
15817         * doc/md.texi (Blackfin Constraints): Update file name reference.
15818
15819 2008-04-11  Richard Guenther  <rguenther@suse.de>
15820
15821         PR tree-optimization/35869
15822         * tree-vrp.c (execute_vrp): Move switch statement update after
15823         jump threading.  Schedule another cfg cleanup run.
15824
15825 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
15826
15827         PR c/35744
15828         * attribs.c (decl_attributes): Return early on errorneous node.
15829
15830 2008-04-10  Oleg Ryjkov  <olegr@google.com>
15831
15832         * tree.h (struct tree_base): Added a new flag default_def_flag.
15833         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
15834
15835 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
15836
15837         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
15838
15839 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15840
15841         PR target/35768
15842         * pa.md: Define mode iterator P.  Define mode attribute dwc.
15843         (dcacheflush): Update pattern to use iterator P and attribute dwc.
15844         (icacheflush): Likewise.
15845         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
15846         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
15847
15848 2008-04-11  Ben Elliston  <bje@au.ibm.com>
15849
15850         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
15851
15852 2008-04-10  Rafael Espindola  <espindola@google.com>
15853
15854         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
15855         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
15856         (extract_range_from_expr): The same.
15857
15858 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
15859
15860         * config/mips/mips.md (GPR2): New mode iterator.
15861         (seq): Add comment.
15862         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
15863         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
15864         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
15865         Rewrite these to take two modes, the mode of comparison and the
15866         mode of the destination.
15867         * config/mips/mips.c (mips_expand_scc): Instead of having
15868         paradoxical subreg as destination, expand "narrowing" scc if mode
15869         of comparison is SI and target is requested in DI mode.
15870         (mips_emit_int_order_test): Update comment.  Make mode of
15871         comparison match CMP0 rather than TARGET.  When creating inverse
15872         target use mode of TARGET.
15873
15874 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
15875
15876         * gcov-dump.c (tag_summary): Only print summaries for the first
15877         GCOV_COUNTERS_SUMMABLE counters.
15878
15879 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
15880
15881         * config/i386/i386.md (absneg): New code iterator.
15882         (absnegprefix): New code attribute.
15883         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
15884         patterns using absneg code iterator.
15885         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
15886         using absneg code iterator.
15887         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
15888         *neg<mode>2 patterns using absneg code iterator.
15889         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
15890         *negextendsfdf2 patterns using absneg code iterator.
15891         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
15892         *negextendsfxf2 patterns using absneg code iterator.
15893         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
15894         *negextendsfdf2 patterns using absneg code iterator.
15895         * config/i386/sse.md (<code><mode>2): Macroize expander from
15896         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
15897
15898 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
15899
15900         * config/s390/s390.h: Remove the remains of the recent search
15901         & replace action of current_function_outgoing_args_size.
15902
15903 2008-04-10  Ira Rosen  <irar@il.ibm.com>
15904
15905         PR tree-optimization/35821
15906         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
15907         NEW_STMT_LIST is not NULL.
15908
15909 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
15910
15911         PR libstdc++/35597
15912         * toplev.c (process_options): Remove -ffunction-sections debugging
15913         warning.
15914
15915 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
15916
15917         PR middle-end/PR28690
15918         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
15919         than gen_rtx_fmt_ee to perform more canonicalizations.
15920
15921 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15922
15923         PR driver/35665
15924         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
15925
15926 2008-04-09  Richard Guenther  <rguenther@suse.de>
15927
15928         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
15929         (dump_function_to_file): Dump function arguments with types.
15930
15931 2008-04-08  Richard Guenther  <rguenther@suse.de>
15932
15933         * fold-const.c (fold_widened_comparison): Do not allow
15934         sign-changes that change the result.
15935
15936 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
15937
15938         PR target/35839
15939         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
15940         kinds of indirect references.
15941
15942 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
15943
15944         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
15945         GNU Fortran language string.
15946
15947 2008-04-08  Rafael Espindola  <espindola@google.com>
15948
15949         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
15950         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
15951         * tree.h (tree_call_nonnegative_warnv_p): New.
15952
15953 2008-04-08  Jan Hubicka  <jh@suse.cz>
15954
15955         * function.c (free_after_compilation): Clear out regno_reg_rtx
15956         pointer.
15957
15958 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
15959
15960         Revert
15961         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
15962
15963         PR middle-end/PR28690
15964         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
15965         same precedence as REG_POINTER and MEM_POINTER operands.
15966
15967 2008-04-08  Richard Guenther  <rguenther@suse.de>
15968
15969         PR middle-end/35834
15970         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
15971         for adding index to base.
15972
15973 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
15974
15975         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
15976         (MINGW_ENABLE_EXECUTE_STACK): New.
15977         (IN_LIBGCC2): For libgcc include windows.h file for
15978         function declarations.
15979
15980 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
15981
15982         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
15983         and tem2 if tem1 is not a REG or MULT.
15984
15985 2008-04-08  Jan Hubicka  <jh@suse.cz>
15986
15987         * function.h (incomming_args): Break out of struct function.
15988         (function_subsections): Break out of struct function.
15989         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
15990         return_rtx and hard_reg_initial_vals from struct function.
15991         Kill inl_max_label_num.
15992         (current_function_pops_args, current_function_args_info,
15993         current_function_args_size, current_function_args_size,
15994         current_function_pretend_args_size,
15995         current_function_outgoing_args_size,
15996         current_function_internal_arg_pointer, current_function_return_rtx):
15997         Kill compatibility accestor macros.
15998         * builtins.c (expand_builtin_apply_args_1): Update.
15999         (expand_builtin_next_arg): Update.
16000         * df-scan.c (df_get_call_refs): Update.
16001         * dbxout.c (dbxout_function_end): Update.
16002         * dwarf2out.c (dwarf2out_switch_text_section): Update.
16003         (output_line_info): Update.
16004         (secname_for_decl): Update.
16005         (dwarf2out_var_location): Update.
16006         * function.c (free_after_compilation): Update.
16007         (assign_parm_find_stack_rtl): Update.
16008         (assign_parms): Update.
16009         (expand_dummy_function_end): Update.
16010         (expand_function_end): Update.
16011         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
16012         (expand_call): Update.
16013         (emit_library_call_value_1): Update.
16014         (store_one_arg): Update.
16015         * varasm.c (initialize_cold_section_name): Update.
16016         (unlikely_text_section): Update.
16017         (unlikely_text_section_p): Update.
16018         (assemble_start_function): Update.
16019         (assemble_end_function): Update.
16020         (default_section_type_flags): Update.
16021         (switch_to_section): Update.
16022         * integrate.c (set_decl_abstract_flags): Update.
16023         (get_hard_reg_initial_val): Update.
16024         (has_hard_reg_initial_val): Update.
16025         (allocate_initial_values): Update.
16026         * resource.c (init_resource_info): Update.
16027         * config/alpha/alpha.c (NUM_ARGS): Update.
16028         (direct_return): Update.
16029         (alpha_va_start): Update.
16030         (alpha_sa_size): Update.
16031         (alpha_initial_elimination_offset): Update.
16032         (alpha_expand_prologue): Update.
16033         (alpha_start_function): Update.
16034         (alpha_expand_epilogue): Update.
16035         (unicosmk_initial_elimination_offset):
16036         * config/alpha/alpha.md (call expander): Update.
16037         * config/s390/s390.c (s390_register_info): Update.
16038         (s390_register_info): Update.
16039         (s390_frame_info): Update.
16040         (s390_initial_elimination_offset): Update.
16041         (s390_build_builtin_va_list): Update.
16042         (s390_va_start): Update.
16043         * config/spu/spu.c (direct_return): Update.
16044         (spu_expand_prologue): Update.
16045         (spu_initial_elimination_offset): Update.
16046         (spu_build_builtin_va_list): Update.
16047         (spu_va_start): Update.
16048         * config/sparc/sparc.c (sparc_init_modes): Update.
16049         (sparc_compute_frame_size): Update.
16050         (function_value): Update.
16051         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
16052         * config/i386/i386.md (return expander): Update.
16053         * config/i386/i386.c (ix86_va_start): Update.
16054         (ix86_can_use_return_insn_p): Update.
16055         (ix86_compute_frame_layout): Update.
16056         (ix86_expand_epilogue): Update.
16057         * config/sh/sh.c (output_stack_adjust): Update.
16058         (calc_live_regs): Update.
16059         (sh_expand_prologue): Update.
16060         (sh_builtin_saveregs): Update.
16061         (sh_va_start): Update.
16062         (initial_elimination_offset): Update.
16063         (sh_allocate_initial_value): Update.
16064         (sh_function_ok_for_sibcall): Update.
16065         (sh_get_pr_initial_val): Update.
16066         * config/sh/sh.md (return expander): Update.
16067         * config/avr/avr.c (frame_pointer_required_p): UPdate.
16068         * config/crx/crx.c (crx_compute_frame): UPdate.
16069         (crx_initial_elimination_offset): UPdate.
16070         * config/xtensa/xtensa.c (compute_frame_size): Update
16071         (xtensa_builtin_saveregs): Update.
16072         (xtensa_va_start): Update.
16073         (order_regs_for_local_alloc): Update.
16074         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
16075         (xstormy16_expand_builtin_va_start): Update.
16076         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
16077         * config/m68hc11/m68hc11.md (return expanders): Update.
16078         * config/m68hc11/m68hc11.c (expand_prologue): Update.
16079         (expand_epilogue): Update.
16080         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
16081         (cris_simple_epilogue): Update.
16082         (cris_expand_prologue): Update.
16083         (cris_expand_epilogue): Update.
16084         * config/iq2000/iq2000.c (iq2000_va_start): Update.
16085         (compute_frame_size): Update.
16086         * config/mt/mt.c (mt_compute_frame_size): Update.
16087         * config/mn10300/mn10300.c (expand_prologue): Update.
16088         (expand_epilogue): Update.
16089         (initial_offset): Update.
16090         (mn10300_builtin_saveregs):
16091         * config/mn10300/mn10300.md (return expander): Update.
16092         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
16093         (ia64_initial_elimination_offset): Update.
16094         (ia64_initial_elimination_offset): Update.
16095         (ia64_expand_prologue): Update.
16096         * config/m68k/m68k.md (return expander): Update.
16097         * config/rs6000/rs6000.c (rs6000_va_start): Update.
16098         (rs6000_stack_info): Update.
16099         * config/mcore/mcore.c (layout_mcore_frame): Update.
16100         (mcore_expand_prolog): Update.
16101         * config/arc/arc.c (arc_compute_frame_size): Update.
16102         * config/score/score3.c (score3_compute_frame_size): Update.
16103         * config/score/score7.c (score7_compute_frame_size): Update.
16104         * config/arm/arm.c (use_return_insn): Update.
16105         (thumb_find_work_register): Update.
16106         (arm_compute_save_reg_mask): Update.
16107         (arm_output_function_prologue): Update.
16108         (arm_output_epilogue): Update.
16109         (arm_size_return_regs): Update.
16110         (arm_get_frame_offsets): Update.
16111         (arm_expand_prologue): Update.
16112         (thumb_exit): Update.
16113         (thumb_unexpanded_epilogue): Update.
16114         (thumb1_output_function_prologue): Update.
16115         * config/pa/pa.md (return expander): Update.
16116         * config/pa/pa.c (compute_frame_size): Update.
16117         (hppa_builtin_saveregs): Update.
16118         * config/mips/mips.c (mips_va_start): Update.
16119         (mips16_build_function_stub): Update.
16120         (mips_compute_frame_info): Update.
16121         (mips_restore_gp): Update.
16122         (mips_output_function_prologue): Update.
16123         (mips_expand_prologue): Update.
16124         * config/v850/v850.c (compute_frame_size): Update.
16125         (expand_prologue): * config/mmix/mmix.c (along): update.
16126         (mmix_initial_elimination_offset): update.
16127         (mmix_reorg): update.
16128         (mmix_use_simple_return): update.
16129         (mmix_expand_prologue): update.
16130         (mmix_expand_epilogue): Update.
16131         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
16132         (emit_link_insn): Update.
16133
16134 2008-04-08  Anatoly Sokolov <aesok@post.ru>
16135
16136         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
16137         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
16138         instructions.
16139         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
16140         atmega103 device.
16141
16142 2008-04-07  Jan Hubicka  <jh@suse.cz>
16143
16144         * function.h (rtl): Rename to x_rtl.
16145         (crtl): New define.
16146         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
16147         frame_offset, stack_check_probe_note, arg_pointer_save_area,
16148         used_temp_slots avail_temp_slots, temp_slot_level,
16149         nonlocal_goto_handler_labels): Update accesstors.
16150         (rtl): New global variable.
16151         (struct function): Move some fileds to rtl_data.
16152         (get_arg_pointer_save_area): Update prototype.
16153         * builtins.c (expand_builtin_setjmp_receiver): Update call of
16154         get_arg_pointer_save_area.
16155         * expr.c (init_expr): Update
16156         * function.c (get_frame_size): Update
16157         (assign_stack_local): Update
16158         (expand_function_end): Update.
16159         (get_art_pointer_save_area): Update
16160         * function.h
16161         * emit-rtl.c (rtl): Declare.
16162         (regno_reg_rtx): Declare.
16163         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
16164         Update.
16165         (gen_reg_rtx): Update.
16166         * varasm.c (n_deferred_constatns): Update accestor.
16167         (init_varasm_status): Do not allocate varasm_status.
16168         (force_const_mem, get_pool_size, output_constant_pool): Update.
16169         * stmt.c (force_label_rtx): Do not use x_ prefixes.
16170         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
16171         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
16172         * sparc/sparc.h (INIT_EXPANDERS): Update.
16173         * ia64/ia64.h (INIT_EXPANDERS): Update.
16174
16175 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
16176
16177         * reload.c (push_secondary_reload): Add missing break to for loop.
16178
16179 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
16180
16181         PR middle-end/PR28690
16182         * rtlanal.c: Update copyright years.
16183         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
16184         as REG_POINTER and MEM_POINTER operands.
16185         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
16186         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
16187         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
16188         * gcse.c: Update copyright years.
16189         (pre_delete): Call gen_reg_rtx_and_attrs.
16190         (hoist_code): Likewise.
16191         (build_store_vectors): Likewise.
16192         (delete_store): Likewise.
16193         * loop-invariant.c (move_invariant_reg): Likewise.
16194         Update copyright years.
16195
16196 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
16197
16198         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
16199         control string instead of quoted.
16200
16201 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
16202
16203         * doc/rtl.texi: Rewrite of subreg section.
16204
16205 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
16206
16207         PR/35842
16208         * config/i386/i386.c (legitimize_pic_address): Add treating
16209         of dllimport SYM_REF's.
16210         (legitimize_dllimport_symbol): Add prototype.
16211
16212 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
16213
16214         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
16215         reference in constructor with non self-referential type.
16216
16217 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
16218
16219         Removal of Return with Depressed Stack Pointer support
16220         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
16221         (ECF_SP_DEPRESSED): Likewise.
16222         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
16223         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
16224         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16225         (expand_call): Do not test ECF_SP_DEPRESSED.
16226         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16227         * function.c (keep_stack_depressed): Delete.
16228         (handle_epilogue_set): Likewise.
16229         (update_epilogue_consts): Likewise.
16230         (emit_equiv_load): Likewise.
16231         (thread_prologue_and_epilogue_insns): Remove support for Return with
16232         Depressed Stack Pointer.
16233         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
16234
16235 2008-04-06  Richard Guenther  <rguenther@suse.de>
16236
16237         PR tree-optimization/35400
16238         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
16239         information from SSA_NAMEs.
16240
16241 2008-04-06  Anatoly Sokolov <aesok@post.ru>
16242
16243         * config/avr/avr.h (avr_mega_p): Remove declaration.
16244         (AVR_MEGA): Remove macro.
16245         * config/avr/avr.c (avr_mega_p): Remove variable.
16246         (avr_override_options): Remove inicializion of avr_mega_p.
16247         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
16248         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
16249         (avr_jump_mode): (Ditto.).
16250         (avr_output_progmem_section_asm_op): (Ditto.).
16251         (avr_asm_init_sections): (Ditto.).
16252         (avr_asm_init_sections): (Ditto.).
16253         (avr_rtx_costs): (Ditto.).
16254         * config/avr/avr.md: (Ditto.).
16255         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
16256         '__AVR_MEGA__'.
16257
16258 2008-04-06  Richard Guenther  <rguenther@suse.de>
16259
16260         PR tree-optimization/35842
16261         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
16262         is_gimple_invariant_address.
16263
16264 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
16265
16266         * gcc.c (default_compilers): Sync Fortran extensions list with
16267         that in fortran/lang-specs.h.
16268         * doc/invoke.texi: Likewise.
16269         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
16270         * dwarf2out.c (gen_compile_unit_die): Likewise.
16271
16272 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
16273
16274         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
16275
16276 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
16277
16278         PR target/12329
16279         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
16280         attribute is used for nested functions.
16281
16282 2008-04-05  Jan Hubicka  <jh@suse.cz>
16283
16284         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
16285
16286         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
16287         letter argument.
16288         (dump_files): Update.
16289         (enable_rtl_dump_file): Do not accept letter argument.
16290         * tree-pass.h (dump_file_info): Remove letter argument.
16291         * toplev.c (decode_d_option): Update -da handling.
16292         * toplev.h (enable_rtl_dump_file): Update prototype.
16293         * passes.c (register_one_dump_file): Do not accept IPA argument; work
16294         it out based on pass type.
16295         (register_dump_files_1): Likewise.
16296         (init_optimization_passes): Update register_one_dump_file calls.
16297         (execute_one_pass): Sanity check that IPA passes are called at IPA
16298         level and RTL passes at RTL level.
16299         (execute_pass_list): IPA pass can not be after or subpass of
16300         GIMPLE/RTL pass.
16301         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
16302         disallov RTL subpasses of IPA subpasses.
16303
16304 2008-04-05  Ben Elliston  <bje@au.ibm.com>
16305
16306         * tree-cfg.c (need_fake_edge_p): Return false for calls to
16307         builtins that return exactly once and do not throw. Cache call to
16308         call_expr_flags.
16309
16310 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
16311
16312         PR rtl-optimization/34916
16313         PR middle-end/35519
16314         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
16315         between instruction pairs.
16316
16317 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
16318
16319         * doc/invoke.texi: Document -mbitops for SH.
16320         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
16321         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
16322         * config/sh/sh.c (print_operand): Add %t operand code.
16323         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
16324         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
16325         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
16326         (extendqihi2): Likewise.
16327         (movqi_i): Likewise.
16328         (insv): Use bset, bclr and bst instructions for SH2A if possible.
16329         (extv): Use bld instruction for SH2A if possible.
16330         (extzv): Likewise.
16331         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
16332         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
16333         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
16334         (bset.b, bclr.b): Define peepholes.
16335         * config/sh/sh.opt (mbitops): New option.
16336
16337 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
16338
16339         PR target/35620
16340         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
16341         and view convert expression.
16342
16343 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
16344
16345         PR target/35364
16346         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
16347
16348 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
16349
16350         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
16351
16352         * config/i386/cpuid.h (bit_AES): New.
16353         (bit_PCLMUL): Likewise.
16354
16355         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
16356         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
16357         SSE2 if AES or PCLMUL is enabled.
16358         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
16359         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
16360         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
16361         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
16362         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
16363         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
16364         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
16365         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
16366         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
16367         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
16368         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
16369         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
16370         __builtin_ia32_aeskeygenassist128 and
16371         __builtin_ia32_pclmulqdq128.
16372         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
16373         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
16374         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
16375
16376         * config/i386/i386.h (TARGET_AES): New.
16377         (TARGET_PCLMUL): Likewise.
16378         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
16379
16380         * config/i386/i386.md (UNSPEC_AESENC): New.
16381         (UNSPEC_AESENCLAST): Likewise.
16382         (UNSPEC_AESDEC): Likewise.
16383         (UNSPEC_AESDECLAST): Likewise.
16384         (UNSPEC_AESIMC): Likewise.
16385         (UNSPEC_AESKEYGENASSIST): Likewise.
16386         (UNSPEC_PCLMUL): Likewise.
16387
16388         * config/i386/i386.opt (maes): New.
16389         (mpclmul): Likewise.
16390
16391         * config/i386/sse.md (aesenc): New pattern.
16392         (aesenclast): Likewise.
16393         (aesdec): Likewise.
16394         (aesdeclast): Likewise.
16395         (aesimc): Likewise.
16396         (aeskeygenassist): Likewise.
16397         (pclmulqdq): Likewise.
16398
16399         * config/i386/wmmintrin.h: New.
16400
16401         * doc/extend.texi: Document AES and PCLMUL built-in function.
16402
16403         * doc/invoke.texi: Document -maes and -mpclmul.
16404
16405 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
16406
16407         * function.c (free_after_parsing): Replace with
16408         cxx_push_function_context from C++ front-end.
16409         (allocate_struct_function): Don't call langhook.
16410         * langhooks.h (struct lang_hooks_for_functions): Delete.
16411         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
16412         member "function".
16413         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
16414         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
16415         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
16416         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
16417         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
16418         remove LANG_HOOKS_FUNCTION_INITIALIZER.
16419         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
16420
16421         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
16422         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
16423
16424 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
16425
16426         PR c/35440
16427         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
16428         for all types.
16429
16430 2008-04-04  Richard Guenther  <rguenther@suse.de>
16431
16432         PR middle-end/35823
16433         * fold-const.c (optimize_minmax_comparison): Use the correct
16434         type for the constant in the simplified comparison.
16435
16436 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
16437
16438         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
16439         Pass L2 size as "--param l2-cache-size" to the compiler.
16440         (decode_l2_cache): New function to decode L2 cache parameters using
16441         0x8000006 extended cpuid function.
16442         (detect_caches_amd): Determine parameters of L2 cache using
16443         decode_l2_caches function.
16444         (decode_caches_intel): Decode L2 cache parameters.
16445         (detect_caches_intel): Determine L2 cache parameters using
16446         decode_caches_intel and decode_l2_caches functions.
16447
16448 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
16449
16450         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
16451         secondary input reload for subword loads from the constant pool.
16452
16453 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
16454
16455         PR target/35713
16456         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
16457           constants of the appropriate size for runtime calculations.
16458
16459         PR c/35712
16460         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
16461           decimal-float literal constant zero.
16462
16463 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
16464
16465         PR c/35738
16466         * c-parser.c (c_parser_omp_atomic): Call
16467         default_function_array_conversion on the RHS.
16468
16469         PR middle-end/35818
16470         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
16471         call is_variable_sized if decl has incomplete type.
16472
16473 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
16474
16475         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
16476
16477 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
16478
16479         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
16480         iterators.
16481         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
16482         (sgt<u>): Merge sgt and sgtu into new expander.
16483         (sgt, sgtu): Remove expanders.
16484         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
16485         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
16486         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
16487         *sgtu_<mode>_mips16 into new pattern.
16488         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
16489         (sge<u>): Merge sge and sgeu into new expander.
16490         (sge, sgeu): Remove expanders.
16491         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
16492         new pattern.
16493         (*sge_<mode>, second *sge_<mode>): Remove patterns.
16494         (slt<u>): Merge slt and sltu into new expander.
16495         (slt, sltu): Remove expanders.
16496         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
16497         (*slt_<mode>, *sltu_<mode>): Remove patterns.
16498         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
16499         *sltu_<mode>_mips16 into new pattern.
16500         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
16501         (sle<u>): Merge sle and sleu into new expander.
16502         (sle, sleu): Remove expanders.
16503         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
16504         (*sle_<mode>, *sleu_<mode>): Remove patterns.
16505         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
16506         *sleu_<mode>_mips16 into new pattern.
16507         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
16508
16509 2008-04-03  Jan Hubicka  <jh@suse.cz>
16510
16511         PR tree-optimization/35795
16512         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
16513         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
16514         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
16515         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
16516         * score/score3.c (score3_output_mi_thunk): Likewise.
16517         * score/score7.c (score7_output_mi_thunk): Likewise.
16518         * mips/mips.c (mips_output_mi_thunk): Likewise.
16519
16520 2008-04-03  Richard Guenther  <rguenther@suse.de>
16521
16522         * tree-vrp.c (extract_range_from_unary_expr): Handle all
16523         conversions.  Simplify code.
16524
16525 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
16526
16527         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
16528
16529 2008-04-03  Tom Tromey  <tromey@redhat.com>
16530             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16531
16532         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
16533         * config/bfin/t-bfin-linux (generated_files): Add
16534         linux-sysroot-suffix.h.
16535         * doc/install.texi (Prerequisites): Require make 3.80.
16536         * doc/sourcebuild.texi (Front End Directory): Document new
16537         variable.
16538         * Makefile.in (generated_files): New variable.
16539         (ALL_HOST_OBJS): New variable.
16540         ($(ALL_HOST_OBJS)): New target.
16541
16542 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
16543
16544         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
16545         (remap_block): Call id->transform_lang_insert_block instead
16546         of langhook.
16547         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
16548         Set id.transform_lang_insert_block to NULL.
16549         (clone_body): Move to cp/optimize.c
16550         * tree-inline.h (struct copy_body_data): Change
16551         transform_lang_insert_block to function pointer.
16552         (copy_generic_body, copy_decl_no_change): Export.
16553         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
16554         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
16555         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
16556
16557         * c-tree.h (insert_block): Kill.
16558         * c-decl.c (insert_block): Kill.
16559
16560 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
16561
16562         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
16563         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
16564         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
16565         argument.
16566         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
16567         argument, call {push,pop}_function_context from here.
16568         * c-parser.c: Use c_{push,pop}_function_context.
16569
16570         * function.c (push_function_context_to): Move meat ...
16571         (push_function_context): ... here.  Simplify.
16572         * function.c (pop_function_context_from): Move meat ...
16573         (pop_function_context): ... here.  Simplify.
16574         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
16575         leave_nested).
16576         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
16577         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
16578         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
16579         * tree.h (push_function_context_to, pop_function_context_from): Remove.
16580
16581 2008-04-03  Ben Elliston  <bje@au.ibm.com>
16582
16583         * expmed.c (extract_force_align_mem_bit_field): Remove.
16584
16585 2008-04-03  Richard Guenther  <rguenther@suse.de>
16586
16587         PR middle-end/35800
16588         * expr.h (try_casesi): Adjust prototype.
16589         * expr.c (try_casesi): Take fallback label as extra parameter.
16590         Use that for gen_casesi if default_label is NULL.
16591         * stmt.c (expand_case): Pass fallback label to try_casesi,
16592         make sure to fill gaps with a fallback label if default_label
16593         is not present.
16594
16595 2008-04-03  Dominique d'Humieres <dominiq@lps.ens.fr>
16596
16597         PR target/35801
16598         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
16599
16600 2008-04-03  Ben Elliston  <bje@au.ibm.com>
16601
16602         * expmed.c (extract_split_bit_field): Remove if (0) code.
16603         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
16604         (do_ds_constraint): Likewise.
16605
16606 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
16607
16608         * doc/cppopts.texi (-dU): Document.
16609         * c-common.h (flag_dump_macros): Update comment.
16610         * c-opts.c (handle_OPT_d): Handle -dU.
16611         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
16612         dump_queued_macros, cb_used_define, cb_used_undef): New.
16613         (init_pp_output): Handle -dU.
16614         (cb_line_change): Call dump_queued_macros.
16615         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
16616
16617 2008-04-02  Anatoly Sokolov <aesok@post.ru>
16618
16619         * config/avr/predicates.md (io_address_operand): New predicate.
16620         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
16621         * config/avr/avr.c (avr_io_address_p): Remove function.
16622         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
16623         'avr_io_address_p' function.
16624         (out_movhi_r_mr): (Ditto.).
16625         (out_movqi_mr_r): (Ditto.).
16626         (out_movhi_mr_r): (Ditto.).
16627         (avr_address_cost): (Ditto.).
16628
16629 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
16630
16631         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
16632         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
16633         in 32bit mode when XMM registers are available to avoid store
16634         forwarding stalls.
16635         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
16636         corresponding post-reload splitters.
16637
16638 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
16639
16640         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
16641         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
16642         __builtin_ia32_roundss.
16643         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
16644         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
16645         __builtin_ia32_roundss.
16646         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
16647         IX86_BUILTIN_SHUFPD here.
16648
16649 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
16650
16651         * config/i386/i386.md (plogic): New.
16652         (plogicprefix): Likewise.
16653
16654         * config/i386/mmx.md (mmx_<code><mode>3): New.
16655         (mmx_and<mode>3): Removed.
16656         (mmx_ior<mode>3): Likewise.
16657         (mmx_xor<mode>3): Likewise.
16658
16659         * config/i386/sse.md (<code><mode>3): New.
16660         (*<code><mode>3): Likewise.
16661         (*<code><mode>3): Likewise.
16662         (<code><mode>3): Likewise.
16663         (*sse_<code><mode>3): Likewise.
16664         (*sse2_<code><mode>3): Likewise.
16665         (<code>tf3): Likewise.
16666         (*<code>tf3): Likewise.
16667         (and<mode>3): Likewise.
16668         (*and<mode>3): Likewise.
16669         (ior<mode>3): Removed.
16670         (*ior<mode>3): Likewise.
16671         (xor<mode>3): Likewise.
16672         (*xor<mode>3): Likewise.
16673         (*and<mode>3): Likewise.
16674         (*ior<mode>3): Likewise.
16675         (*xor<mode>3): Likewise.
16676         (and<mode>3): Likewise.
16677         (*sse_and<mode>3): Likewise.
16678         (*sse2_and<mode>3): Likewise.
16679         (andtf3): Likewise.
16680         (*andtf3): Likewise.
16681         (ior<mode>3): Likewise.
16682         (*sse_ior<mode>3): Likewise.
16683         (*sse2_ior<mode>3): Likewise.
16684         (iortf3): Likewise.
16685         (*iortf3): Likewise.
16686         (xor<mode>3): Likewise.
16687         (*sse_xor<mode>3): Likewise.
16688         (*sse2_xor<mode>3): Likewise.
16689         (xortf3): Likewise.
16690         (*xortf3): Likewise.
16691
16692 2008-04-02  Richard Guenther  <rguenther@suse.de>
16693
16694         PR tree-optimization/14495
16695         PR tree-optimization/34793
16696         * tree-vrp.c (struct switch_update): New structure.
16697         (to_remove_edges, to_update_switch_stmts): New VECs.
16698         (simplify_switch_using_ranges): New function.  Remove not taken
16699         case labels and edges.
16700         (simplify_stmt_using_ranges): Call it.
16701         (identify_jump_threads): Mark edges we have queued for removal
16702         so we don't thread them.
16703         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
16704         case label vector.
16705         * tree-cfg.c (group_case_labels): Deal with missing default label.
16706         (tree_verify_flow_info): Allow missing default label.
16707         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
16708         (emit_case_nodes): Likewise.
16709         (expand_case): Do not rely on the default label to be present.
16710         * expr.c (try_casesi): Deal with NULL default_label.
16711         (do_tablejump): Likewise.
16712
16713 2008-04-02  Richard Guenther  <rguenther@suse.de>
16714
16715         PR tree-optimization/14495
16716         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
16717         SWITCH_EXPR here ...
16718         (vrp_visit_switch_stmt): ... but here (new function).
16719         (find_case_label_index): New helper function.
16720         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
16721
16722 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16723
16724         * fwprop.c: Fix ISO-C99ism.
16725
16726 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16727
16728         PR bootstrap/35752
16729         * Makefile.in (objdir): Set it here.
16730         * configure.ac: Not here.  Find dynamic linker characteristics.
16731         * exec-tool.in: Use them.
16732         * aclocal.m4: Regenerate.
16733         * configure: Regenerate.
16734
16735 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16736
16737         * expr.c (expand_var): Delete it.
16738         * expr.h (expand_var): Delete prototype.
16739         * function.c (expand_function_start): Use expand_decl instead.
16740         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
16741         langhook.
16742
16743 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
16744
16745         PR rtl-optimization/35542
16746         * fwprop.c (forward_propagate_and_simplify): Replace
16747         loc_reg_mentioned_in_p with reg_mentioned_p.
16748
16749 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
16750
16751         PR rtl-optimization/35281
16752         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
16753         (propagate_rtx_1): Handle PR_HANDLE_MEM.
16754         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
16755         (varying_mem_p): Move above propagate_rtx.
16756         (all_uses_available_at): Do not check MEMs.
16757
16758 2008-04-02  Rafael Espindola  <espindola@google.com>
16759
16760         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
16761         (register_edge_assert_for_2): Split the cond argument.
16762         (register_edge_assert_for_1): Adjust for the change in
16763         register_edge_assert_for_2.
16764         (register_edge_assert_for): Split the cond argument.
16765         (find_switch_asserts): Adjust for the change in
16766         register_edge_assert_for.
16767
16768 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
16769
16770         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
16771         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
16772         offsets for 64-bit mingw.
16773         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
16774         abi for x86_64-pc-mingw.
16775
16776 2008-04-02  Richard Guenther  <rguenther@suse.de>
16777
16778         * tree-vrp.c (extract_range_from_assert): Make sure to not
16779         produce range min/max with TREE_OVERFOW set.
16780         If merging a anti-range and a range keep the anti-range if
16781         the range covers all values of the type.
16782         (register_edge_assert_for_2): Only allow sign-changing
16783         conversions in detecting canonical range checks.  Also
16784         register an assert for the unsigned name if useful.
16785
16786         PR tree-optimization/35787
16787         * tree-vrp.c (vrp_val_max): New function.
16788         (vrp_val_min): Likewise.
16789         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
16790         (vrp_val_is_min): Likewise.
16791         (supports_overflow_infinity): Use vrp_val_{min,max}.
16792         (negative_overflow_infinity): Likewise.
16793         (positive_overflow_infinity): Likewise.
16794         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
16795         (is_positive_overflow_infinity): Likewise.
16796         (is_overflow_infinity): Likewise.
16797         (avoid_overflow_infinity): Use vrp_val_{min,max} and
16798         vrp_val_is_{min,max}.
16799         (set_and_canonicalize_value_range): Canonicalize anti-ranges
16800         to ranges if possible.  Avoid empty ranges.
16801
16802 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16803
16804         PR middle-end/35705
16805         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
16806         the expression is a function address.
16807
16808 2008-04-01  George Helffrich  <george@gcc.gnu.org>
16809
16810         PR fortran/35154, fortran/23057
16811         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
16812         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
16813         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
16814         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
16815         in common.
16816         (dbxout_syms): Check for COMMON-based symbol and wrap in
16817         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
16818         in bracket for efficiency.
16819
16820         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
16821         using DW_TAG_common_block + member offset.
16822         (add_pubname_string): New function.
16823         (dw_expand_expr): New function to find block name and offset for
16824         COMMON var.
16825         (common_check): New function to check whether symbol in Fortran COMMON.
16826         (gen_variable_die): If COMMON, use DW_TAG_common_block.
16827
16828 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
16829
16830         PR c/35436
16831         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
16832
16833 2008-04-02  Ben Elliston  <bje@au.ibm.com>
16834
16835         * config/v850/v850.md (casesi): Remove if (0) code.
16836         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
16837         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
16838
16839 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
16840
16841         * config/i386/i386.md (rex64suffix): New mode attribute.
16842         (floathi<mode>2): Disable expander for SSE math.
16843         (*floathi<mode>2_1): New insn insn_and_split pattern.
16844         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
16845         corresponding post-reload splitters.
16846         (*floathi<mode>2_i387): New macroized insn pattern.
16847         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
16848         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
16849         insn_and_split pattern.
16850         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
16851         New macroized instruction patterns and corresponding post-reload
16852         splitters.
16853         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
16854         and corresponding post-reload splitters.
16855         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
16856         New macroized instruction patterns.
16857         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
16858         macroized instruction patterns and corresponding post-reload splitters.
16859         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
16860         corresponding post-reload splitters.
16861         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
16862         New macroized instruction patterns.
16863         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
16864         corresponding post-reload splitters.
16865         (*floatsi<mode>2_i387): New macroized instruction patterns.
16866
16867 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
16868
16869         * config/i386/i386.md (smaxmin): New.
16870         (umaxmin): Likewise.
16871         (maxminiprefix): Likewise.
16872         (maxminfprefix): Likewise.
16873         (<code><mode>3): Likewise.
16874         (smin<mode>3): Removed.
16875         (smax<mode>3): Likewise.
16876
16877         * config/i386/mmx.md (mmx_<code>v2sf3): New.
16878         (mmx_<code>v4hi3): Likewise.
16879         (mmx_<code>v8qi3): Likewise.
16880         (mmx_smaxv2sf3): Removed.
16881         (mmx_sminv2sf3): Likewise.
16882         (mmx_umaxv8qi3): Likewise.
16883         (mmx_smaxv4hi3): Likewise.
16884         (mmx_uminv8qi3): Likewise.
16885         (mmx_sminv4hi3): Likewise.
16886
16887         * config/i386/sse.md (<addsub><mode>3): New.
16888         (*<addsub><mode>3): Likewise.
16889         (<sse>_vm<addsub><mode>3): Likewise.
16890         (<maxmin><mode>3): Likewise.
16891         (*<maxmin><mode>3_finite): Likewise.
16892         (*<maxmin><mode>3): Likewise.
16893         (<sse>_vm<maxmin><mode>3): Likewise.
16894         (sse3_h<addsub>v4sf3): Likewise.
16895         (sse3_h<addsub>v2df3): Likewise.
16896         (<maxmin>v16qi3): Likewise.
16897         (*<maxmin>v16qi3): Likewise.
16898         (<maxmin>v8hi3): Likewise.
16899         (*<maxmin>v8hi3): Likewise.
16900         (*sse4_1_<maxmin><mode>3): Likewise.
16901         (*sse4_1_<maxmin><mode>3): Likewise.
16902         (add<mode>3): Removed.
16903         (*add<mode>3): Likewise.
16904         (<sse>_vmadd<mode>3): Likewise.
16905         (sub<mode>3): Likewise.
16906         (*sub<mode>3): Likewise.
16907         (<sse>_vmsub<mode>3): Likewise.
16908         (smin<mode>3): Likewise.
16909         (*smin<mode>3_finite): Likewise.
16910         (*smin<mode>3): Likewise.
16911         (<sse>_vmsmin<mode>3): Likewise.
16912         (smax<mode>3): Likewise.
16913         (*smax<mode>3_finite): Likewise.
16914         (*smax<mode>3): Likewise.
16915         (<sse>_vmsmax<mode>3): Likewise.
16916         (sse3_haddv4sf3): Likewise.
16917         (sse3_haddv2df3): Likewise.
16918         (sse3_hsubv4sf3): Likewise.
16919         (sse3_hsubv2df3): Likewise.
16920         (umaxv16qi3): Likewise.
16921         (*umaxv16qi3): Likewise.
16922         (smaxv8hi3): Likewise.
16923         (*smaxv8hi3): Likewise.
16924         (*sse4_1_smax<mode>3): Likewise.
16925         (*sse4_1_umax<mode>3): Likewise.
16926         (uminv16qi3): Likewise.
16927         (*uminv16qi3): Likewise.
16928         (sminv8hi3): Likewise.
16929         (*sminv8hi3): Likewise.
16930         (*sse4_1_smin<mode>3): Likewise.
16931         (*sse4_1_umin<mode>3): Likewise.
16932
16933 2008-04-01  Rafael Espindola  <espindola@google.com>
16934
16935         * tree-cfg.c (verify_expr): remove in_phi.
16936         (verify_stmt): Don't call walk_tree with verify_expr. Use
16937         is_gimple_min_invariant instead of is_gimple_val.
16938
16939 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
16940
16941         * doc/include/gpl_v3.texi: Update for manpage generation.
16942         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
16943         gpl.texi.
16944         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
16945         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
16946         gpl_v3.texi instead of gpl.texi.
16947         (gpl.pod): New.
16948
16949 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
16950
16951         PR pch/13675
16952         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
16953
16954 2008-04-01  Rafael Espindola  <espindola@google.com>
16955
16956         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
16957         (extract_code_and_val_from_cond): Use
16958         extract_code_and_val_from_cond_with_ops.
16959
16960 2008-04-01  Jan Hubicka  <jh@suse.cz>
16961
16962         * function.c (free_after_compilation): Free epilogue_delay_list.
16963         (prepare_function_start): Assert that previous compilation was freed.
16964
16965 2008-04-01  Jan Hubicka  <jh@suse.cz>
16966             Jim Wilson  <wilson@tuliptree.org>
16967             Andreas Tobler <andreast@gcc.gnu.org>
16968
16969         PR middle-end/35781
16970         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
16971         rtl.emit instead cfun->emit.
16972         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
16973         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
16974
16975 2008-04-01  Ben Elliston  <bje@au.ibm.com>
16976
16977         * doc/c-tree.texi (Function Basics): Fix grammatical error.
16978
16979 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
16980
16981         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
16982         New options
16983         (fprofile-use): Add var flag_profile_use
16984         * coverage.c (coverage_begin_output): Do not open a gcno file for
16985         output only if -ftest-coverage is set.
16986         Do not add getpwd() to gcda file path.
16987         (build_gcov_info): Check the new flag
16988         flag_profile_datafile_relative_path.
16989         (coverage_init): Use profile_data_prefix.
16990         Read profile counter only if flag_profile_use is set.
16991         * opts.c (common_handle_option): New option fprofile-use=,
16992         fprofile-dir=, fprofile-generate=.
16993         * toplev.c (profile_data_prefix): New variable definition.
16994         * toplev.h (profile_data_prefix): New declaration.
16995         * doc/invoke.tex (Option Summary, Optimization Options):
16996         Add new options.
16997
16998 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
16999
17000         * varasm.c (output_constant_pool_1): In LABEL_REF check,
17001         use tmp consistently.
17002
17003         PR target/35695
17004         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
17005         * config/ia64/ia64.c (rtx_needs_barrier): Handle
17006         UNSPEC_FR_RECIP_APPROX_RES.
17007         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
17008
17009 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
17010
17011         PR c/35750
17012         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
17013
17014 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17015
17016         PR middle-end/30186
17017         * fold-const.c (fold_indirect_ref_1): Support accessing non first
17018         element of the vector via a pointer.
17019
17020 2008-03-31  Ian Lance Taylor  <iant@google.com>
17021
17022         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
17023
17024 2008-03-31  Jan Hubicka  <jh@suse.cz>
17025
17026         * builtins.c (expand_builtin_setjmp_receiver): Update call of
17027         get_arg_pointer_save_area.
17028         * expr.c (init_expr): Just clear out rtl.expr.
17029         * function.c (free_after_compilation): Clear out whole RTL structure.
17030         (get_func_frame_size): Merge into ...
17031         (get_frame_size): ... this one.
17032         (assign_stack_local_1): Merge into ...
17033         (assign_stack_local): ... this one.
17034         (expand_function_end): Update call of get_arg_pointer_save_area.
17035         (get_art_pointer_save_area): Remove cfun argument.
17036         * function.h (emit_status): regno_pointer_align does not need length
17037         attribute. Move x_regno_reg_rtx to ...
17038         (regno_reg_rtx): ... new global array.
17039         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
17040         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
17041         apply_args_value, forced_labels, stack_pointer_delta):
17042         Update accestors.
17043         (struct varasm_status): Move here from varasm.c
17044         (struct rtl_data): New. Move here some fields from struct function.
17045         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
17046         frame_offset, stack_check_probe_note, arg_pointer_save_area,
17047         used_temp_slots avail_temp_slots, temp_slot_level,
17048         nonlocal_goto_handler_labels): Update accesstors.
17049         (rtl): New global variable.
17050         (struct function): Move some fileds to rtl_data.
17051         (get_arg_pointer_save_area): Update prototype.
17052         * emit-rtl.c (rtl): Declare.
17053         (regno_reg_rtx): Declare.
17054         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
17055         Update.
17056         (gen_reg_rtx): Update.
17057         (init_virtual_regs): Do not tate emit_status argument.
17058         (init_emit): Do not allocate emit.
17059         * varasm.c (varasm_statuc): Move to function.h.
17060         (n_deferred_constatns): Update accestor.
17061         (init_varasm_status): Do not allocate varasm_status.
17062         (force_const_mem, get_pool_size, output_constant_pool): Update.
17063         * stmt.c (force_label_rtx): Do not use x_ prefixes.
17064         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
17065
17066 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
17067
17068         PR rtl-optimization/35729
17069         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
17070         references.
17071
17072 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
17073
17074         PR target/32000
17075         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
17076         load/store if memory is unaligned.
17077         (*movti_rex64): Likewise.
17078
17079         * config/i386/predicates.md (misaligned_operand): New.
17080
17081 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
17082
17083         PR tree-opt/35431
17084         * tree-ssa-phiopt.c (conditional_replacement): Return early for
17085         complex types.
17086
17087 2008-03-31  Jan Beulich  <jbeulich@novell.com>
17088
17089         * config/ia64/constraints.md: Add 'j' constraint.
17090         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
17091         (movdi_internal): Likewise.
17092
17093 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
17094
17095         PR c/35748
17096         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
17097
17098 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
17099
17100         PR target/35757
17101         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
17102         proper error message for the third argument on blendpd and
17103         blendps.
17104
17105         * config/i386/sse.md (blendbits): New.
17106         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
17107
17108 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
17109
17110         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
17111
17112 2008-03-30  Richard Guenther  <rguenther@suse.de>
17113
17114         PR middle-end/31023
17115         * fold-const.c (fold_sign_changed_comparison): Do leave
17116         conversions to base-types alone.
17117
17118 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17119
17120         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
17121         the link register if one altivec register is be saved.
17122
17123 2008-03-30  Ben Elliston  <bje@au.ibm.com>
17124
17125         * final.c (final_scan_insn): Remove if (0) code.
17126
17127 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
17128
17129         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
17130
17131 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
17132
17133         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
17134         of V4SFmode to ix86_binary_operator_ok.
17135
17136 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
17137
17138         * config/i386/i386.c (override_options): Initialize
17139         ix86_veclib_handler to ix86_veclibabi_svml when
17140         -mveclibabi=svml is used.
17141         (ix86_veclibabi_svml): New function for SVML ABI style
17142         vectorization support.
17143         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
17144
17145 2008-03-28  Rafael Espindola  <espindola@google.com>
17146
17147         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
17148         (tree_binary_nonnegative_warnv_p): Make it public.
17149         (tree_single_nonnegative_warnv_p): Make it public.
17150         (tree_invalid_nonnegative_warnv_p): Make it public.
17151         (tree_unary_nonzero_warnv_p): Make it public.
17152         (tree_binary_nonzero_warnv_p): Make it public
17153         (tree_single_nonzero_warnv_p): Make it public.
17154         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
17155         (extract_range_from_binary_expr): Split the expr argument.
17156         (extract_range_from_unary_expr): Split the expr argument.
17157         (extract_range_from_comparison): Split the expr argument.
17158         (extract_range_from_expr): Use the new aux functions.
17159         (vrp_evaluate_conditional_warnv): Use
17160         vrp_evaluate_conditional_warnv_with_ops.
17161         * tree.h (tree_unary_nonzero_warnv_p): Declare.
17162         (tree_binary_nonzero_warnv_p): Declare.
17163         (tree_single_nonzero_warnv_p): Declare.
17164         (tree_expr_nonzero_warnv_p): Declare.
17165         (tree_unary_nonnegative_warnv_p): Declare.
17166         (tree_binary_nonnegative_warnv_p): Declare.
17167         (tree_single_nonnegative_warnv_p): Declare.
17168         (tree_invalid_nonnegative_warnv_p): Declare.
17169
17170 2008-03-28  Richard Guenther  <rguenther@suse.de>
17171
17172         PR tree-optimization/30317
17173         PR tree-optimization/30911
17174         PR tree-optimization/34793
17175         * tree-vrp.c (set_and_canonicalize_value_range): New function.
17176         (struct assert_locus_d): New member EXPR.
17177         (register_new_assert_for): Add EXPR parameter to support
17178         ASSERT_EXPR <name, expr OP limit>.
17179         (register_edge_assert_for_1): Adjust callers.
17180         (find_assert_locations): Likewise.
17181         (process_assert_insertions_for): Build condition from expression.
17182         (extract_range_from_assert): Handle ASSERT_EXPRs
17183         of the form ASSERT_EXPR <name, expr OP limit>.
17184         (register_edge_assert_for_2): New helper registering
17185         asserts for comparisons.  Recognize range tests of the form
17186         (unsigned)i - CST1 OP CST2.
17187         (register_edge_assert_for_1): Use it.
17188         (register_edge_assert_for): Likewise.
17189         (needs_overflow_infinity): Integer sub-types
17190         do not need overflow infinities.
17191         (vrp_val_is_max): The extreme values of integer sub-types
17192         are those of the base type.
17193         (vrp_val_is_min): Likewise.
17194         * tree.def (ASSERT_EXPR): Document extra allowed conditional
17195         expressions.
17196
17197 2008-03-28  Nick Clifton  <nickc@redhat.com>
17198
17199         PR target/31110
17200         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
17201         Return GENERAL_REGS for stack adjustment reloads.
17202
17203 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17204
17205         PR target/31334
17206         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
17207         const_vector when all the vectors are constant.
17208
17209 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
17210
17211         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
17212         comparisons.
17213         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
17214         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
17215         (scc_sf): New.
17216         (s<code>_sf): Use new scc_sf attribute for opcode names.
17217
17218 2008-03-27  Tom Tromey  <tromey@redhat.com>
17219
17220         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
17221         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
17222         config/spu/t-spu-elf, config/i386/t-interix,
17223         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
17224         config/i386/x-darwin, config/i386/x-mingw32,
17225         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
17226         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
17227         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
17228         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
17229         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
17230         config/rs6000/x-darwin, config/rs6000/t-rs6000,
17231         config/score/t-score-elf, config/arm/t-strongarm-pe,
17232         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
17233         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
17234         Revert automatic dependency patch.
17235
17236 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
17237
17238         PR target/35657
17239         * config/i386/i386.c (ix86_function_arg_boundary): Align
17240         decimal floating point to its natural boundary.
17241
17242 2008-03-27  Richard Guenther  <rguenther@suse.de>
17243
17244         PR middle-end/35716
17245         * fold-const.c (fold_comparison): Restrict distinct decl
17246         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
17247         solely rely on operand_equal_p.
17248
17249 2008-03-27  Richard Guenther  <rguenther@suse.de>
17250
17251         PR c/32511
17252         * c-common.c (handle_weak_attribute): Reject combination of
17253         weak and inline.
17254
17255 2008-03-27  Richard Guenther  <rguenther@suse.de>
17256
17257         PR tree-optimization/32810
17258         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
17259         conversions from DECL_INITIAL.
17260         (fold_const_aggregate_ref): Likewise from constructor elements.
17261
17262 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
17263
17264         * tree-affine.h (aff_combination_expand): Declare.
17265         (get_inner_reference_aff): Likewise.
17266         * tree-affine.c (aff_combination_expand): Split out from
17267         tree_to_aff_combination_expand.
17268         (get_inner_reference_aff): New function.
17269         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
17270         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
17271         (struct lim_aux_data): sm_done field removed.
17272         (mem_ref_loc_p, mem_ref_locs_p): New types.
17273         (struct mem_ref): Added id, stored, accesses_in_loop,
17274         indep_loop, dep_loop, indep_ref, dep_ref fields.
17275         Removed is_stored, locs and next fields.
17276         (memory_accesses): New variable.
17277         (movement_possibility): Do not allow moving statements
17278         that store to memory.
17279         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
17280         New functions.
17281         (determine_max_movement): For statements with memory references,
17282         find the outermost loop in that the reference is independent.
17283         (move_computations_stmt): Mark the virtual operands for renaming.
17284         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
17285         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
17286         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
17287         add_vop_ref_mapping, create_vop_ref_mapping_loop,
17288         create_vop_ref_mapping, analyze_memory_references,
17289         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
17290         get_all_locs_in_loop, ref_always_accessed_p,
17291         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
17292         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
17293         store_motion_loop, store_motion): New functions.
17294         (struct vop_to_refs_elt): New type.
17295         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
17296         memref_hash, memref_eq, hoist_memory_references): Rewritten.
17297         (schedule_sm): Replaced by...
17298         (execute_sm): ... this.
17299         (determine_lsm_ref, hoist_memory_references,
17300         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
17301         find_more_ref_vops, free_mem_ref, free_mem_refs,
17302         determine_lsm_loop, determine_lsm): Removed.
17303         (tree_ssa_lim_finalize): Free data structures used by store motion.
17304         (tree_ssa_lim): Call analyze_memory_references.  Use
17305         store_motion instead of determine_lsm.
17306
17307 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
17308
17309         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
17310         rename tmake_file to m68hc11/t-m68hc11.
17311         (mcore): Set inhibit_libc to true.
17312         * config.host (alpha*-dec-*vms*): Set extra_programs.
17313         (interix3*): Don't use host_xmake_file.
17314         * configure.ac: Let config.gcc override inhibit_libc.
17315         * configure: Regenerate.
17316
17317         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
17318         * config/t-openbsd-thread: Remove commented out lines.
17319
17320         * config/x-interix: Remove.
17321
17322         * config/m68hc11/t-m68hc11-gas: Rename to...
17323         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
17324
17325         * config/mcore/t-mcore: Remove T_CFLAGS.
17326         * config/mcore/t-mcore-pe: Likewise.
17327
17328 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
17329
17330         * configure.ac: Replace custom __GNU_SOURCE test with
17331         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
17332         * aclocal.m4: Regenerate.
17333         * configure: Regenerate.
17334         * config.in: Regenerate.
17335
17336 2008-03-27  Richard Guenther  <rguenther@suse.de>
17337
17338         * fold-const.c (target.h): Include.
17339         (fold_comparison): Fold comparison of addresses of decls
17340         that bind locally or of constants.  Consolidate address folding code.
17341         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
17342         results from fold_binary_to_constant.
17343         (compare_values_warnv): Likewise.
17344
17345 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
17346
17347         PR middle-end/35429
17348         * fold-const.c (fold_truthop): Check for integeral types when folding
17349         a == 0 && b == 0 and a != 0 || b != 0 .
17350
17351 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
17352
17353         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
17354
17355 2008-03-26  Andreas Schwab  <schwab@suse.de>
17356
17357         * doc/invoke.texi: Fix use of @item vs. @itemx.
17358
17359 2008-03-26  Tom Tromey  <tromey@redhat.com>
17360
17361         * Makefile.in (build/gensupport.o, build/print-rtl.o,
17362         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
17363         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
17364         build/gencodes.o, build/genconditions.o, build/genconfig.o,
17365         build/genconstants.o, build/genemit.o, build/genextract.o,
17366         build/genflags.o, build/genmddeps.o, build/genopinit.o,
17367         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
17368         options.h.
17369
17370 2008-03-26  Richard Guenther  <rguenther@suse.de>
17371
17372         Revert
17373         2008-03-26  Richard Guenther  <rguenther@suse.de>
17374
17375         * fold-const.c (target.h): Include.
17376         (fold_comparison): Fold comparison of addresses of two decls
17377         that bind locally.  Consolidate address folding code.
17378
17379 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17380
17381         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
17382         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
17383         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
17384         dconstsqrt2, dconstthird, dconste and/or dconst10.
17385         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
17386         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
17387         dconstsqrt2, dconste): Delete.
17388         (init_emit_once): Likewise.  Simplify initializing dconstm1.
17389         Constify variable.
17390         * real.c (get_real_const): New.
17391         * real.h (dconst3, dconst10, dconstm2, dconstthird,
17392         dconstsqrt2, dconste): Delete.
17393         (real_value_const, get_real_const): New.
17394
17395 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
17396
17397         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
17398
17399         * config/i386/i386.c (ix86_function_arg_boundary): Check
17400         BIGGEST_ALIGNMENT instead of 128.
17401         (setup_incoming_varargs_64): Likewise.
17402
17403 2008-03-26  Tom Tromey  <tromey@redhat.com>
17404
17405         * Makefile.in (DEPFILES): Add missing '/'.
17406
17407 2008-03-26  Richard Guenther  <rguenther@suse.de>
17408
17409         * fold-const.c (target.h): Include.
17410         (fold_comparison): Fold comparison of addresses of two decls
17411         that bind locally.  Consolidate address folding code.
17412
17413 2008-03-26  Nick Clifton  <nickc@redhat.com>
17414
17415         PR target/31232
17416         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
17417         not allow INT+INT as a legitimate addressing mode.
17418
17419 2008-03-26  Richard Guenther  <rguenther@suse.de>
17420
17421         * tree-flow.h (widen_bitfield): Remove declaration.
17422         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
17423         (widen_bitfield): Remove function.
17424         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
17425         code.
17426
17427 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17428
17429         PR target/31558
17430         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
17431         error_mark_node's.
17432
17433 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
17434
17435         PR rtl-optimization/35232
17436         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
17437         (forget_old_reloads_1, forget_marked_reloads): Don't clear
17438         reg_reloaded_call_part_clobbered here.
17439         (reload_regs_reach_end_p): New function.
17440         (reload_reg_rtx_for_input): New variable.
17441         (reload_reg_rtx_for_output): Likewise.
17442         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
17443         when reassigning a pseudo register.  Load reloadreg from
17444         reload_reg_rtx_for_input, moving the mode and register
17445         calculation to...
17446         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
17447         instead of the original when deciding whether an input reload
17448         would be a no-op or whether an output reload can be deleted.
17449         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
17450         when setting up new_spill_reg_store.  Load it from
17451         reload_reg_rtx_for_output, moving the mode and register
17452         calculation to...
17453         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
17454         instead of the original when deciding whether an output reload
17455         would be a no-op.  Do the same when modifying insn notes.
17456         Use rtx_equal_p instead of == to compare the registers.
17457         (inherit_piecemeal_p): Take a mode and two register numbers
17458         as argument.
17459         (emit_reload_insns): Clear new_spill_reg_store for every hard
17460         register in the reload register.  Remove spill registers
17461         from reg_reloaded_valid before considering whether to record
17462         inheritance information for them.  Use reload_reg_rtx_for_output
17463         instead of reg_rtx when recording output reloads.  Use
17464         reload_reg_rtx_for_input instead of reg_rtx when recording
17465         input reloads.  Set or clear reg_reloaded_call_part_clobbered
17466         at the same time as setting reg_reloaded_valid.
17467         (delete_output_reload): Add a new_reload_reg parameter and use it
17468         instead of rld[j].reg_rtx.
17469         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
17470         calls accordingly.
17471
17472 2008-03-25  Tom Tromey  <tromey@redhat.com>
17473
17474         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
17475         (build/genattr.o): Likewise.
17476         (build/genattrtab.o): Likewise.
17477         (build/gencodes.o): Likewise.
17478         (build/genconfig.o): Likewise.
17479         (build/genconstants.o): Likewise.
17480         (build/genemit.o): Likewise.
17481         (build/genextract.o): Likewise.
17482         (build/genflags.o): Likewise.
17483
17484 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
17485
17486         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
17487         instead of size_int for integer types.
17488         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
17489         to match type of MINUS_EXPR.
17490
17491 2008-03-25  Tom Tromey  <tromey@redhat.com>
17492
17493         * configure: Rebuilt.
17494         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
17495         Makefile.
17496
17497 2008-03-25  Tom Tromey  <tromey@redhat.com>
17498
17499         * config/x-solaris (host-solaris.o): Update.
17500         * config/x-linux (host-linux.o): Update.
17501         * config/x-hpux (host-hpux.o): Update.
17502         * config/x-darwin (host-darwin.o): Update.
17503         * config/v850/t-v850e (v850-c.o): Update.
17504         * config/v850/t-v850 (v850-c.o): Update.
17505         * config/t-vxworks (vxworks.o): Update.
17506         * config/t-sol2 (sol2-c.o, sol2.o): Update.
17507         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
17508         * config/spu/t-spu-elf (spu-c.o): Update.
17509         (spu.o): Remove.
17510         * config/sh/t-symbian (sh-c.o): Update.
17511         (symbian.o): Update.
17512         * config/sh/t-sh (sh-c.o): Update.
17513         * config/score/t-score-elf (score7.o, score3.o): Update.
17514         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
17515         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
17516         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
17517         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
17518         (rs6000.o): Remove.
17519         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
17520         * config/m32c/t-m32c (m32c-pragma.o): Update.
17521         * config/ia64/t-ia64 (ia64-c.o): Update.
17522         * config/i386/x-mingw32 (host-mingw32.o): Update.
17523         * config/i386/x-i386 (driver-i386.o): Update.
17524         * config/i386/x-darwin (host-i386-darwin.o): Update.
17525         * config/i386/x-cygwin (host-cygwin.o): Update.
17526         * config/i386/t-nwld (nwld.o): Update.
17527         * config/i386/t-netware (netware.o): Update.
17528         * config/i386/t-interix (winnt.o): Update.
17529         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
17530         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
17531         msformat-c.o): Update.
17532         * config/bfin/t-bfin-linux (generated_files): Add
17533         linux-sysroot-suffix.h.
17534         * config/arm/t-wince-pe (pe.o): Update.
17535         * config/arm/t-strongarm-pe (pe.o): Update.
17536         * config/arm/t-pe (pe.o): Update.
17537         * config/arm/t-arm (arm-c.o): Update.
17538         * doc/install.texi (Prerequisites): Require make 3.80.
17539         * Makefile.in: Remove .o targets.
17540         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
17541         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
17542         (simple_generated_h, simple_generated_c): Move earlier.
17543         (generated_files): New variable.
17544         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
17545         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
17546         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
17547         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
17548         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
17549         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
17550         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
17551         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
17552         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
17553         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
17554         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
17555         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
17556         (.c.o): Remove.
17557         (COMPILE.base, COMPILE): New variables.
17558         (%.o): New pattern rule.
17559         (ALL_HOST_OBJS): New variable.
17560         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
17561         (dummy-checksum.o, cc1-checksum.o): Remove.
17562         (DRIVER_SHLIB): New variable.
17563         (DRIVER_DEFINES): Use it.
17564         (gencondmd.c): Move out of build/.
17565         (s-conditions): Update.
17566         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
17567         (ALL_BUILD_OBJS): Likewise.
17568         (build/%.o): Use BUILDCOMPILE.
17569         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
17570         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
17571         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
17572         build/gencheck.o, build/gencodes.o, build/genconditions.o,
17573         build/genconfig.o, build/genconstants.o, build/genemit.o,
17574         build/genextract.o, build/genflags.o, build/genmddeps.o,
17575         build/genopinit.o, build/genoutput.o, build/genpeep.o,
17576         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
17577         build/gen-protos.o, build/scan.o, build/fix-header.o,
17578         build/scan-decls.o): Simplify.
17579         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
17580         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
17581         prefix.o, toplev.o): Reduce to variable setting.
17582         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
17583         ($(out_object_file), gcc-options.o): New targets.
17584         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
17585         * configure: Rebuilt.
17586         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
17587         * doc/sourcebuild.texi (Front End Directory): Document new variable.
17588
17589 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
17590
17591         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
17592         complain when we hit an error, return ERROR_MARK_NODE.
17593
17594 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17595
17596         * config/sh/constraints.md (Pso, Psz): New constraints.
17597         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
17598         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
17599
17600 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17601
17602         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
17603         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
17604
17605 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
17606
17607         * config/sh/sh.md (prefetch): Add condition for SH2A target.
17608         (prefetch_sh2a): New.
17609
17610 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
17611             Naveen.H.S  <naveen.hs@kpitcummins.com>
17612
17613         * config/sh/constraints.md (I28): New constraint.
17614         * config/sh/sh.c (broken_move): Add support for movi20s.
17615         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
17616
17617 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
17618             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
17619             Naveen.H.S  <naveen.hs@kpitcummins.com>
17620
17621         * config/sh/sh.c (SH_ATTRIBUTES): Define.
17622         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
17623         (print_operand): Handle resbank in %@ operand code.
17624         (sh_encode_section_info): New.
17625         (push_regs): Add conditions for resbank.
17626         (sh_expand_epilogue): Likewise.
17627         (sh_insert_attributes): Likewise.
17628         (sh_attribute_table): Likewise.
17629         (sh_handle_resbank_handler_attribute): New.
17630         (sh2a_handle_function_vector_handler_attribute): New.
17631         (sh2a_is_function_vector_call): New.
17632         (sh2a_get_function_vector_number): New.
17633         (sh2a_function_vector_p): New.
17634         (sh_cfun_resbank_handler_p): New.
17635         * config/sh/sh.md (calli): Emit jsr/n if possible.
17636         (calli_tbr_rel): New.
17637         (calli_pcrel): Emit jsr/n if possible.
17638         (return_i): Emit rts/n if possible.
17639         (call_valuei_tbr_rel): New.
17640         (call_valuei_pcrel): Add condition for SH2A target.
17641         (call_value): Likewise.
17642         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
17643         (sh2a_get_function_vector_number): Likewise.
17644         (sh2a_is_function_vector_call): Likewise.
17645         * doc/extend.texi: Document TBR relative addressing of SH2A.
17646         (resbank): Add description for SH2A.
17647
17648 2008-03-24  Richard Guenther  <rguenther@suse.de>
17649
17650         PR c/22371
17651         * gimplify.c (gimplify_modify_expr): For frontend type-correct
17652         pointer assignments change conversions according to middle-end rules.
17653         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
17654         * configure.ac: Include type checking in yes.
17655         * configure: Regenerate.
17656
17657 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17658
17659         * diagnostic.c (diagnostic_count_diagnostic): Delete.
17660         (diagnostic_report_diagnostic): Update. Handle ICEs here.
17661
17662 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
17663
17664         * gthr-vxworks.h (UNUSED): Define.
17665
17666 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
17667
17668         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
17669
17670 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
17671
17672         * doc/extend.texi (Function Attributes): Add missing comma in the
17673         example of the "alloc_size" attribute.
17674
17675 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
17676
17677         Revert:
17678         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
17679
17680         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
17681         32bit host.
17682
17683         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
17684
17685         PR target/35496
17686         * stor-layout.c (update_alignment_for_field): Set minimum alignment
17687         of the underlying type of a MS bitfield layout to the natural
17688         alignment of the type.
17689
17690         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17691
17692         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17693         to their natural alignment to avoid store forwarding stalls.
17694
17695 2008-03-22  Richard Guenther  <rguenther@suse.de>
17696
17697         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
17698         For PHI nodes verify the address is invariant.
17699         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
17700         (get_symbol_constant_value): Use is_gimple_min_invariant.
17701         (maybe_fold_stmt_indirect): Likewise.
17702
17703 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
17704
17705         PR rtl-optimization/33927
17706         * Makefile.in (dse.o): Depend on $(TM_P_H).
17707         * expr.h (extract_low_bits): Declare.
17708         * expmed.c (extract_low_bits): New function.
17709         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
17710         * dse.c: Include tm_p.h.
17711         (find_shift_sequence): Remove the read_reg argument and return the
17712         read value.  Emit the instructions instead of returning them.
17713         Iterate on new_mode rather than calculating it each time.
17714         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
17715         source to NEW_MODE and extract_low_bits to convert the shifted
17716         value to READ_MODE.
17717         (replace_read): Allow the load and store to have different mode
17718         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
17719         or extraction instructions before trying the replacement.  Update
17720         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
17721
17722 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
17723
17724         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
17725         to their natural alignment to avoid store forwarding stalls.
17726
17727 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17728
17729         PR target/27946
17730         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
17731         encouraging but not allowing gprs for input;
17732         change the input constraint to !f#r.
17733         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
17734         gprs for output;
17735         change the output constraint to !f#r.
17736
17737 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
17738
17739         PR target/13958
17740         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
17741         corresponding post-reload splitters.
17742         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
17743         when x87 FP math is selected.
17744         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
17745         New function prototype.
17746         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
17747         unreachable function to ease macroization of insn patterns.
17748
17749 2008-03-21  Martin Jambor  <mjambor@suse.cz>
17750
17751         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
17752         reference dumps if ddr is NULL or dependence is unknown.
17753
17754 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17755
17756         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
17757         unsigned extension into account.
17758         (ATOMIC_COMPARE_AND_SWAP): Likewise.
17759         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
17760         Do computations on a scratch register.
17761
17762 2008-03-21  Richard Guenther  <rguenther@suse.de>
17763
17764         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
17765         Use is_gimple_min_invariant instead of TREE_INVARIANT.
17766         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
17767         * tree-ssa-dom.c (record_equality): Likewise.
17768         * tree-inline.c (copy_body_r): Likewise.
17769         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
17770         TREE_INVARIANT.
17771
17772 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
17773
17774         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
17775         as 'delete_unused' argument.
17776
17777 2008-03-20  Richard Guenther  <rguenther@suse.de>
17778
17779         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
17780         special casing of constant qualifiers.
17781         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
17782         care about them in general.
17783         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
17784         regardless of their type.
17785         (fold_stmt_r): Forcefully fold *& if we end up with that.
17786
17787 2008-03-20  Paul Brook  <paul@codesourcery.com>
17788
17789         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
17790         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
17791         linker flags.
17792         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
17793         definition.
17794         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
17795         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
17796
17797 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
17798
17799         * common.opt (Wmudflap): New option.
17800         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
17801         (mx_register_decls): Likewise.
17802         (mudflap_finish_file): Likewise.
17803         * doc/invoke.texi: Document -Wno-mudflap.
17804
17805 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
17806
17807         * c-format.c (replace_format_name_to_system_name): New.
17808         (cmp_attribs): New.
17809         (convert_format_name_to_system_name): New.
17810         (decode_format_attr): Add use of convert_format_name_to_system_name.
17811         (format_types_orig): Add gnu_ prefix to names.
17812         (check_format_info_main): Special treating of \0 escaped names for
17813         supporting multi-character format specifiers as I32, I64.
17814         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
17815         (gnu_target_overrides_format_attributes): New.
17816         * c-format.h: Add structure target_ovr_attr to hold
17817         system specific formatter names.
17818         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
17819         msformat-c.o file to c_target_objs and cxx_target_objs.
17820         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
17821         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
17822         (TARGET_N_FORMAT_TYPES): New.
17823         * config/i386/msformat-c.c: New.
17824         * config/i386/t-cygming: Add build rule for msformat-c.o.
17825         * doc/extend.texi: Add new format names gnu_* and ms_* and
17826         further details.
17827         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
17828
17829 2008-03-20  Ira Rosen  <irar@il.ibm.com>
17830
17831         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
17832         optimizations turned on under -O3.
17833         (ftree-vectorize): Add that the flag is turned on with -O3.
17834
17835 2008-03-20  Ben Elliston  <bje@au.ibm.com>
17836
17837         * regmove.c (try_auto_increment): Fix spelling error in comment.
17838         * final.c (final_scan_insn): Likewise.
17839
17840 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
17841
17842         PR target/14552
17843         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
17844         allocator preferences for "y" and "r" class registers.
17845         ("*mov<mode>_internal"): Ditto.
17846         ("*movv2sf_internal_rex64"): Ditto.
17847         ("*movv2sf_internal"): Ditto.
17848
17849 2008-03-19  Michael Matz  <matz@suse.de>
17850
17851         PR middle-end/35616
17852         * calls.c (expand_call): Check overlap of arguments with call
17853         address for sibcalls.
17854
17855 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
17856
17857         PR target/35496
17858         * stor-layout.c (update_alignment_for_field): Set minimum alignment
17859         of the underlying type of a MS bitfield layout to the natural
17860         alignment of the type.
17861
17862 2008-03-19  Jan Hubicka  <jh@suse.cz>
17863
17864         PR other/35094
17865         * toplev.c (decode_d_option): Handle all CPP flags.
17866         * tree-vrp.c: Update tree_pass descriptors.
17867         * regrename.c: Update tree_pass descriptors.
17868         * fwprop.c: Update tree_pass descriptors.
17869         * doc/invoke.texi: Remove documentation of dropped -d? flags.
17870         * tree-into-ssa.c: Update tree_pass descriptors.
17871         * tree-dump.c: Update tree_pass descriptors.
17872         * tree-complex.c: Update tree_pass descriptors.
17873         * tree-dump.h: Update tree_pass descriptors.
17874         * see.c: Update tree_pass descriptors.
17875         * cgraphbuild.c: Update tree_pass descriptors.
17876         * tracer.c: Update tree_pass descriptors.
17877         * tree-loop-distribution.c: Update tree_pass descriptors.
17878         * cgraph.c: Update tree_pass descriptors.
17879         * postreload-gcse.c: Update tree_pass descriptors.
17880         * postreload.c: Update tree_pass descriptors.
17881         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
17882         * tree-tailcall.c: Update tree_pass descriptors.
17883         * tree-pass.h (tree_opt_pass): Rename to ...
17884         (opt_pass) ... this one; add "type" field and remove letter field.
17885         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
17886         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
17887         all_lowering_passes): Update declaration.
17888         * ipa-cp.c: Update tree_pass descriptors.
17889         * final.c: Update tree_pass descriptors.
17890         * omp-low.c: Update tree_pass descriptors.
17891         * tree-ssa-dse.c: Update tree_pass descriptors.
17892         * ipa-reference.c: Update tree_pass descriptors.
17893         * tree-ssa-uncprop.c: Update tree_pass descriptors.
17894         * auto-inc-dec.c: Update tree_pass descriptors.
17895         * reorg.c: Update tree_pass descriptors.
17896         * cgraphunit.c: Update tree_pass descriptors.
17897         * tree-ssa-copyrename.c: Update tree_pass descriptors.
17898         * tree-ssa-ccp.c: Update tree_pass descriptors.
17899         * df-core.c: Update tree_pass descriptors.
17900         * mode-switching.c: Update tree_pass descriptors.
17901         * tree-nomudflap.c: Update tree_pass descriptors.
17902         * modulo-sched.c: Update tree_pass descriptors.
17903         * ipa-pure-const.c: Update tree_pass descriptors.
17904         * cse.c: Update tree_pass descriptors.
17905         * web.c: Update tree_pass descriptors.
17906         * tree-stdarg.c: Update tree_pass descriptors.
17907         * tree-ssa-math-opts.c: Update tree_pass descriptors.
17908         * tree-ssa-dom.c: Update tree_pass descriptors.
17909         * tree-nrv.c: Update tree_pass descriptors.
17910         * tree-ssa-alias.c: Update tree_pass descriptors.
17911         * loop-init.c: Update tree_pass descriptors.
17912         * gimple-low.c: Update tree_pass descriptors.
17913         * ipa-inline.c: Update tree_pass descriptors.
17914         * tree-ssa-sink.c: Update tree_pass descriptors.
17915         * global.c: Update tree_pass descriptors.
17916         * ifcvt.c: Update tree_pass descriptors.
17917         * jump.c: Update tree_pass descriptors.
17918         * predict.c: Update tree_pass descriptors.
17919         * tree-ssa-loop.c: Update tree_pass descriptors.
17920         * recog.c: Update tree_pass descriptors.
17921         * dse.c: Update tree_pass descriptors.
17922         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
17923         * tree-eh.c: Update tree_pass descriptors.
17924         * regmove.c: Update tree_pass descriptors.
17925         * local-alloc.c
17926         * function.c: Update tree_pass descriptors.
17927         * tree-vectorizer.c: Update tree_pass descriptors.
17928         * gcse.c: Update tree_pass descriptors.
17929         * ipa-type-escape.c: Update tree_pass descriptors.
17930         * tree-if-conv.c: Update tree_pass descriptors.
17931         * init-regs.c: Update tree_pass descriptors.
17932         * ipa.c: Update tree_pass descriptors.
17933         * tree-ssa-phiopt.c: Update tree_pass descriptors.
17934         * rtl-factoring.c: Update tree_pass descriptors.
17935         * lower-subreg.c: Update tree_pass descriptors.
17936         * bt-load.c: Update tree_pass descriptors.
17937         * tree-dfa.c: Update tree_pass descriptors.
17938         * except.c: Update tree_pass descriptors.
17939         * emit-rtl.c: Update tree_pass descriptors.
17940         * cfgexpand.c: Update tree_pass descriptors.
17941         * tree-cfgcleanup.c: Update tree_pass descriptors.
17942         * cfgcleanup.c: Update tree_pass descriptors.
17943         * tree-ssa-pre.c: Update tree_pass descriptors.
17944         * tree-sra.c: Update tree_pass descriptors.
17945         * tree-mudflap.c: Update tree_pass descriptors.
17946         * tree-ssa-copy.c: Update tree_pass descriptors.
17947         * cfglayout.c: Update tree_pass descriptors.
17948         * tree-ssa-forwprop.c: Update tree_pass descriptors.
17949         * tree-ssa-dce.c: Update tree_pass descriptors.
17950         * tree-ssa.c: Update tree_pass descriptors.
17951         * regclass.c: Update tree_pass descriptors.
17952         * integrate.c: Update tree_pass descriptors.
17953         * tree-optimize.c: Update tree_pass descriptors.
17954         * tree-ssa-phiprop.c: Update tree_pass descriptors.
17955         * tree-object-size.c: Update tree_pass descriptors.
17956         * combine.c: Update tree_pass descriptors.
17957         * tree-outof-ssa.c: Update tree_pass descriptors.
17958         * bb-reorder.c: Update tree_pass descriptors.
17959         * stack-ptr-mod.c: Update tree_pass descriptors.
17960         * var-tracking.c: Update tree_pass descriptors.
17961         * tree-profile.c: Update tree_pass descriptors.
17962         * tree-vect-generic.c: Update tree_pass descriptors.
17963         * reg-stack.c: Update tree_pass descriptors.
17964         * sched-rgn.c: Update tree_pass descriptors.
17965         * tree-ssa-structalias.c: Update tree_pass descriptors.
17966         * tree-cfg.c: Update tree_pass descriptors.
17967         * passes.c (current_pass): Update declaration.
17968         (finish_optimization_passes): Update.
17969         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
17970         (register_one_dump_file, register_dump_files_1, next_pass_1):
17971         Update arguments.
17972         (init_optimization_passes): Update handling of new types.
17973         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
17974         * ipa-struct-reorg.c: Update tree_pass descriptors.
17975         * tree-ssa-reassoc.c: Update tree_pass descriptors.
17976         * combine-stack-adj.c: Update tree_pass descriptors.
17977         * cfgrtl.c: Update tree_pass descriptors.
17978         * dce.c: Update tree_pass descriptors.
17979         * tree-ssanames.c: Update tree_pass descriptors.
17980
17981 2008-03-19  Richard Guenther  <rguenther@suse.de>
17982
17983         PR middle-end/35609
17984         * tree-ssa.c (walk_data): New structure.
17985         (warn_uninitialized_var): If not always_executed warn with "maybe"
17986         instead of "is".
17987         (execute_early_warn_uninitialized): Compute post-dominators.
17988         Initialize always_executed before processing each basic block.
17989
17990 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
17991
17992         PR target/35504
17993         * config/i386/i386.c (x86_this_parameter): Calculate correct location
17994         of "this" pointer when "regparm = N" or "fastcall" is in effect.
17995
17996 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17997
17998         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
17999
18000 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
18001
18002         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
18003         is true.
18004         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
18005         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
18006         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
18007         target after ignore has been set, and move there also the commputation
18008         of subtarget and original_target.
18009         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
18010         (LANG_HOOKS_INITIALIZER): Remove it.
18011         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
18012
18013 2008-03-18  Richard Guenther  <rguenther@suse.de>
18014
18015         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
18016         found an expression with constants, note that in the VN for the lhs.
18017         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
18018         fold them to constants if possible.  Run cleanup_cfg if done so.
18019         (execute_pre): Return todo.
18020         (do_pre): Likewise.
18021         (execute_fre): Likewise.
18022         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
18023         of constants.
18024         (get_prop_source_stmt): Look through pointer conversions.
18025
18026 2008-03-18  Jan Hubicka  <jh@suse.cz>
18027
18028         * tree-pretty-print.c: Include predict.h.
18029         (dump_generic_node): Dump predictor.
18030         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
18031         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
18032         * gimple-low.c (lower_stmt): Likewise.
18033         * expr.c (expand_expr_real): Likewise.
18034         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
18035         them.
18036         (build_predict_expr, build_predict_expr): New.
18037         * predict.h (predictor_name, build_predict_expr): Update.
18038         * c-typeck.c (c_finish_bc_stmt): Add prediction.
18039         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
18040         * predict.def (PRED_CONTINUE): Update hitrate.
18041         * tree.def (PREDICT_EXPR): Define.
18042         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
18043         do not handle BIND_EXPR.
18044         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
18045         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
18046         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
18047         operands.
18048
18049 2008-03-18  Michael Matz  <matz@suse.de>
18050
18051         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
18052
18053 2008-03-18  Richard Guenther  <rguenther@suse.de>
18054
18055         * tree-gimple.h (is_gimple_invariant_address): Declare.
18056         (is_gimple_constant): Likewise.
18057         * tree-gimple.c (is_gimple_constant): New function.
18058         (is_gimple_invariant_address): Likewise.
18059         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
18060         and is_gimple_invariant_address.
18061         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
18062         previous change.
18063         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
18064         an addressable base.
18065
18066 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
18067
18068         PR middle-end/35611
18069         * gimplify.c (gimplify_expr): Gimplify second operand of
18070         OMP_ATOMIC_LOAD.
18071
18072 2008-03-17  Richard Guenther  <rguenther@suse.de>
18073
18074         PR tree-optimization/19637
18075         * fold-const.c (fold_unary): Remove restrictions of removing
18076         intermediate pointer-conversions (P2)(P1)P0.
18077         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
18078         conversion to void pointer.
18079         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
18080
18081 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
18082
18083         PR debug/31510
18084         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
18085         emulated thread local variables.
18086
18087 2008-03-16  Richard Guenther  <rguenther@suse.de>
18088
18089         PR middle-end/35607
18090         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
18091         expand TREE_INVARIANT operations that are not gimple invariant.
18092
18093 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
18094
18095         * doc/extend.texi (Alignment): Say that the ABI controls
18096         the __alignof__ for non-strict-alignment targets rather
18097         than being a recommendation.
18098
18099 2008-03-15  Paul Brook  <paul@codesourcery.com>
18100
18101         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
18102         annotations.
18103         (arm_output_fn_unwind): Mark functions that can not be unwound.
18104
18105 2008-03-15  Paul Brook  <paul@codesourcery.com>
18106
18107         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
18108         extension instructions.
18109
18110 2008-03-15  Richard Guenther  <rguenther@suse.de>
18111
18112         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
18113         and fold constant aggregate refs.
18114         (fold_const_aggregate_ref): Handle string constants
18115         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
18116         (evaluate_stmt): Simplify now that ccp_fold folds constant
18117         aggregate refs.
18118
18119 2008-03-15  Paul Brook  <paul@codesourcery.com>
18120
18121         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
18122         (extzv): Use gen_extzv_t2.
18123         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
18124
18125 2008-03-15  Richard Guenther  <rguenther@suse.de>
18126
18127         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
18128         (fold_const_aggregate_ref): Likewise.
18129         (get_value): Return NULL if we don't have any values.
18130         (ccp_finalize): Set const_val to NULL after freeing it.
18131         * tree-flow.h (get_symbol_constant_value): Declare.
18132         (fold_const_aggregate_ref): Likewise.
18133         * tree-ssa-sccvn.c (try_to_simplify): Use them.
18134
18135 2008-03-15  Richard Guenther  <rguenther@suse.de>
18136
18137         PR middle-end/35593
18138         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
18139         to not produce negative array indices if not allowed.  Add
18140         parameter to indicate that.
18141         (maybe_fold_offset_to_component_ref): Allow negative array
18142         indices only for the first member of a structure.
18143         (maybe_fold_offset_to_reference): Allow negative array indices.
18144         (maybe_fold_stmt_addition): Likewise.
18145
18146 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
18147             Anatoly Sokolov <aesok@post.ru>
18148
18149         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
18150         (avr_arch): Add ARCH_AVR6.
18151         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
18152         (initial_elimination_offset): Initialize and use 'avr_pc_size'
18153         instead of fixed value 2.
18154         (print_operand_address): Use gs() asm specifier instead of pm().
18155         (avr_assemble_integer): (Ditto.).
18156         (avr_output_addr_vec_elt): (Ditto.).
18157         (print_operand): Handle "!" code.
18158         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
18159         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
18160         (AVR_HAVE_EIJMP_EICALL): Define.
18161         (AVR_3_BYTE_PC): Redefine.
18162         (AVR_2_BYTE_PC): (Ditto.).
18163         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
18164         (LINK_SPEC): Add atmega2560 and atmega2561.
18165         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
18166         (crtm2561.o).
18167         * config/avr/avr.md (call_insn): Use eicall instead of icall
18168         for 3 byte PC devices.
18169         (call_value_insn): (Ditto.).
18170         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
18171         (indirect_jump): Use only for for 2 byte PC devices.
18172         (*tablejump): (Ditto.).
18173         (*indirect_jump_avr6): Add insn.
18174         (*tablejump_rjmp): Don't use for 3 byte PC devices.
18175         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
18176         instead of ijmp for 3 byte PC devices.
18177         (__tablejump2__): (Ditto.).
18178         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
18179         (MULITLIB_DIRNAMES): (Ditto.).
18180         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
18181
18182 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
18183
18184         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
18185         "sse2_umulsidi3".  Use V1DI mode for operand 0.
18186         ("mmx_psadbw"): Use V1DI mode for operand 0.
18187         * config/i386/i386-modes.def (V1SI): New vector mode.
18188         * config/i386/i386.c (struct builtin_description)
18189         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
18190         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
18191         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
18192         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
18193         v1di_ftype_v8qi_v8qi type.
18194         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
18195
18196         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
18197         __builtin_ia32_pmuludq]: Fix the mode of return value.
18198
18199 2008-03-15  Richard Guenther  <rguenther@suse.de>
18200
18201         PR middle-end/35595
18202         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
18203         being a PHI_NODE.
18204
18205 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
18206
18207         * doc/invoke.texi (Option Summary, Xtensa Options): Document
18208         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
18209         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
18210         unless TARGET_SERIALIZE_VOLATILE is enabled.
18211         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
18212         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
18213         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
18214
18215 2008-03-14  Richard Guenther  <rguenther@suse.de>
18216
18217         PR tree-optimization/34172
18218         * tree-flow.h (refs_may_alias_p): Declare.
18219         (get_single_def_stmt): Likewise.
18220         (get_single_def_stmt_from_phi): Likewise.
18221         (get_single_def_stmt_with_phi): Likewise.
18222         * tree-dfa.c (refs_may_alias_p): New function.
18223         (get_single_def_stmt): Likewise.
18224         (get_single_def_stmt_from_phi): Likewise.
18225         (get_single_def_stmt_with_phi): Likewise.
18226         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
18227         (vn_reference_lookup_1): New helper function.
18228         (vn_reference_lookup): Walk the virtual use-def chain to
18229         continue searching for a match if the def does not alias the
18230         reference we are looking for.
18231
18232 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
18233
18234         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
18235         archive and Perzl.  Update The Written Word listing.
18236
18237 2008-03-14  Richard Guenther  <rguenther@suse.de>
18238
18239         PR tree-optimization/34043
18240         PR tree-optimization/33989
18241         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
18242         when doing FRE.
18243         (bitmap_find_leader): Use extra argument to verify dominance
18244         relationship inside a basic-block.
18245         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
18246         (find_leader_in_sets): Adjust.
18247         (create_component_ref_by_pieces): Take extra argument for
18248         dominance check, handle lookup failures.
18249         (find_or_generate_expression): Likewise.
18250         (create_expression_by_pieces): Likewise.
18251         (insert_into_preds_of_block): Adjust.
18252         (create_value_expr_from): If asked for, verify all operands
18253         are in the blocks AVAIL_OUT set.
18254         (make_values_for_stmt): Check for SSA_NAMEs that are life
18255         over an abnormal edge.
18256         (compute_avail): Remove such check.
18257         (do_SCCVN_insertion): New function.
18258         (eliminate): If we do not find a leader suitable for replacement
18259         insert a replacement expression from SCCVN if available.
18260         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
18261         (struct vn_ssa_aux): Add needs_insertion flag.
18262         * tree-ssa-sccvn.c (may_insert): New global flag.
18263         (copy_reference_ops_from_ref): Value-number union member access
18264         based on its size, not type and member if insertion is allowed.
18265         (visit_reference_op_load): For a weak match from union type
18266         punning lookup a view-converted value and insert a SSA_NAME
18267         for that value if that is not found.
18268         (visit_use): Make dumps shorter.  Do not disallow value numbering
18269         SSA_NAMEs that are life over an abnormal edge to constants.
18270         (free_scc_vn): Release inserted SSA_NAMEs.
18271         (run_scc_vn): New flag to specify whether insertion is allowed.
18272         Process SSA_NAMEs in forward order.
18273         * tree-ssa-loop-im.c (for_each_index): Handle invariant
18274         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
18275         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
18276         pointer type to/from integral types that do not change the
18277         precision to regular conversions.
18278
18279 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
18280
18281         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
18282         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
18283         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
18284         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
18285         input arguments and the mode of return value.  Built-in functions
18286         that operate on whole 64-bit MMX register now use V1DI mode.
18287
18288 2008-03-13  Alon Dayan  <alond@il.ibm.com>
18289             Olga Golovanevsky  <olga@il.ibm.com>
18290
18291         PR tree-optimization/35041
18292         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
18293         to locate the right position in a statement.
18294
18295 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
18296
18297         PR target/34000
18298         PR target/35553
18299         * config/i386/xmmintrin.h:  Change all static inline functions to
18300         extern inline and add __gnu_inline__ attribute.
18301         * config/i386/bmintrin.h: Ditto.
18302         * config/i386/smmintrin.h: Ditto.
18303         * config/i386/tmmintrin.h: Ditto.
18304         * config/i386/mmintrin-common.h: Ditto.
18305         * config/i386/ammintrin.h: Ditto.
18306         * config/i386/emmintrin.h: Ditto.
18307         * config/i386/pmmintrin.h: Ditto.
18308         * config/i386/mmintrin.h: Ditto.
18309         * config/i386/mm3dnow.h: Ditto.
18310
18311 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
18312
18313         PR middle-end/35185
18314         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
18315         (lower_omp_2): New function.
18316         (lower_omp_1, lower_omp): Rewritten.
18317
18318 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
18319
18320         PR 35054
18321         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
18322         with the phrase "Microsoft Windows compilers".
18323         (Push/Pop Macro Pragmas): New subsection. Document
18324         #pragma push_macro and pragma pop_macro.
18325
18326 2008-03-12  Paul Brook  <paul@codesourcery.com>
18327
18328         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
18329
18330 2008-03-12  Paul Brook  <paul@codesourcery.com>
18331
18332         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
18333         (thumb2_alusi3_short): Exclude PLUS and MINUS.
18334         (thumb2_addsi_shortim): Rename ...
18335         (thumb2_addsi_short): ... to this.  Allow register operands.
18336         (thumb2_subsi_short): New pattern.
18337         (thumb2_one_cmplsi2_short,
18338         thumb2_negsi2_short): New patterns and peepholes.
18339
18340 2008-03-12  Paul Brook  <paul@codesourcery.com>
18341
18342         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
18343
18344 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
18345
18346         * config/i386/i386.md (int_cond): New code iterator.
18347         (fp_cond): Ditto.
18348         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
18349         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
18350         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
18351         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
18352         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
18353         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
18354         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
18355         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
18356
18357 2008-03-12  Paul Brook  <paul@codesourcery.com>
18358
18359         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
18360         instead of {arm,thumb}_compute_save_reg_mask.
18361         (output_return_instruction): Ditto.
18362         (thumb_unexpanded_epilogue): Ditto.
18363         (thumb1_expand_prologue): Ditto.
18364         (thumb1_output_function_prologue): Ditto.
18365         (arm_set_return_address): Ditto.
18366         (thumb_set_return_address): Ditto.
18367         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
18368         regs to achieve stack alignment.
18369         (thumb1_compute_save_reg_mask): Fix compiler warning.
18370         (arm_output_epilogue): Use offsets->saved_regs_mask.
18371         Adjust stack pointer by poping call clobered registers.
18372         (arm_expand_prologue): Use offsets->saved_regs_mask.
18373         Adjust stack pointer by pushing extra registers.
18374         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
18375
18376 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
18377
18378         PR tree-opt/35422
18379         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
18380         conversion to the operands of a multiplication.
18381
18382 2008-03-12  Richard Guenther  <rguenther@suse.de>
18383
18384         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
18385         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
18386         * timevar.def (TV_TREE_PHIPROP): Add.
18387         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
18388         pass description.  Use TV_TREE_PHIPROP.
18389         * tree-ssa-forwprop.c: Remove phiprop code.
18390
18391 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
18392
18393         PR middle-end/35549
18394         * omp-low.c (maybe_lookup_decl): Constify first argument.
18395         (use_pointer_for_field): Change last argument from bool to
18396         omp_context *.  Disallow shared copy-in/out in nested
18397         parallel if decl is shared in outer parallel too.
18398         (build_outer_var_ref, scan_sharing_clauses,
18399         lower_rec_input_clauses, lower_copyprivate_clauses,
18400         lower_send_clauses, lower_send_shared_vars): Adjust callers.
18401
18402 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
18403             Ira Rosen  <irar@il.ibm.com>
18404
18405         * tree-vectorizer.c (free_stmt_vec_info): New function.
18406         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
18407         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
18408         * tree-vectorizer.h (free_stmt_vec_info): Declare.
18409         * tree-vect-transform.c (vectorizable_conversion): Free
18410         vec_oprnds0 if it was allocated.
18411         (vect_permute_store_chain): Remove unused VECs.
18412         (vectorizable_store): Free VECs that are allocated in the..
18413         function.
18414         (vect_transform_strided_load, vectorizable_load): Likewise.
18415         (vect_remove_stores): Simplify the code.
18416         (vect_transform_loop): Move code to vect_remove_stores().
18417         Call vect_remove_stores() and free_stmt_vec_info().
18418
18419 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18420
18421         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
18422         TARGET_HPUX.  Revise comment.
18423         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
18424         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
18425         Use sr4 variant of `be' instruction when not generating PIC code.
18426         (attr_length_call): Adjust for above change.
18427
18428 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18429
18430         * ipa-reference.c (static_execute): Remove module_statics_const and
18431         associated setting code.
18432
18433 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
18434
18435         PR target/35540
18436         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
18437         predicate for operand 1.
18438         (paritysi2_cmp): Use register_operand predicate for operand 2.
18439         Use earlyclobber modifier for operand 1.  Remove support for
18440         memory operands.
18441         (paritydi2_cmp): Use register_operand predicate for operand 3.
18442         Use earlyclobber modifier for operand 1.  Remove support for
18443         memory operands.
18444
18445 2008-03-11  Paul Brook  <paul@codesourcery.com>
18446             Vladimir Prus  <vladimir@codesourcery.com>
18447
18448         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
18449         (arm_compute_save_reg0_reg12_mask): Always
18450         check if register 11 must be saved.  Always safe hard frame pointer
18451         when frame_pointer_needeed.
18452         (arm_compute_save_reg_mask): Save IP and PC
18453         only with apcs frames.
18454         (arm_output_epilogue): Adjust Thumb2 codepath to
18455         be also invoked and work for ARM non-apcs frames.
18456         (arm_expand_prologue): Don't bother saving IP
18457         for non-apcs frame, since it's not clobbered by
18458         prologue code.  Implement non-apcs frame
18459         layout.
18460
18461 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
18462
18463         PR rtl-optimization/35281
18464         * expr.c (convert_move): Use a new pseudo for the intermediate
18465         from_mode->word_mode result.
18466
18467 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
18468
18469         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
18470         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
18471         * toplev.c (compile_file): Don't call it.
18472
18473 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
18474
18475         PR middle-end/35526
18476         * expr.c (store_expr): Call emit_block_move if the mode
18477         of "temp" RTX is BLKmode.
18478
18479 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18480             Richard Guenther  <rguenther@suse.de>
18481
18482         PR tree-optimization/31358
18483         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
18484         the step with a NULL_TREE.
18485         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
18486         to sizetype if type is a pointer type.
18487         (add_candidate_1): Don't convert the base and step to
18488         the generic type if the orginal type is a pointer type.
18489         (add_iv_value_candidates): Use sizetype for the step
18490         if type is a pointer type.
18491         (cand_value_at): Likewise.
18492         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
18493         for pointer types.
18494         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
18495         Don't convert the tem affine to the type.
18496         (add_elt_to_tree): Use sizetype for the step if a pointer.
18497         Use POINTER_PLUS_EXPR for pointers.
18498         (aff_combination_to_tree): Use sizetype for the step if a
18499         pointer.
18500
18501 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
18502
18503         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
18504         Remove commutativity hint.
18505
18506 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
18507
18508         PR c/35438
18509         PR c/35439
18510         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
18511         errorneous type.  Check that v is a VAR_DECL.
18512
18513         PR middle-end/35099
18514         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
18515
18516 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
18517
18518         PR tree-optimization/35494
18519         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
18520         may be overriden at link and run time.
18521
18522 2008-03-10  Richard Guenther  <rguenther@suse.de>
18523
18524         PR tree-optimization/34677
18525         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
18526         (poolify_tree): Likewise.
18527         (modify_expr_template): Likewise.
18528         (poolify_modify_stmt): Likewise.
18529         (insert_fake_stores): Handle all component-ref style stores
18530         in addition to INDIRECT_REF.  Also handle complex types.
18531         Do not poolify the inserted load.
18532         (realify_fake_stores): Do not rebuild the tree but only
18533         make it a SSA_NAME copy.
18534         (init_pre): Remove initialzation of modify_expr_template.
18535         Do not allocate modify_expr_node_pool.
18536         (fini_pre): Do not free modify_expr_node_pool.
18537
18538 2008-03-10  Paul Brook  <paul@codesourcery.com>
18539
18540         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
18541         to avoid conflicts.
18542
18543 2008-03-10  Paul Brook  <paul@codesourcery.com>
18544             Mark Shinwell  <shinwell@codesourcery.com>
18545
18546         * config/arm/cortex-r4.md: New.
18547         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
18548         insn attributes.
18549         * config/arm/arm.md: Include cortex-r4.md.
18550         (insn): Add smmls, sdiv and udiv values.
18551         (generic_sched): Don't use generic scheduling for Cortex-R4.
18552         (arm_issue_rate): New function.
18553         (TARGET_SCHED_ISSUE_RATE): Define.
18554
18555 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
18556
18557         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
18558
18559 2008-03-10  Richard Guenther  <rguenther@suse.de>
18560
18561         * tree-ssa-pre.c (get_sccvn_value): Simplify.
18562         (compute_avail): Do not add stmt uses to AVAIL_OUT.
18563
18564 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
18565
18566         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
18567         Set default to true.
18568
18569 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18570
18571         * c.opt (Wsynth): Deprecate.
18572         * doc/invoke.texi (Option Summary, Warning Options): Document
18573         -Wno-format-contains-nul.
18574
18575 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
18576
18577         PR target/35496
18578         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
18579         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
18580
18581 2008-03-09  Ira Rosen  <irar@il.ibm.com>
18582
18583         * config/rs6000/rs6000.c (builtin_description): Rename vector
18584         left shift operations.
18585         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
18586         (altivec_vsl<VI_char>): Rename to ...
18587         (ashl<mode>3): ... new name.
18588         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
18589         gen_ashlv4si3.
18590         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
18591
18592 2008-03-08  Richard Guenther  <rguenther@suse.de>
18593
18594         * coverage.h (tree_coverage_counter_addr): Declare.
18595         * coverage.c (tree_coverage_counter_addr): New function.
18596         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
18597         before using again.
18598         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
18599         (tree_gen_one_value_profiler): Likewise.
18600         (tree_gen_ic_profiler): Likewise.
18601         (tree_gen_average_profiler): Likewise.
18602         (tree_gen_ior_profiler): Likewise.
18603
18604 2008-03-08  Richard Guenther  <rguenther@suse.de>
18605
18606         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
18607         (vn_binary_op_insert): Likewise.
18608         (vn_unary_op_lookup): Likewise.
18609         (vn_unary_op_insert): Likewise.
18610         (vn_nary_op_lookup): Declare.
18611         (vn_nary_op_insert): Likewise.
18612         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
18613         and binary hashes, use a single obstack for unary_op_pool
18614         and binary_op_pool.
18615         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
18616         a single struct vn_nary_op_s.  Store tree code length and
18617         a variable number of operands.
18618         (struct vn_reference_op_struct): Remove unused op2.
18619         (vn_reference_op_eq): Do not compare op2.
18620         (vn_reference_op_compute_hash): Do not compute hash of op2.
18621         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
18622         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
18623         with vn_nary_op_compute_hash.
18624         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
18625         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
18626         vn_nary_op_lookup.
18627         (vn_unary_op_insert, vn_binary_op_insert): Replace with
18628         vn_nary_op_insert.
18629         (visit_unary_op): Call nary functions.
18630         (visit_binary_op): Likewise.
18631         (process_scc): Adjust for struct vn_tables_s changes.
18632         (allocate_vn_table): Likewise.
18633         (free_vn_table): Likewise.
18634         * tree-vn.c (vn_add): Call nary functions.
18635         (vn_lookup): Likewise.
18636
18637 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
18638
18639         PR target/35498
18640         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
18641         wdst back after sync_compare_and_swapqhi_internal.
18642
18643 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
18644
18645         PR target/22152
18646         * config/i386/i386-modes.def (V1DI): New vector mode.
18647         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
18648         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
18649         (MMXMODE248): Ditto.
18650         (MMXMODE): Add V1DI mode.
18651         (mmxvecsize): Change DI mode to V1DI mode.
18652         ("mov<mode>): Use MMXMODEI8 mode iterator.
18653         ("*mov<mode>_internal_rex64"): Ditto.
18654         ("*mov<mode>_internal"): Ditto.
18655         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
18656         ("mmx_sub<mode>3"): Ditto.
18657         ("mmx_adddi3"): Remove insn pattern.
18658         ("mmx_subdi3"): Ditto.
18659         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
18660         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
18661         ("mmx_ashl<mode>3"): Ditto.
18662         ("mmx_lshrdi3"): Remove insn pattern.
18663         ("mmx_ashldi3"): Ditto.
18664         * config/i386/i386.c (classify_argument): Handle V1DImode.
18665         (function_arg_advance_32): Ditto.
18666         (function_arg_32): Ditto.
18667         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
18668         mmx_addv1di3 insn pattern.
18669         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
18670         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
18671         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
18672         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
18673         Remove definitions of built-in functions.
18674         (V1DI_type_node): New node.
18675         (v1di_ftype_v1di_int): Ditto.
18676         (v1di_ftype_v1di_v1di): Ditto.
18677         (v2si_ftype_v2si_si): Ditto.
18678         (v4hi_ftype_v4hi_di): Remove node.
18679         (v2si_ftype_v2si_di): Ditto.
18680         (ix86_init_mmx_sse_builtins): Handle V1DImode.
18681         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
18682         Redefine builtins using def_builtin_const with *_ftype_*_int node.
18683         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
18684         Add new builtins using def_builtin_const.
18685         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
18686         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
18687         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
18688         * config/i386/mmintrin.h (__v1di): New typedef.
18689         (_mm_add_si64): Cast arguments to __v1di type.
18690         (_mm_sub_si64): Ditto.
18691         (_mm_sll_pi16): Cast __count to __v4hi type.
18692         (_mm_sll_pi32): Cast __count to __v2si type.
18693         (_mm_sll_si64): Cast arguments to __v1di type.
18694         (_mm_srl_pi16): Cast __count to __v4hi type.
18695         (_mm_srl_pi32): Cast __count to __v2si type.
18696         (_mm_srl_si64): Cast arguments to __v1di type.
18697         (_mm_sra_pi16): Cast __count to __v4hi type.
18698         (_mm_sra_pi32): Cast __count to __v2si type.
18699         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
18700         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
18701         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
18702         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
18703         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
18704         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
18705         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
18706         (_mm_srai_pi32): Use __builtin_ia32_psradi.
18707         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
18708         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
18709         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
18710         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
18711
18712 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
18713
18714         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
18715
18716 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
18717
18718         PR target/35373
18719         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
18720         reg+const addressing for Altivec modes.  Don't generate reg+reg
18721         addressing for TFmode or TDmode quantities.
18722
18723 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
18724
18725         * c-common.c (vector_types_convertible_p): Call langhook
18726         instead of comptypes.
18727
18728 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18729
18730         PR tree-opt/35402
18731         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
18732         integral and scalar float variables which have a
18733         NULL DECL_INITIAL.
18734
18735 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
18736
18737         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
18738         dwarf_register_span hook when emitting unwind information for
18739         register-to-memory saves.
18740         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
18741         (rs6000_frame_related): Remove call to spe_synthesize_frame.
18742
18743 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
18744
18745         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
18746         for the same VAR_DECL.
18747
18748 2008-03-06  Tom Tromey  <tromey@redhat.com>
18749
18750         * treelang: Delete.
18751         * doc/standards.texi (Standards): Don't mention treelang.
18752         * doc/invoke.texi (Overall Options): Don't mention treelang.
18753         * doc/install.texi (Prerequisites): Don't mention bison or
18754         treelang.
18755         (Configuration): Don't mention treelang.
18756         (Building): Likewise.
18757         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
18758
18759 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
18760
18761         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
18762         word-extractions out of a multi-word object.
18763
18764 2008-03-06  Richard Guenther  <rguenther@suse.de>
18765
18766         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
18767         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
18768         result type and precision.
18769         * expr.c (get_inner_reference): Set unsignedp based on the result
18770         type of BIT_FIELD_REF.
18771         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
18772         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
18773         (try_instantiate_multiple_fields): Likewise.  Use the correct type
18774         for BIT_FIELD_REF.
18775         (sra_build_assignment): Likewise.
18776         (sra_build_elt_assignment): Likewise.
18777         (sra_explode_bitfield_assignment): Likewise.
18778         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
18779         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
18780         set BIT_FIELD_REF_UNSIGNED.
18781         (vectorizable_load): Likewise.
18782
18783 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
18784
18785         * cse.c (cse_extended_basic_block): Invalidate artificial defs
18786         at bb start.
18787
18788 2008-03-06  Richard Guenther  <rguenther@suse.de>
18789
18790         * alias.c (struct alias_set_entry): Move has_zero_child field
18791         to pack with alias_set.
18792
18793 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
18794
18795         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
18796         32bit host.
18797
18798 2008-03-05  Ian Lance Taylor  <iant@google.com>
18799
18800         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
18801
18802 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
18803
18804         * fwprop.c (update_df): Support width and offset parameters of
18805         df_ref_create.
18806         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
18807         global_conflicts): Change DF_REF_EXTRACT to either
18808         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18809         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18810         * df-scan.c (df_ref_record, df_defs_record,
18811         df_ref_create_structure, df_def_record_1, df_uses_record,
18812         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
18813         df_bb_refs_collect, df_entry_block_defs_collect,
18814         df_exit_block_uses_collect): Support new width and offset fields.
18815         (ref_extract_pool): New storage pool.
18816         (df_free_ref): New function.
18817         (df_reg_chain_unlink, df_free_collection_rec,
18818         df_sort_and_compress_refs): Call df_free_ref.
18819         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
18820         of df_ref_extract.
18821         (df_ref_create_structure): Allocate df_ref_extract if offset and
18822         width fields are used.
18823         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
18824         (df_uses_record): Get offset and width from ZERO_EXTRACT
18825         and SIGN_EXTRACT.
18826         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
18827         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18828         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18829         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
18830         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
18831         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
18832         (df_ref_extract): New structure.
18833         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
18834         (df_ref_create): Add width and offset parameters.
18835
18836 2008-03-05  Richard Guenther  <rguenther@suse.de>
18837
18838         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18839         Use ranges_overlap_p.
18840         (offset_overlaps_with_access): Rename
18841         to ranges_overlap_p and move ...
18842         * tree-flow-inline.h (ranges_overlap_p): ... here.
18843
18844         * tree.h (get_inner_reference, handled_component_p): Update
18845         comments.
18846
18847         * tree.h (record_component_aliases, get_alias_set,
18848         alias_sets_conflict_p, alias_sets_must_conflict_p,
18849         objects_must_conflict_p): Move declarations ...
18850         * alias.h (record_component_aliases, get_alias_set,
18851         alias_sets_conflict_p, alias_sets_must_conflict_p,
18852         objects_must_conflict_p): ... here.
18853         Include coretypes.h.
18854         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
18855
18856 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
18857
18858         * cfg.c: Include tree-flow.h.
18859         (remove_edge_raw): Call redirect_edge_var_map_clear.
18860         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
18861         * tree-flow-inline.h (redirect_edge_var_map_def): New.
18862         (redirect_edge_var_map_result): New.
18863         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
18864         PENDING_STMT use with redirect_edge_var_map_*.
18865         * tree-ssa.c (edge_var_maps): New definition.
18866         (redirect_edge_var_map_add): New.
18867         (redirect_edge_var_map_clear): New.
18868         (redirect_edge_var_map_dup): New.
18869         (redirect_edge_var_map_vector): New.
18870         (redirect_edge_var_map_destroy): New.
18871         (ssa_redirect_edge): Replace PENDING_STMT use with
18872         redirect_edge_var_map_*.
18873         (flush_pending_stmts): Same.
18874         (delete_tree_ssa): Destroy edge var map.
18875         * tree-flow.h (struct _edge_var_map): New.
18876         Define edge_var_map vector type.
18877         Declare redirect_edge_var_map_* prototypes.
18878         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
18879         * tree-cfg.c (reinstall_phi_args): Replace
18880         PENDING_STMT use with redirect_edge_var_map_*.
18881
18882 2008-03-05  Richard Guenther  <rguenther@suse.de>
18883
18884         PR tree-optimization/35472
18885         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
18886         whose single use_stmt has a overlapping set of loaded and
18887         stored symbols as that use_stmt might be a noop assignment then.
18888
18889 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
18890
18891         * gthr-rtems.h: Implement __gthread_mutex_destroy.
18892
18893 2008-03-05  Richard Guenther  <rguenther@suse.de>
18894
18895         PR c++/35336
18896         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
18897         should be constants.
18898         * tree-cfg.c (verify_expr): Verify it.
18899         * fold-const.c (fold_truthop): Remove code generating
18900         BIT_FIELD_REFs of structure bases.
18901         (fold_binary): Likewise.
18902         (fold_ternary): Position and size of BIT_FIELD_REFs are
18903         always host integers.
18904         (make_bit_field_ref): Remove.
18905         (optimize_bit_field_compare): Remove.
18906         (all_ones_mask_p): Remove.
18907
18908 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
18909
18910         PR gcc/33009
18911         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
18912         (split_block_and_df_analyze): New. Split basic block and rebuild
18913         dataflow.
18914         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
18915         SPLIT_BLOCK.
18916         (split_pattern_seq): Likewise.
18917         (erase_matching_seqs): Likewise.
18918         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
18919
18920 2008-03-04  Geoff Keating  <geoffk@apple.com>
18921
18922         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
18923         declaration and code.
18924         (tree_invalid_nonnegative_warnv_p): Likewise.
18925
18926 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
18927
18928         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
18929         examples.  Truncate option-names then causing overfull hbox.
18930
18931 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18932
18933         PR target/35222
18934         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
18935         on hpux10.
18936         * configure: Rebuilt.
18937
18938 2008-03-04  Rafael Espindola  <espindola@google.com>
18939
18940         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
18941         (tree_unary_nonnegative_warnv_p): New.
18942         (tree_binary_nonnegative_warnv_p): New.
18943         (tree_single_nonnegative_warnv_p): New.
18944         (tree_invalid_nonnegative_warnv_p): New.
18945         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
18946
18947 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
18948
18949         PR 28322
18950         * opts.c (handle_option): Postpone 'unknown option' errors only for
18951         warning options.
18952
18953 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
18954
18955         PR target/35453
18956         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
18957         (_SIDD_XXX): This.
18958
18959 2008-03-04  Rafael Espindola  <espindola@google.com>
18960
18961         * fold-const.c (tree_unary_nonzero_warnv_p): New.
18962         (tree_binary_nonzero_warnv_p): New.
18963         (tree_single_nonzero_warnv_p): New.
18964         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
18965
18966 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
18967
18968         PR middle-end/35456
18969         * fold-const.c (fold_cond_expr_with_comparison): Prevent
18970         transformations for modes that have signed zeros.
18971         * ifcvt.c (noce_try_abs): Ditto.
18972
18973 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
18974
18975         * config/i386/i386.c (override_options): Force
18976         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
18977
18978 2008-03-04  Jan Hubicka  <jh@suse.cz>
18979
18980         PR c++/35262
18981         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
18982         in last commit.
18983
18984 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
18985
18986         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
18987         label to probe the stack.
18988
18989 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
18990
18991         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
18992         (__gthr_win32_mutex_destroy): Declare.
18993         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
18994         __gthr_win32_mutex_destroy.
18995         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
18996
18997 2008-03-03  Jan Hubicka  <jh@suse.cz>
18998
18999         PR c++/35262
19000         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
19001         aggressive on inlining cold calls.
19002
19003 2008-03-03  Richard Guenther  <rguenther@suse.de>
19004
19005         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
19006         struct copies into the expression table.
19007         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
19008         (try_to_simplify): Likewise.
19009         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
19010         integral and pointer arguments which do not change the
19011         precision to NOP_EXPRs.
19012         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
19013         VIEW_CONVERT_EXPR case.
19014
19015 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
19016
19017         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
19018         defined in a loop at depth 0 is invariant.
19019         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
19020         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
19021         be called at loop depth 0.
19022
19023 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
19024
19025         PR driver/35420
19026         * gcc.c (process_command): Update copyright notice dates.
19027         * gcov.c (print_version): Likewise.
19028         * gcov-dump.c (print_version): Likewise.
19029         * mips-tfile.c (main): Likewise.
19030         * mips-tdump.c (main): Likewise.
19031
19032 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19033
19034         PR 24924
19035         * c-common.c (flag_permissive): Delete.
19036         (constant_expression_warnings): Check flags first.
19037         (constant_expression_error): New.
19038         * c-common.h (flag_permissive): Delete.
19039         (constant_expression_error): Declare.
19040         * flags.h (flag_permissive): Declare. Update description.
19041         * diagnostic.c (pedwarn): Update.
19042         (permerror): New.
19043         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
19044         (permissive_error_kind): New.
19045         * toplev.c (flag_permissive): Define. Update description.
19046         * toplev.h (permissive_error_kind): Declare.
19047         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
19048         (pedwarn_c90): Use pedantic_warning_kind.
19049         * c-opts.c (c_common_post_options): flag_permissive does not affect
19050         flag_pedantic_errors.
19051
19052 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
19053
19054         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
19055         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
19056         __absvsi2, __absvDI2): Use unsigned arithmetic.
19057
19058 2008-03-02  Andi Kleen  <ak@suse.de>
19059             Richard Guenther  <rguenther@suse.de>
19060
19061         * struct-equiv.c: Remove file.
19062         * cfg_cleanup.c (condjump_equiv_p): Remove.
19063         * Makefile.in (OBJS-common): Remove struct-equiv.o.
19064         (struct-equiv.o): Remove rule.
19065         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
19066         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
19067         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
19068
19069 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19070
19071         * ifcvt.c (noce_process_if_block): Try to handle only the then
19072         block if the else block exists but isn't suitable.
19073
19074 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19075
19076         PR gcc/35063
19077         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
19078         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
19079         regression from previous patch.
19080
19081 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
19082
19083         PR gcc/35063
19084         * gthr.h: Add __gthread_mutex_destroy as a function that must be
19085         implemented.
19086         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
19087         * gthr-single.h (__gthread_mutex_destroy): Likewise.
19088         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
19089         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
19090         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
19091         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
19092         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
19093         (__gthread_mutex_destroy_function): Rename to
19094         __gthread_mutex_destroy.
19095         * gthr-dce.h (__gthread_mutex_destroy): Call
19096         pthread_mutex_destroy.
19097         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
19098         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
19099         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
19100
19101 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19102
19103         * df-scan.c (df_ref_chain_change_bb): Simplify.
19104         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
19105         set_block_for_insn if there's any change.
19106         * df.h ((df_insn_change_bb): Fix prototype.
19107         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
19108         df_insn_change_bb, don't call set_block_for_insn.
19109         * emit-rtl.c (reorder_insns): Likewise.
19110         * haifa-sched.c (move_insn): Likewise.
19111
19112 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19113
19114         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
19115
19116 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
19117
19118         * tree-flow-inline.h (next_readonly_imm_use): Return
19119         NULL_USE_OPERAND_P after the end.
19120
19121 2008-03-01  Richard Guenther  <rguenther@suse.de>
19122
19123         PR tree-optimization/35411
19124         * tree-sra.c (sra_build_assignment): Split conversion to
19125         final type to a separate statement if we are not assigning
19126         to a register.
19127
19128 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19129
19130         * fold-const.c (fold_convertible_p): Correct the logic to follow
19131         that in fold_convert().
19132
19133 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
19134
19135         PR c++/35315
19136         * tree-inline.c (build_duplicate_type): When we make a
19137         duplicate type, make it unique in the canonical types system.
19138
19139 2008-02-29  Tom Tromey  <tromey@redhat.com>
19140
19141         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
19142         input_file_stack_history, input_file_stack_restored): Remove.
19143         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
19144         * input.h (struct file_stack): Remove.
19145         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
19146         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
19147         Likewise.
19148         * diagnostic.h (struct diagnostic_context) <last_module>: Change
19149         type.
19150         (diagnostic_last_module_changed): Add 'map' argument.
19151         (diagnostic_set_last_function): Likewise.
19152         * diagnostic.c (undiagnostic_report_current_module): Iterate using
19153         line map, not input_file_stack.
19154         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
19155
19156 2008-02-29  Paul Brook  <paul@codesourcery.com>
19157
19158         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
19159
19160 2008-02-29  Paul Brook  <paul@codesourcery.com>
19161
19162         * config/arm/ieee754-df.S (muldf3): Use RET macros.
19163
19164 2008-02-29  Richard Guenther  <rguenther@suse.de>
19165
19166         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
19167         vn_lookup_or_add.
19168         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
19169         value for comparing for a store match.
19170         (simplify_unary_expression): Do nothing for SSA_NAMEs.
19171         (try_to_simplify): Do not do a full-blown reference lookup.
19172
19173 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
19174
19175         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
19176         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
19177
19178         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
19179
19180 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
19181
19182         * tree-loop-linear.c (try_interchange_loops): Compare memory access
19183         strides against cache sizes.
19184
19185 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
19186
19187         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
19188         constant to fpul.
19189
19190 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
19191
19192         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
19193         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
19194         is smaller than the original promoted value.
19195         (simplify_subreg): If OP is a SUBREG, try to preserve its
19196         SUBREG_PROMOTED_VAR_P information.
19197
19198 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
19199
19200         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
19201         (VN_INFO_GET): Allocate new objects on the obstack.
19202         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
19203         for rpo_numbers_temp, for consistency.
19204         (free_scc_vn): Free the obstack.
19205
19206 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
19207
19208         * doc/invoke.texi: Document -ftree-loop-distribution.
19209         * tree-loop-distribution.c: New.
19210         * tree-pass.h (pass_loop_distribution): New.
19211         * graphds.h (struct graph): Add htab_t indices.
19212         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
19213         * tree-vectorizer.c (rename_variables_in_loop): Extern.
19214         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
19215         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
19216         * tree-data-ref.c (debug_data_dependence_relations): New.
19217         (dump_data_dependence_relation): Also print data references.
19218         (free_data_ref): Extern.
19219         (same_access_functions): Moved...
19220         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
19221         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
19222         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
19223         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
19224         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
19225         (stmts_from_loop): Skip LABEL_EXPR.
19226         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
19227         New.
19228         (build_rdg): Initialize rdg->indices htab.
19229         (free_rdg, stores_from_loop, ref_base_address,
19230         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
19231         have_similar_memory_accesses_1, ref_base_address_1,
19232         remove_similar_memory_refs): New.
19233         * tree-data-ref.h: Depend on tree-chrec.h.
19234         (debug_data_dependence_relations, free_data_ref): Declared.
19235         (same_access_functions): ... here.
19236         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
19237         New.
19238         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
19239         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
19240         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
19241         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
19242         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
19243         rdg_vertex_for_stmt): Declared.
19244         (struct rdg_edge): Add level.
19245         (RDGE_LEVEL): New.
19246         (free_rdg, stores_from_loop, remove_similar_memory_refs,
19247         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
19248         Declared.
19249         (rdg_has_similar_memory_accesses): New.
19250         * tree-vect-analyze.c: Remove unused static decls.
19251         * lambda.h (dependence_level): New.
19252         * common.opt (ftree-loop-distribution): New.
19253         * tree-flow.h (mark_virtual_ops_in_bb,
19254         slpeel_tree_duplicate_loop_to_edge_cfg,
19255         rename_variables_in_loop): Declared.
19256         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
19257         (OBJS-common): Add tree-loop-distribution.o.
19258         (tree-loop-distribution.o): New rule.
19259         * tree-cfg.c (mark_virtual_ops_in_bb): New.
19260         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
19261         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
19262
19263 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
19264
19265         PR target/33963
19266         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
19267         other than structures and unions.
19268
19269 2008-02-28  Richard Guenther  <rguenther@suse.de>
19270
19271         Revert:
19272         2008-02-26  Richard Guenther  <rguenther@suse.de>
19273
19274         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19275         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19276         (lookup_decl_from_uid): Declare.
19277         (remove_decl_from_map): Likewise.
19278         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19279         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19280         (decl_for_uid_map): New global hashtable mapping DECL_UID
19281         to the decl tree.
19282         (init_ttree): Allocate it.
19283         (insert_decl_to_uid_decl_map): New helper function.
19284         (make_node_stat): Insert new decls into the map.
19285         (copy_node_stat): Likewise.
19286         (lookup_decl_from_uid): New function.
19287         (remove_decl_from_map): Likewise.
19288         (print_decl_for_uid_map_statistics): New helper.
19289         (dump_tree_statistics): Call it.
19290
19291         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19292         (referenced_var_iterator): Adjust.
19293         (FOR_EACH_REFERENCED_VAR): Adjust.
19294         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19295         (num_referenced_vars): Adjust.
19296         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19297         (first_referenced_var): Remove.
19298         (end_referenced_vars_p): Likewise.
19299         (next_referenced_var): Likewise.
19300         (referenced_var_iterator_set): New helper function.
19301         * tree-dfa.c (referenced_var_lookup): Adjust.
19302         (referenced_var_check_and_insert): Likewise.
19303         (remove_referenced_var): Likewise.
19304         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19305         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19306         (verify_call_clobbering): Likewise.
19307         (verify_memory_partitions): Likewise.
19308         (init_tree_ssa): Allocate bitmap instead of hashtable for
19309         referenced_vars.
19310         (delete_tree_ssa): Adjust.
19311         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19312         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19313         (compute_tag_properties): Likewise.
19314         (set_initial_properties): Likewise.
19315         (find_partition_for): Likewise.
19316         (update_reference_counts): Likewise.
19317         (dump_may_aliases_for): Likewise.
19318         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19319         (add_call_clobber_ops): Likewise.
19320         (add_call_read_ops): Likewise.
19321         (get_asm_expr_operands): Likewise.
19322         * tree-into-ssa.c (dump_decl_set): Likewise.
19323         (update_ssa): Likewise.
19324         * tree-sra.c (scan_function): Likewise.
19325         (decide_instantiations): Likewise.
19326         (scalarize_parms): Likewise.
19327         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19328         (dsa_named_for): Likewise.
19329         * tree-ssa-structalias.c (update_alias_info): Likewise.
19330         (merge_smts_into): Likewise.
19331
19332 2008-02-27  David Daney  <ddaney@avtrex.com>
19333
19334         PR target/34409
19335         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
19336         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
19337         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
19338         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
19339         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
19340
19341 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
19342
19343         PR target/25477
19344         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
19345         (BUILT_IN_NEXTTOWARD): Remove.
19346         (BUILT_IN_NEXTTOWARDF): Ditto.
19347         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
19348         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
19349
19350 2008-02-27  Tom Tromey  <tromey@redhat.com>
19351
19352         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
19353         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
19354
19355 2008-02-27  Jan Beulich  <jbeulich@novell.com>
19356
19357         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
19358         update the respective field on newdecl.
19359
19360 2008-02-27  Revital Eres  <eres@il.ibm.com>
19361
19362         PR rtl-optimization/34999
19363         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
19364         crossing edges that ends with a call insn.
19365         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
19366         call insn and clear the EDGE_CROSSING flag of the crossing edge
19367         when fixing fallthru edges.
19368
19369 2008-02-27  Richard Guenther  <rguenther@suse.de>
19370
19371         PR middle-end/35390
19372         * fold-const.c (fold_unary): Return the correct argument,
19373         converted to the result type.
19374
19375 2008-02-27  Richard Guenther  <rguenther@suse.de>
19376
19377         PR middle-end/34971
19378         * expr.c (expand_expr_real_1): Assert on rotates that operate
19379         on partial modes.
19380         * fold-const.c (fold_binary): Use the types precision, not the
19381         bitsize of the mode if folding rotate expressions.  Build rotates
19382         only for full modes.
19383
19384 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
19385
19386         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
19387         and CPP_PRAGMA_EOL.
19388         * c-pragma.c (pragma_ns_name): New typedef.
19389         (registered_pp_pragmas): New variable.
19390         (c_pp_lookup_pragma): New function.
19391         (c_register_pragma_1): If flag_preprocess_only, do nothing
19392         for non-expanded pragmas, for expanded ones push pragma's
19393         namespace and name into registered_pp_pragmas vector.
19394         (c_invoke_pragma_handler): Register OpenMP pragmas even when
19395         flag_preprocess_only, don't register GCC pch_preprocess
19396         pragma if flag_preprocess_only.
19397         * c-opts.c (c_common_init): Call init_pragma even if
19398         flag_preprocess_only.
19399         * c-pragma.c (c_pp_lookup_pragma): New prototype.
19400         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
19401         cpp_register_pragma if flag_preprocess_only.
19402
19403 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19404
19405         PR c/28800
19406         * c-parser.c (c_parser_translation_unit): Warn for empty
19407         translation unit, not empty source file.
19408
19409 2008-02-26  Paul Brook  <paul@codesourcery.com>
19410
19411         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
19412         operand for Thumb-2.
19413         * config/arm/arm.h (reg_class): Add CORE_REGS.
19414         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
19415         (BASE_REG_CLASS): Use CORE_REGS.
19416         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
19417         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
19418         (REGNO_OK_FOR_INDEX_P): Exclude SP.
19419         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
19420         ARM_REGNO_OK_FOR_INDEX_P.
19421         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
19422         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
19423         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
19424         (ldm/stm peepholes): Ditto.
19425         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
19426         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
19427         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
19428         * config/arm/constraints.md: Enable "k" constraint on ARM.
19429
19430 2008-02-27  Ben Elliston  <bje@au.ibm.com>
19431
19432         * config/rs6000/rs6000.c: Annotate cache line size field in all
19433         instances of struct processor_costs.
19434
19435 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
19436
19437         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
19438         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
19439         jump_bypass): New counters.
19440         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
19441         * dce.c (gate_ud_dce): Same.
19442         (gate_fast_dce): Same.
19443         * dse.c (gate_dse1): New function.
19444         (gate_dse2): New function.
19445         (gate_dse): Merge results of new gate functions.
19446         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
19447         (gate_handle_jump_bypass): Add dbg_cnt.
19448         (gate_handle_gcse): Add dbg_cnt.
19449         * ifcvt.c (gate_handle_if_conversion): Same.
19450         (gate_handle_if_after_combine): Same.
19451         (gate_handle_if_after_reload): Same.
19452         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
19453
19454 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
19455
19456         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
19457         line sizes.
19458         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
19459
19460 2008-02-26  Jason Merrill  <jason@redhat.com>
19461
19462         PR c++/35315
19463         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
19464         alone if it's the naming decl for the type's main variant.
19465
19466 2008-02-26  Tom Tromey  <tromey@redhat.com>
19467
19468         * system.h (USE_MAPPED_LOCATION): Poison.
19469         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
19470         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
19471         (make_goto_expr_edges): Likewise.
19472         (remove_bb): Likewise.
19473         (execute_warn_function_return): Likewise.
19474         * basic-block.h (struct edge_def) <goto_locus>: Change type to
19475         location_t.
19476         * c-common.c (fname_decl): Remove old location code.
19477         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
19478         location code.
19479         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
19480         variant.
19481         (ASM_INPUT_SOURCE_LOCATION): Likewise.
19482         (gen_rtx_ASM_INPUT): Likewise.
19483         (gen_rtx_ASM_INPUT_loc): Likewise.
19484         (get_rtx_asm_OPERANDS): Remove.
19485         * cfglayout.c (insn_locators_alloc): Remove old location code.
19486         (set_curr_insn_source_location): Likewise.
19487         (curr_insn_locator): Likewise.
19488         * print-tree.c (print_node): Remove old location code.
19489         * tree-mudflap.c (mf_varname_tree): Remove old location code.
19490         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
19491         * cfgexpand.c (expand_gimple_cond_expr): Don't use
19492         location_from_locus.
19493         (construct_exit_block): Remove old location code.
19494         * emit-rtl.c (force_next_line_note): Remove old location code.
19495         * profile.c (branch_prob): Remove old location code.
19496         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
19497         LOC_LINE): Remove old-location variants.
19498         * langhooks.c (lhd_print_error_function): Remove old location
19499         code.
19500         * configure, config.in: Rebuilt.
19501         * configure.ac (--enable-mapped-location): Remove.
19502         * c-decl.c (c_init_decl_processing): Remove old location code.
19503         (finish_function): Likewise.
19504         * recog.c (decode_asm_operands): Remove old location code.
19505         * c-pch.c (c_common_read_pch): Remove old location code.
19506         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
19507         variants.
19508         * gimple-low.c (lower_function_body): Remove old location code.
19509         * toplev.c (unknown_location): Remove.
19510         (push_srcloc): Remove old-location variant.
19511         (process_options): Remove old location code.
19512         (lang_dependent_init): Likewise.
19513         * input.h (UNKNOWN_LOCATION): Move definition.
19514         (location_t): Undeprecate.
19515         (source_locus): Remove.
19516         (location_from_locus): Remove.
19517         (struct location_s): Remove.
19518         Remove all old-location code.
19519         (input_line, input_filename): Remove.
19520         * final.c (final_scan_insn): Remove old location code.
19521         * diagnostic.c (diagnostic_build_prefix): Remove
19522         USE_MAPPED_LOCATION test.
19523         * tree.h (gimple_stmt) <locus>: Now a location_t.
19524         (tree_exp) <locus>: Likewise.
19525         (DECL_IS_BUILTIN): Remove old-location variant.
19526         (annotate_with_file_line, annotate_with_locus): Likewise.
19527         (expr_locus, set_expr_locus): Update.
19528         * tree.c (build1_stat): Remove old location code.
19529         (last_annotated_node): Remove.
19530         (annotate_with_file_line): Remove old-location variant.
19531         (annotate_with_locus): Likewise.
19532         (expr_location): Remove old location code.
19533         (set_expr_location): Likewise.
19534         (expr_has_location): Likewise.
19535         (expr_locus): Likewise.
19536         (set_expr_locus): Likewise.
19537         (expr_filename): Don't use location_from_locus.
19538         (expr_lineno): Likewise.
19539         * rtl-error.c (location_for_asm): Remove old location code.
19540         * c-lex.c (cb_line_change): Remove old location code.
19541         (fe_file_change): Likewise.
19542         (cb_def_pragma): Likewise.
19543         (c_lex_with_flags): Likewise.
19544         * gengtype.c (do_typedef): Don't special-case location types.
19545         (define_location_structures): Remove.
19546         (main): Don't call define_location_structures.
19547         * tree-pretty-print.c (dump_implicit_edges): Remove old location
19548         code.
19549
19550 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19551
19552         PR 26264
19553         * builtins.def (BUILT_IN_STDARG_START): Remove.
19554         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
19555         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
19556         * tree-inline.c (inline_forbidden_p_1): Likewise.
19557
19558 2008-02-26  Richard Guenther  <rguenther@suse.de>
19559
19560         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19561         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19562         (lookup_decl_from_uid): Declare.
19563         (remove_decl_from_map): Likewise.
19564         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19565         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19566         (decl_for_uid_map): New global hashtable mapping DECL_UID
19567         to the decl tree.
19568         (init_ttree): Allocate it.
19569         (insert_decl_to_uid_decl_map): New helper function.
19570         (make_node_stat): Insert new decls into the map.
19571         (copy_node_stat): Likewise.
19572         (lookup_decl_from_uid): New function.
19573         (remove_decl_from_map): Likewise.
19574         (print_decl_for_uid_map_statistics): New helper.
19575         (dump_tree_statistics): Call it.
19576
19577         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19578         (referenced_var_iterator): Adjust.
19579         (FOR_EACH_REFERENCED_VAR): Adjust.
19580         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19581         (num_referenced_vars): Adjust.
19582         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19583         (first_referenced_var): Remove.
19584         (end_referenced_vars_p): Likewise.
19585         (next_referenced_var): Likewise.
19586         (referenced_var_iterator_set): New helper function.
19587         * tree-dfa.c (referenced_var_lookup): Adjust.
19588         (referenced_var_check_and_insert): Likewise.
19589         (remove_referenced_var): Likewise.
19590         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19591         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19592         (verify_call_clobbering): Likewise.
19593         (verify_memory_partitions): Likewise.
19594         (init_tree_ssa): Allocate bitmap instead of hashtable for
19595         referenced_vars.
19596         (delete_tree_ssa): Adjust.
19597         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19598         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19599         (compute_tag_properties): Likewise.
19600         (set_initial_properties): Likewise.
19601         (find_partition_for): Likewise.
19602         (update_reference_counts): Likewise.
19603         (dump_may_aliases_for): Likewise.
19604         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19605         (add_call_clobber_ops): Likewise.
19606         (add_call_read_ops): Likewise.
19607         (get_asm_expr_operands): Likewise.
19608         * tree-into-ssa.c (dump_decl_set): Likewise.
19609         (update_ssa): Likewise.
19610         * tree-sra.c (scan_function): Likewise.
19611         (decide_instantiations): Likewise.
19612         (scalarize_parms): Likewise.
19613         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19614         (dsa_named_for): Likewise.
19615         * tree-ssa-structalias.c (update_alias_info): Likewise.
19616         (merge_smts_into): Likewise.
19617
19618 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19619
19620         PR 34351
19621         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
19622         * c-opts.c (c_common_handle_option): Wall enables
19623         Wvolatile-register-var.
19624         * common.opt: Move Wvolatile-register-var to...
19625         * c.opt: ...here.
19626
19627 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19628
19629         * common.opt (Wlarger-than=): New.
19630         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
19631         -Wlarger-than=.
19632         * opts.c (common_handle_option): Handle -Wlarger-than=.
19633         * optc-gen.awk: Likewise.
19634         * opth-gen.awk: Likewise.
19635         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
19636         * tree-optimize.c (tree_rest_of_compilation): Likewise.
19637
19638 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
19639
19640         * c-common.c (match_case_to_enum_1): Add appropriate
19641         OPT_W* parameter to warning.
19642         (c_do_switch_warnings): Likewise.
19643         * c-typeck.c (warning_init): Add one more parameter following
19644         'warning' function.
19645         (push_init_level): Update call to warning_init.
19646         (pop_init_level): Likewise.
19647         (add_pending_init): Likewise.
19648         (output_init_element: Likewise.
19649
19650 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19651
19652         PR 28322
19653         * toplev.c (toplev_main): If there are warnings or error, print
19654         errors for ignored options.
19655         * opts.c (ignored_options): New static variable.
19656         (postpone_unknown_option_error): New.
19657         (print_ignored_options): New.
19658         (handle_option): Postpone errors for unknown -Wno-* options.
19659         * opts.h (print_ignored_options): Declare.
19660
19661 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
19662
19663         * config/mips/mips.md (loadgp_blockage, blockage): Change type
19664         to "ghost".
19665
19666 2008-02-25  Richard Guenther  <rguenther@suse.de>
19667
19668         Revert:
19669         2008-02-25  Richard Guenther  <rguenther@suse.de>
19670
19671         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
19672         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
19673         (lookup_decl_from_uid): Declare.
19674         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19675         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19676         (decl_for_uid_map): New global hashtable mapping DECL_UID
19677         to the decl tree.
19678         (init_ttree): Allocate it.
19679         (insert_decl_to_uid_decl_map): New helper function.
19680         (make_node_stat): Insert new decls into the map.
19681         (copy_node_stat): Likewise.
19682         (lookup_decl_from_uid): New function.
19683         (print_decl_for_uid_map_statistics): New helper.
19684         (dump_tree_statistics): Call it.
19685
19686         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19687         (referenced_var_iterator): Adjust.
19688         (FOR_EACH_REFERENCED_VAR): Adjust.
19689         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19690         (num_referenced_vars): Adjust.
19691         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19692         (first_referenced_var): Remove.
19693         (end_referenced_vars_p): Likewise.
19694         (next_referenced_var): Likewise.
19695         (referenced_var_iterator_set): New helper function.
19696         * tree-dfa.c (referenced_var_lookup): Adjust.
19697         (referenced_var_check_and_insert): Likewise.
19698         (remove_referenced_var): Likewise.
19699         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19700         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19701         (verify_call_clobbering): Likewise.
19702         (verify_memory_partitions): Likewise.
19703         (init_tree_ssa): Allocate bitmap instead of hashtable for
19704         referenced_vars.
19705         (delete_tree_ssa): Adjust.
19706         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19707         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19708         (compute_tag_properties): Likewise.
19709         (set_initial_properties): Likewise.
19710         (find_partition_for): Likewise.
19711         (update_reference_counts): Likewise.
19712         (dump_may_aliases_for): Likewise.
19713         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19714         (add_call_clobber_ops): Likewise.
19715         (add_call_read_ops): Likewise.
19716         (get_asm_expr_operands): Likewise.
19717         * tree-into-ssa.c (dump_decl_set): Likewise.
19718         (update_ssa): Likewise.
19719         * tree-sra.c (scan_function): Likewise.
19720         (decide_instantiations): Likewise.
19721         (scalarize_parms): Likewise.
19722         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19723         (dsa_named_for): Likewise.
19724         * tree-ssa-structalias.c (update_alias_info): Likewise.
19725         (merge_smts_into): Likewise.
19726
19727 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19728
19729         PR fortran/29549
19730         * doc/invoke.texi (-fcx-limited-range): Document new option.
19731         * toplev.c (process_options): Handle -fcx-fortran-rules.
19732         * common.opt: Add documentation for -fcx-fortran-rules.
19733
19734 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
19735
19736         PR c/35162
19737         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
19738         actual behaviour and C99.
19739
19740 2008-02-26  Ben Elliston  <bje@au.ibm.com>
19741
19742         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
19743         (ASM_CPU_POWER6_SPEC): Likewise.
19744         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
19745         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
19746         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
19747
19748 2008-02-25  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         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
19754         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
19755         (decl_for_uid_map): New global hashtable mapping DECL_UID
19756         to the decl tree.
19757         (init_ttree): Allocate it.
19758         (insert_decl_to_uid_decl_map): New helper function.
19759         (make_node_stat): Insert new decls into the map.
19760         (copy_node_stat): Likewise.
19761         (lookup_decl_from_uid): New function.
19762         (print_decl_for_uid_map_statistics): New helper.
19763         (dump_tree_statistics): Call it.
19764
19765         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
19766         (referenced_var_iterator): Adjust.
19767         (FOR_EACH_REFERENCED_VAR): Adjust.
19768         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
19769         (num_referenced_vars): Adjust.
19770         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
19771         (first_referenced_var): Remove.
19772         (end_referenced_vars_p): Likewise.
19773         (next_referenced_var): Likewise.
19774         (referenced_var_iterator_set): New helper function.
19775         * tree-dfa.c (referenced_var_lookup): Adjust.
19776         (referenced_var_check_and_insert): Likewise.
19777         (remove_referenced_var): Likewise.
19778         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
19779         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19780         (verify_call_clobbering): Likewise.
19781         (verify_memory_partitions): Likewise.
19782         (init_tree_ssa): Allocate bitmap instead of hashtable for
19783         referenced_vars.
19784         (delete_tree_ssa): Adjust.
19785         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
19786         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
19787         (compute_tag_properties): Likewise.
19788         (set_initial_properties): Likewise.
19789         (find_partition_for): Likewise.
19790         (update_reference_counts): Likewise.
19791         (dump_may_aliases_for): Likewise.
19792         * tree-ssa-operands.c (add_virtual_operand): Likewise.
19793         (add_call_clobber_ops): Likewise.
19794         (add_call_read_ops): Likewise.
19795         (get_asm_expr_operands): Likewise.
19796         * tree-into-ssa.c (dump_decl_set): Likewise.
19797         (update_ssa): Likewise.
19798         * tree-sra.c (scan_function): Likewise.
19799         (decide_instantiations): Likewise.
19800         (scalarize_parms): Likewise.
19801         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
19802         (dsa_named_for): Likewise.
19803         * tree-ssa-structalias.c (update_alias_info): Likewise.
19804         (merge_smts_into): Likewise.
19805
19806 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
19807
19808         PR target/35258
19809         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
19810         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
19811         * alias.h (nonoverlapping_memrefs_p): Likewise.
19812
19813 2008-02-25  Jan Beulich  <jbeulich@novell.com>
19814
19815         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
19816         * config/i386/netware-libgcc.exp: Add __bswap?i2,
19817         __emultls_get_address, __emultls_register_common,
19818         __floatundi?f, and _Unwind_GetIPInfo.
19819         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
19820         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
19821         (gen_regparm_prefix): Likewise.
19822         (i386_nlm_encode_section_info): Sync with
19823         config/i386/winnt.c:i386_pe_encode_section_info().
19824         (i386_nlm_maybe_mangle_decl_assembler_name): New.
19825         i386_nlm_mangle_decl_assembler_name): New.
19826         (netware_override_options): New.
19827         * config/i386/netware.h (netware_override_options): Declare.
19828         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
19829         (i386_nlm_mangle_decl_assembler_name): Declare.
19830         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
19831
19832 2008-02-25  Ben Elliston  <bje@au.ibm.com>
19833
19834         PR other/32948
19835         * c-decl.c (grokdeclarator): Remove unused local variables
19836         `typedef_type' and `type_as_written'.
19837         * bb-reorder.c
19838         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
19839         unused local variable `has_hot_blocks'.
19840         (fix_crossing_conditional_branches): Remove unused local variable
19841         `prev_bb'.
19842
19843 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
19844
19845         PR middle-end/19984
19846         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
19847         using DEF_C99_BUILTIN.
19848         (BUILT_IN_NANF): Ditto.
19849         (BUILT_IN_NANL): Ditto.
19850
19851 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
19852             Revital Eres  <eres@il.ibm.com>
19853
19854         * modulo-sched.c (calculate_must_precede_follow): Address TODO
19855         regarding the order of two dependent insns in the same row.
19856
19857 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
19858
19859         * stor-layout.c (layout_decl): Do not bump the alignment of a
19860         bit-field to more than byte alignment if it is packed.
19861
19862 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
19863
19864         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
19865         e300c2 and e300c3.
19866
19867 2008-02-24  Diego Novillo  <dnovillo@google.com>
19868
19869         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
19870
19871         PR 33738
19872         * tree-vrp.c (vrp_evaluate_conditional): With
19873         -Wtype-limits, emit a warning when comparing against a
19874         constant outside the natural range of OP0's type.
19875         * c.opt (Wtype-limits): Move ...
19876         * common.opt (Wtype-limits): ... here.
19877
19878 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
19879
19880         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
19881         * config/rs6000/e300c2c3.md: New file.
19882         * config/rs6000/rs6000.c (processor_costs): Add new costs for
19883         e300c2 and e300c3.
19884         (rs6000_override_options): Add e300c2 and e300c3 cases to
19885         processor_target_table. Do not allow usage of Altivec or Spe
19886         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
19887         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
19888         * config/rs6000/rs6000.h (processor_type): Add
19889         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
19890         (ASM_CPU_SPEC): Add e300c2 and e300c3.
19891         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
19892         and ppce300c3. Include e300c2c3.md.
19893
19894 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
19895
19896         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
19897         instead of TARGET_STRICT_ALIGN.
19898
19899 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
19900
19901         * explow.c (memory_address): Assert that the generated address is
19902         valid.
19903
19904 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19905
19906         PR target/25477
19907         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
19908         * config/darwin-ppc-ldouble-patch.def: New file.
19909         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
19910         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
19911         SUBTARGET_INIT_BUILTINS if defined.
19912         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
19913         New functions.
19914
19915 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19916
19917         PR rtl-opt/33512
19918         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
19919         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
19920
19921 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19922
19923         PR pch/35027
19924         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
19925         file" warning condtional on -Winvalid-PCH.
19926
19927 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
19928
19929         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
19930
19931 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
19932
19933         PR target/22076
19934         PR target/34256
19935         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
19936         prevent reload from using MMX registers.
19937         (*mov<mode>_internal): Ditto.
19938         (*movv2sf_internal_rex64): Ditto.
19939         (*movv2sf_internal): Ditto.
19940
19941 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19942
19943         PR documentation/31569
19944         * doc/install.texi2html: Use makeinfo --no-number-sections.
19945
19946 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19947
19948         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
19949         ensure that we can address an entire entity > 8 bytes.  Don't
19950         generate reg+reg addressing for such data.
19951
19952 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19953
19954         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
19955         strings when optimizing for size, unless the target cares about
19956         alignment.
19957
19958 2008-02-22  Tom Tromey  <tromey@redhat.com>
19959
19960         * regclass.c (current_pass): Remove declaration.
19961
19962 2008-02-22  Anatoly Sokolov <aesok@post.ru>
19963
19964         * config/avr/libgcc.S (__RAMPZ__): Define.
19965         (__do_copy_data): Add for devices with 128KB code memory.
19966
19967 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
19968
19969         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
19970         Use spe_abi.
19971         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
19972
19973 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
19974
19975         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
19976         GENNONACR_REGS.
19977
19978 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19979
19980         PR c/19999
19981         * c-typeck.c (build_binary_op): Warn about floating point
19982         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
19983
19984 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
19985
19986         PR target/34526
19987         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
19988         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
19989         add vrsave.
19990         (rs6000_override_options): Set altivec_abi as default, not override,
19991         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
19992         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
19993         is used; use new member spe_abi.
19994         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
19995         spe_abi and altivec_abi.
19996
19997 2008-02-22  Tomas Bily  <tbily@suse.cz>
19998
19999         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
20000
20001 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20002
20003         PR bootstrap/35273
20004         * config.build (build_file_translate): Set to `CMD //c' only if
20005         it works.
20006         * Makefile.in (build_file_translate): Improve comment.
20007
20008 2008-02-21  Jan Hubicka  <jh@suse.cz>
20009
20010         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
20011         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
20012         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
20013
20014 2008-02-21  Michael Matz  <matz@suse.de>
20015
20016         PR target/35264
20017         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
20018
20019 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
20020
20021         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
20022         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
20023         as insn constraint.
20024         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
20025         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
20026         SSE_VEC_FLOAT_MODE_P as insn constraint.
20027         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
20028         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
20029         sse4a_movntdf using MODEF mode iterator.
20030         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
20031         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
20032         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
20033         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
20034         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
20035         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
20036         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
20037
20038 2008-02-21  Richard Guenther  <rguenther@suse.de>
20039
20040         * tree.def (PAREN_EXPR): New tree code.
20041         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
20042         and PAREN_EXPR.
20043         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
20044         * expr.c (expand_expr_real_1): Likewise.
20045         * tree-inline.c (estimate_num_insns_1): Likewise.
20046         * tree-complex.c (expand_complex_move): Likewise.
20047         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
20048         as plain x.
20049
20050 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20051
20052         PR target/35225
20053         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
20054
20055 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
20056
20057         PR target/35190
20058         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
20059
20060         * config/sh/sh.c (find_barrier): Don't go past
20061         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
20062
20063 2008-02-20  DJ Delorie  <dj@redhat.com>
20064
20065         * config/h8300/h8300.md (insv): Force source operand to be a register.
20066
20067         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
20068         as a jump, not as a plain insn.
20069
20070 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
20071
20072         * doc/invoke.texi (Warning Options): Add new option
20073         -Wframe-larger-than=.
20074         (-Wframe-larger-than): Document.
20075
20076         * flags.h (warn_frame_larger_than, frame_larger_than_size):
20077         Add declarations for new option variables.
20078
20079         * final.c (final_start_function): Check the frame size
20080         before emission and issue a Wframe-larger-than warning.
20081
20082         * opts.c (warn_frame_larger_than, frame_larger_than_size):
20083         Add definitions for new option variables.
20084         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
20085
20086         * common.opt (Wframe-larger-than=): New option.
20087
20088 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
20089
20090         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
20091         (<sse>_div<mode>3): Ditto.
20092         (<sse>_vmdiv<mode>3): Ditto.
20093         (<sse>_vmsqrt<mode>2): Ditto.
20094         (*smax<mode>3): Ditto.
20095         (sse5_frcz<mode>2): Ditto.
20096         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
20097         as insn constraint.
20098
20099 2008-02-20  Richard Guenther  <rguenther@suse.de>
20100
20101         PR middle-end/35265
20102         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
20103         be happy with INTEGRAL_TYPE_P.
20104
20105 2008-02-20  Richard Guenther  <rguenther@suse.de>
20106
20107         * fold-const.c (split_tree): Associate floatig-point expressions
20108         if flag_associative_math is set.
20109
20110 2008-02-20  Richard Guenther  <rguenther@suse.de>
20111
20112         * tree.h (fold_real_zero_addition_p): Declare.
20113         * fold-const.c (fold_real_zero_addition_p): Export.
20114         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
20115         floating-point operations with zero and one.
20116
20117 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
20118
20119         * doc/install.texi: Correct references to CFLAGS, replacing them
20120         with BOOT_CFLAGS.  Document flags used during bootstrap for
20121         target libraries.
20122
20123 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
20124
20125         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
20126         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
20127         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
20128         insn constraint.
20129         (smin<mode>3): Ditto from similar patterns.
20130         (smax<mode>3): Ditto.
20131         (*ieee_smin<mode>3): Ditto.
20132         (*ieee_smax<mode>3): Ditto.
20133         * config/i386/sse.md (sse): New mode attribute.
20134         (mov<mode>): Macroize expander from movv4sf and movv2df using
20135         SSEMODEF2P mode iterator.
20136         (<sse>_movnt<mode>): Ditto from similar patterns. Use
20137         SSE_VEC_FLOAT_MODE_P as insn constraint.
20138         (storent<mode>): Ditto.
20139         (storent<mode>): Macroize expander from storentsf and storentdf using
20140         MODEF mode iterator.
20141         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
20142         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
20143         (abs<mode>2): Ditto from similar patterns.
20144         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
20145         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
20146         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
20147         (<sse>_vmsqrt<mode>2): Ditto.
20148         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
20149         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
20150         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
20151         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
20152         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
20153         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
20154         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
20155         insn constraint.
20156         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
20157         iterator and SSE_FLOAT_MODE_P as insn constraint.
20158         (<sse>_ucomi): Ditto from similar patterns.
20159         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
20160         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
20161         SSE_VEC_FLOAT_MODE_P as insn constraint.
20162         (vcond<mode>): Ditto from similar patterns.
20163         (and<mode>3, *and<mode>3): Ditto.
20164         (<sse>_nand<mode>3): Ditto.
20165         (ior<mode>3, *ior<mode>3): Ditto.
20166         (xor<mode>3, *xor<mode>3): Ditto.
20167         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
20168         iterator and SSE_FLOAT_MODE_P as insn constraint.
20169         (*nand<mode>3): Ditto from similar patterns.
20170         (*ior<mode>3): Ditto.
20171         (*xor<mode>3): Ditto.
20172
20173 2008-02-20  Ira Rosen  <irar@il.ibm.com>
20174
20175         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
20176         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
20177         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
20178
20179 2008-02-19  Jan Hubicka  <jh@suse.cz>
20180
20181         * predict.c (tree_bb_level_predictions): Remove variable next
20182         mistakely introduced by previous commit.
20183
20184 2008-02-19  Jan Hubicka  <jh@suse.cz>
20185
20186         * predict.c (predict_paths_leading_to): Rewrite.
20187         (predict_paths_for_bb): New.
20188         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
20189
20190 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20191
20192         PR bootstrap/35218
20193         * Makefile.in (build_file_translate): New.
20194         (gcc-vers.texi): Use it for translating $(abs_srcdir).
20195         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
20196         * configure.ac (build_file_translate): Substitute it.
20197         * configure: Regenerate.
20198
20199 2008-02-19  Jan Hubicka  <jh@suse.cz>
20200
20201         PR rtl-optimization/34408
20202         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
20203         invalid sharing.
20204
20205 2008-02-19  Jan Hubicka  <jh@suse.cz>
20206
20207         PR middle-end/28779
20208         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
20209         call_expr.
20210
20211 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
20212
20213         PR Ada/35186
20214         * config/i386/i386-modes.def: Revert the last DI alignment
20215         change until Ada people can look into it.
20216
20217 2008-02-19  Nick Clifton  <nickc@redhat.com>
20218
20219         * opts.c (print_specific_help): Fix typo in --help text.
20220
20221 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
20222
20223         PR target/35239
20224         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
20225         32-bit inline asm without asm alternatives for host GCC < 3.0.
20226
20227 2008-02-19  Richard Guenther  <rguenther@suse.de>
20228
20229         PR tree-optimization/34989
20230         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
20231         Allow propagation to INDIRECT_REF if we can simplify only.
20232
20233 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20234
20235         * c-common.c (warn_for_collisions_1): Use appropriate option when
20236         warning.
20237
20238 2008-02-19  Nick Clifton  <nickc@redhat.com>
20239
20240         PR other/31349
20241         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
20242         (handle_options): Fix indentation.
20243         (print_filtered_help): If no language-specific options were
20244         displayed tell the user how to list all the options supported by
20245         the language's front-end.
20246         (print_specific_help): Fix indentation and remove duplicate line.
20247         (common_handle_option): Handle the -v option.
20248         For --help enable the display of undocumented options if the -v
20249         switch has been included on the command line.
20250         For --help= check for overlaps in the arguments between the option
20251         classes and the language names and issue a warning when they
20252         cannot be disambiguated.
20253         * c.opt (v): Pass on to the common option handler.
20254
20255 2008-02-19  Revital Eres  <eres@il.ibm.com>
20256
20257         * modulo-sched.c (sms_schedule): Change dump message when
20258         create_ddg function fails.
20259         (try_scheduling_node_in_cycle): Rename row to cycle.
20260         (print_partial_schedule): Rename CYCLE to ROW.
20261
20262 2008-02-19  Christian Bruel  <christian.bruel@st.com>
20263             Zdenek Dvorak  <ook@ucw.cz>
20264
20265         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
20266
20267 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
20268
20269         PR target/33555
20270         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
20271         (*x86_movdicc_0_m1_se): Ditto.
20272
20273 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
20274
20275         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
20276         (CMPtype): Define as __gcc_CMPtype.
20277         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
20278         (CMPtype): Define as __gcc_CMPtype.
20279
20280 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
20281
20282         Support valgrind 3.3 for --enable-checking=valgrind.
20283         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
20284         here.
20285         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
20286         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
20287         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
20288         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
20289         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
20290         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
20291         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
20292         respectively.
20293         * ggc-zone.c: Similar.
20294         * ggc-page.c: Similar.
20295
20296 2008-02-19  Paul Brook  <paul@codesourcery.com>
20297
20298         PR target/35071
20299         * config/arm/ieee754-df.S: Fix do_it typo.
20300         * config/arm/ieee754-sf.S: Fix do_it typo.
20301
20302 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
20303
20304         PR target/35189
20305         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
20306         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
20307         (OPTION_MASK_ISA_SSE_SET): Likewise.
20308         (OPTION_MASK_ISA_SSE2_SET): Likewise.
20309         (OPTION_MASK_ISA_SSE3_SET): Likewise.
20310         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
20311         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
20312         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
20313         (OPTION_MASK_ISA_SSE4_SET): Likewise.
20314         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
20315         (OPTION_MASK_ISA_SSE5_SET): Likewise.
20316         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
20317         (OPTION_MASK_ISA_MMX_UNSET): Updated.
20318         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
20319         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
20320         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
20321         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
20322         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
20323         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
20324         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
20325         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
20326         (OPTION_MASK_ISA_SSE4): Removed.
20327         (ix86_handle_option): Turn on bits in ix86_isa_flags and
20328         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
20329         (override_options): Don't turn on implied SSE/MMX bits in
20330         ix86_isa_flags.
20331
20332 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
20333
20334         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
20335         32bit host.
20336
20337 2008-02-18  Joey Ye  <joey.ye@intel.com>
20338
20339         PR middle-end/34921
20340         * tree-nested.c (insert_field_into_struct): Set type alignment
20341         to field alignment if the former is less than the latter.
20342
20343 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
20344
20345         * BASE-VER: Set to 4.4.0.
20346
20347 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20348
20349         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
20350         * doc/cfg.texi: Likewise.
20351         * doc/extend.texi: Likewise.
20352         * doc/gty.texi: Likewise.
20353         * doc/invoke.texi: Likewise.
20354         * doc/loop.texi: Likewise.
20355         * doc/md.texi: Likewise.
20356         * doc/passes.texi: Likewise.
20357         * doc/rtl.texi: Likewise.
20358         * doc/sourcebuild.texi: Likewise.
20359         * doc/tm.texi: Likewise.
20360         * doc/tree-ssa.texi: Likewise.
20361
20362 2008-02-17  Richard Guenther  <rguenther@suse.de>
20363
20364         PR middle-end/35227
20365         * tree-complex.c (init_parameter_lattice_values): Handle parameters
20366         without default definition.
20367
20368 2008-02-17  Richard Guenther  <rguenther@suse.de>
20369
20370         PR tree-optimization/35231
20371         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
20372         if A | B != 1.
20373
20374 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
20375
20376         Revert:
20377         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20378         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
20379         libgcc_cmp_return mode.
20380
20381 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20382
20383         PR c/28368
20384         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
20385
20386 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
20387
20388         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
20389         multilibs.
20390
20391 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20392
20393         * doc/c-tree.texi: Use `@.' where appropriate.
20394         * doc/extend.texi: Likewise.
20395         * doc/install.texi: Likewise.
20396         * doc/invoke.texi: Likewise.
20397         * doc/loop.texi: Likewise.
20398         * doc/makefile.texi: Likewise.
20399         * doc/md.texi: Likewise.
20400         * doc/passes.texi: Likewise.
20401         * doc/standards.texi: Likewise.
20402         * doc/tm.texi: Likewise.
20403
20404 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
20405
20406         PR middle-end/35196
20407         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
20408         in entry_bb.
20409         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
20410         rather than in entry_bb.
20411
20412 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20413
20414         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
20415         libgcc_cmp_return mode.
20416
20417 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
20418
20419         PR middle-end/35130
20420         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
20421         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
20422
20423 2008-02-15  Richard Guenther  <rguenther@suse.de>
20424             Zdenek Dvorak  <ook@ucw.cz>
20425
20426         PR tree-optimization/35164
20427         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
20428         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
20429         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
20430         Only propagate addresses which do not have abnormal SSA_NAMEs
20431         in their operands.
20432
20433 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
20434
20435         PR target/35088
20436         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
20437
20438 2008-02-15  Jan Hubicka  <jh@suse.cz>
20439
20440         PR middle-end/35149
20441         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
20442
20443 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20444
20445         PR middle-end/34621
20446         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
20447         when calculating alignment_pad.
20448
20449 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
20450
20451         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
20452         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
20453         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
20454         and STACK_BOUNDARY define.
20455
20456 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
20457
20458         PR preprocessor/35061
20459         * c-pragma.c (handle_pragma_pop_macro): Check that
20460         pushed_macro_table has been allocated.
20461
20462 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
20463
20464         PR middle-end/35136
20465         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
20466         (force_gimple_operand): Likewise.
20467         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
20468         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
20469         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
20470         (find_interesting_uses_address): Check addressability and alignment
20471         of the base expression only after substituting bases of IVs into it.
20472
20473 2008-02-14  Michael Matz  <matz@suse.de>
20474
20475         PR target/34930
20476         * function.c (instantiate_virtual_regs_in_insn): Reload address
20477         before falling back to reloading the whole operand.
20478
20479 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
20480
20481         * config/s390/s390.c (s390_mainpool_start): Emit the pool
20482         before the first section switch note.
20483
20484 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
20485
20486         * doc/bugreport.texi: Update copyright years.
20487         * doc/c-tree.texi: Likewise.
20488         * doc/cfg.texi: Likewise.
20489         * doc/cpp.texi: Likewise.
20490         * doc/cppinternals.texi: Likewise.
20491         * doc/fragments.texi: Likewise.
20492         * doc/frontends.texi: Likewise.
20493         * doc/gcc.texi: Likewise.
20494         * doc/gty.texi: Likewise.
20495         * doc/hostconfig.texi: Likewise.
20496         * doc/implement-c.texi: Likewise.
20497         * doc/libgcc.texi: Likewise.
20498         * doc/loop.texi: Likewise.
20499         * doc/makefile.texi: Likewise.
20500         * doc/options.texi: Likewise.
20501         * doc/passes.texi: Likewise.
20502         * doc/rtl.texi: Likewise.
20503         * doc/sourcebuild.texi: Likewise.
20504         * doc/standards.texi: Likewise.
20505         * doc/tree-ssa.texi: Likewise.
20506         * doc/trouble.texi: Likewise.
20507
20508         * doc/extend.texi: Use @: or add comma where appropriate.
20509         * doc/invoke.texi: Likewise.
20510         * doc/tm.texi: Likewise.
20511
20512 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
20513
20514         PR target/34393
20515         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
20516         to a reg.
20517
20518 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
20519
20520         * doc/md.texi (clz, ctz): Add reference.
20521         * doc/rtl.texi (clz, ctz): Likewise.
20522
20523 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20524
20525         PR other/35148
20526         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
20527         srcdir.
20528
20529 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
20530
20531         * config/s390/s390.c (struct constant_pool): New field
20532         emit_pool_after added.
20533         (s390_mainpool_start): Set the emit_pool_after flag according
20534         to the section switch notes.
20535         (s390_mainpool_finish): Consider emit_pool_after when emitting
20536         the literal pool at the end of the function.
20537         (s390_chunkify_start): Force literal pool splits at section
20538         switch notes.
20539
20540 2008-02-13  Michael Matz  <matz@suse.de>
20541
20542         PR debug/35065
20543         * var-tracking.c (clobber_variable_part): Correctly traverse the
20544         list.
20545
20546 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20547
20548         PR 29673
20549         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
20550         Add -fdump-ipa-inline.
20551         * tree-dump.c (dump_files): Remove tree-inlined dump.
20552         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
20553
20554 2008-02-12  Richard Guenther  <rguenther@suse.de>
20555
20556         PR tree-optimization/35171
20557         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
20558         default defs.
20559
20560 2008-02-12  Richard Guenther  <rguenther@suse.de>
20561
20562         PR middle-end/35163
20563         * fold-const.c (fold_widened_comparison): Use get_unwidened in
20564         value-preserving mode.  Disallow final truncation.
20565
20566 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
20567
20568         PR middle-end/35136
20569         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
20570         code from here to...
20571         (force_gimple_operand): ...here.
20572
20573 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
20574
20575         PR c++/35144
20576         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
20577         non-compatible pointers.
20578         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
20579         different FIELD_DECLs, try harder by comparing field offsets, sizes
20580         and types.
20581
20582         PR inline-asm/35160
20583         * function.c (match_asm_constraints_1): Don't replace the same input
20584         multiple times.
20585
20586 2008-02-12  Anatoly Sokolov <aesok@post.ru>
20587
20588         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
20589         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
20590         (expand_epilogue): Restore RAMPZ register.
20591         * config/avr/avr.md (RAMPZ_ADDR): New constant.
20592
20593 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
20594
20595         * config/i386/cygwin.asm: (__alloca): Correct calling
20596         convention and alignment.
20597         (__chkstk): Force 8 byte stack alignment.
20598
20599 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
20600             Richard Guenther  <rguenther@suse.de>
20601
20602         PR tree-optimization/33992
20603         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
20604         the zero we compare against.
20605
20606 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
20607
20608         PR libfortran/35063
20609         * gthr-win32.h (__gthread_mutex_destroy_function): New function
20610         to CloseHandle after unlocking to prevent accumulation of handle
20611         count.
20612
20613 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20614
20615         PR middle_end/34150
20616         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
20617         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
20618         and update LABEL_NUSES during and after reload.
20619
20620 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
20621
20622         PR middle-end/34627
20623         * combine.c (simplify_if_then_else): Make sure the comparison is
20624         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
20625
20626 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
20627
20628         PR bootstrap/35051
20629         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
20630         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
20631         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
20632         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
20633         * tree.h (get_type_static_bounds): Likewise.
20634
20635 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20636
20637         * doc/invoke.texi (Option Summary, C++ Dialect Options)
20638         (Objective-C and Objective-C++ Dialect Options, Warning Options):
20639         Make -Wfoo language annotations match what the compiler outputs.
20640
20641 2008-02-08  Sa Liu  <saliu@de.ibm.com>
20642
20643         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
20644         intrinsics spu_convts, spu_convtu, spu_convtf.
20645
20646 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
20647
20648         * doc/extend.texi (Function Attributes) <noinline>: Mention
20649         asm ("") as method to keep calls.
20650
20651 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20652
20653         PR other/32754
20654         * doc/options.texi (Options): Replace references to opts.sh with
20655         optc-gen.awk.
20656         * opts-common.c: Likewise.
20657         * optc-gen.awk: Likewise.
20658
20659 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
20660
20661         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
20662
20663 2008-02-07  Richard Henderson  <rth@redhat.com>
20664
20665         PR rtl-opt/33410
20666         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
20667         EXPR_LIST for the REG_EQUAL instead of a comparison with a
20668         funny mode.
20669
20670 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
20671
20672         PR tree-optimization/35085
20673         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
20674         for operand entry oe2 in addition to operand entry oe3 in order to
20675         expose more opportunities for vectorizer sum reduction.
20676
20677 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20678
20679         PR other/35107
20680         * Makefile.in (LIBS): Remove $(GMPLIBS).
20681         (cc1-dummy, cc1): Add $(GMPLIBS).
20682
20683 2008-02-06  Jan Hubicka  <jh@suse.cz>
20684
20685         PR target/23322
20686         * i386.md (moddf_integer): Do not produce partial memory stalls for
20687         targets where it hurts.
20688
20689 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
20690
20691         PR target/35083
20692         * optabs.c (expand_float): Do not check for decimal modes when
20693         expanding unsigned integer through signed conversion.
20694
20695 2008-02-06  Nick Clifton  <nickc@redhat.com>
20696
20697         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
20698         inside the clobber with a match_operand and duplicated operand
20699         number in the constraint.
20700         (ineqbranchsi): Delete redundant comment.
20701
20702 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
20703
20704         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
20705         builtin_define ("__USE_INIT_FINI__").
20706         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
20707         -msx multilibs.
20708         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
20709
20710 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20711
20712         PR documentation/30330
20713         * doc/invoke.texi (C++ Dialect Options)
20714         (Objective-C and Objective-C++ Dialect Options, Warning Options):
20715         For each warning option -Wfoo that allows -Wno-foo, ensure both
20716         -Wfoo and -Wno-foo are listed in the option index.  Fix index
20717         entry of -Wswitch-default, index -Wnormalized= including the
20718         `=', and -Wlarger-than-@var{len} including @var{len}.
20719
20720 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20721
20722         * config/i386/i386.md (floatunssisf2): Use
20723         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
20724         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
20725         Macroize expander using MODEF mode iterator.
20726
20727 2008-02-05  Diego Novillo  <dnovillo@google.com>
20728
20729         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
20730
20731         PR 33738
20732         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
20733
20734 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20735
20736         PR other/35070
20737         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
20738
20739 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
20740
20741         PR target/35084
20742         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
20743         to indicate if a message should be generated.
20744         (init_cumulative_args): Updated.
20745         (function_value_32): Likewise.
20746
20747 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
20748
20749         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
20750
20751 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
20752
20753         PR target/35083
20754         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
20755         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
20756
20757 2008-02-04  Diego Novillo  <dnovillo@google.com>
20758
20759         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
20760
20761         PR 33738
20762         * tree-vrp.c (vrp_evaluate_conditional): With
20763         -Wtype-limits, emit a warning when comparing against a
20764         constant outside the natural range of OP0's type.
20765
20766 2008-02-04  Richard Guenther  <rguenther@suse.de>
20767
20768         PR middle-end/33631
20769         * expr.c (count_type_elements): Give for unions instead of
20770         guessing.
20771
20772 2008-02-04  Richard Guenther  <rguenther@suse.de>
20773
20774         PR middle-end/35043
20775         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
20776         to TYPE_DOMAINs base type instead of using bitsizetype here.
20777
20778 2008-02-03  Jason Merrill  <jason@redhat.com>
20779
20780         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
20781
20782 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20783
20784         PR other/29972
20785         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
20786         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
20787         (RS/6000 and PowerPC Options): Fix typos and markup.
20788         * doc/passes.texi (Tree-SSA passes): Likewise.
20789
20790 2008-02-02  Michael Matz  <matz@suse.de>
20791
20792         PR target/35045
20793         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
20794         from record_last_reg_set_info.
20795         (record_last_reg_set_info): Take an RTX argument, iterate over all
20796         constituent hardregs.
20797         (record_last_set_info, record_opr_changes): Change calls to
20798         new signature or to record_last_reg_set_info_regno.
20799
20800 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
20801
20802         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
20803
20804 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
20805
20806         PR rtl-optimization/34773
20807         * reg-notes.def (EQUAL): Mention significance of combination of
20808         REG_EQUAL and REG_RETVAL.
20809         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
20810         insn that has a REG_RETVAL.
20811
20812 2008-02-01  Roger Sayle  <roger@eyesopen.com>
20813
20814         PR bootstrap/33781
20815         * configure.ac (--enable-fixed-point): Disable unless explicitly
20816         requested on IRIX.
20817         * configure: Regenerate.
20818
20819 2008-02-01  Richard Guenther  <rguenther@suse.de>
20820
20821         PR other/35042
20822         * invoke.texi (-finline-limit): Remove no longer true parts
20823         of the documentation.  Note that there is no default value.
20824
20825 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
20826             Mark Mitchell  <mark@codesourcery.com>
20827             Ben Elliston  <bje@au.ibm.com>
20828
20829         PR c/29326
20830         * doc/extend.texi (Other Builtins): Document.
20831
20832 2008-01-31  Tom Browder <tom.browder@gmail.com>
20833
20834         * doc/c-tree.texi (Types): Fix grammar.
20835         (Expression trees): Ditto.
20836         * doc/passes.texi (Tree-SSA passes): Ditto.
20837
20838         * doc/configterms.texi (Configure Terms): Fix typo.
20839         * doc/cpp.texi (Common Predefined Macros): Ditto.
20840         * doc/md.texi (Machine Constraints): Ditto.
20841
20842         * doc/makefile.texi (Makefile): Add comma.
20843
20844 2008-01-31  Tom Browder  <tom.browder@gmail.com>
20845             Gerald Pfeifer  <gerald@pfeifer.com>
20846
20847         * doc/sourcebuild.texi (Front End): Remove references to CVS
20848         and CVSROOT/modules.
20849         (Texinfo Manuals): Replace reference to CVS by one to SVN.
20850         (Back End): Remove reference to CVS.
20851
20852 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
20853
20854         PR target/34900
20855         * config/mips/mips.c (gen_load_const_gp): New function, taking a
20856         comment from...
20857         (mips16_gp_pseudo_reg): ...here.
20858         * config/mips/mips.md (load_const_gp): Replace with...
20859         (load_const_gp_<mode>): ...this :P-based insn.
20860
20861 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20862
20863         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
20864         options. Minor fixes.
20865         (-std): Move reference to standards closer to where language
20866         standards are first mentioned.
20867
20868 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
20869
20870         PR rtl-optimization/34995
20871         * reload.c (alternative_allows_const_pool_ref): Take an rtx
20872         parameter and return a bool.  If the rtx parameter is nonnull,
20873         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
20874         (find_reloads): Update call accordingly.  Pass the new operand
20875         if it needed no address reloads, otherwise pass null.
20876
20877 2008-01-30  Richard Henderson  <rth@redhat.com>
20878
20879         PR c/34993
20880         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
20881         for unbounded arrays.
20882
20883 2008-01-30  Silvius Rus  <rus@google.com>
20884
20885         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
20886
20887 2008-01-30  Jan Hubicka  <jh@suse.cz>
20888
20889         PR target/34982
20890         * i386.c (init_cumulative_args): Use real function declaration when
20891         calling locally.
20892
20893 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
20894
20895         PR rtl-optimization/34998
20896         * global.c (build_insn_chain): Treat non-subreg_lowpart
20897         SUBREGs of pseudos as clobbering all the words covered by the
20898         SUBREG, not just all the bytes.
20899         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
20900         original df_ref rather than an extract parameter.
20901         (global_conflicts): Update call accordingly.
20902
20903 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
20904
20905         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
20906         the overflow check to make it easier to read.
20907         (__fixtfdi): Change the type of the ll member in union
20908         long_double to UDItype_x.
20909
20910 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
20911
20912         PR middle-end/34969
20913         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
20914         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
20915         * tree-inline.c (fold_marked_statements): Call
20916         cgraph_update_edges_for_call_stmt if folding a call statement.
20917         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
20918         debug_generic_stmt calls, reset it back afterwards.
20919
20920         PR c/35017
20921         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
20922         static decls.
20923         * c-typeck.c (build_external_ref): Don't pedwarn about
20924         static vars in current function's scope.
20925
20926 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
20927
20928         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
20929
20930 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
20931
20932         PR c/35002
20933         * ipa-struct-reorg.c: Fix spelling.
20934         * params.def: Ditto.
20935
20936 2008-01-29  Richard Guenther  <rguenther@suse.de>
20937
20938         PR middle-end/35006
20939         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
20940         field.
20941         * tree-inline.c (remap_type): Increment remapping_type_depth
20942         around remapping types.
20943         (copy_body_r): Only add referenced variables if they are referenced
20944         from code, not types.
20945
20946 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
20947
20948         PR c++/34055
20949         PR c++/34103
20950         PR c++/34219
20951         PR c++/34606
20952         PR c++/34753
20953         PR c++/34754
20954         PR c++/34755
20955         PR c++/34919
20956         PR c++/34961
20957         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
20958         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
20959
20960 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
20961
20962         PR target/34412
20963         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
20964         pointer for tiny stack.
20965
20966 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
20967
20968         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
20969
20970 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
20971
20972         * config/vx-common.h: Fix typo in comment.
20973
20974 2008-01-28  Ian Lance Taylor  <iant@google.com>
20975
20976         PR c++/34862
20977         PR c++/33407
20978         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
20979         coalesce pointers if they have different DECL_NO_TBAA_P values.
20980         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
20981         between variables with different DECL_NO_TBAA_P values.
20982
20983 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
20984
20985         PR 31535
20986         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
20987         are not legitimate small data references on SPE targets.
20988
20989 2008-01-28  David Daney  <ddaney@avtrex.com>
20990
20991         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
20992
20993 2008-01-28  David Daney  <ddaney@avtrex.com>
20994
20995         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
20996
20997 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
20998
20999         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
21000         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
21001         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
21002         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
21003         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
21004         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
21005         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
21006         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
21007
21008 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21009
21010         * basic-block.h (condjump_equiv_p): Fix comment.
21011
21012 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21013
21014         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
21015         print_generic_stmt_indented): Fix comment.
21016
21017 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
21018
21019         * configure.ac (__stack_chk_fail): Add detecion for availability
21020         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
21021         * configure: Regenerate.
21022
21023 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
21024
21025         PR middle-end/34688
21026         * final.c (output_addr_const): Handle TRUNCATE.
21027
21028 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
21029
21030         PR target/34711
21031         * tree-ssa-loop-ivopts.c (comp_cost): New type.
21032         (zero_cost, infinite_cost): New constants.
21033         (struct cost_pair): Change type of cost to comp_cost.
21034         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
21035         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
21036         New functions.
21037         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
21038         split_address_cost, ptr_difference_cost, difference_cost,
21039         get_computation_cost_at, get_computation_cost,
21040         determine_use_iv_cost_generic, determine_use_iv_cost_address,
21041         determine_use_iv_cost_condition, determine_use_iv_costs,
21042         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
21043         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
21044         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
21045         Change type of cost to comp_cost.
21046         (determine_iv_cost): Increase cost of non-original ivs, instead
21047         of decreasing the cost of original ones.
21048         (get_address_cost): Indicate the complexity of the addressing mode
21049         in comp_cost.
21050         (try_add_cand_for): Prefer using ivs not specific to some object.
21051         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
21052
21053 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
21054             Janis Johnson  <janis187@us.ibm.com>
21055
21056         PR target/34814
21057         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
21058         (TARGET_INSTANTIATE_DECLS): Likewise.
21059         * target.h (expand_to_rtl_hook): New target hook.
21060         (instantiate_decls): Likewise.
21061         * function.c (instantiate_decl): Make non-static.  Rename to...
21062         (instantiate_decl_rtl): ... this.
21063         (instantiate_expr): Use instantiate_decl_rtl.
21064         (instantiate_decls_1): Likewise.
21065         (instantiate_decls): Likewise.
21066         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
21067         * function.h (instantiate_decl_rtl): Add prototype.
21068         * cfgexpand.c (target.h): New include.
21069         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
21070         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
21071         (TARGET_INSTANTIATE_DECLS): Likewise.
21072         (TARGET_INITIALIZER): New target hooks added.
21073         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
21074         New prototype.
21075         * config/rs6000/rs6000.c (tree-flow.h): New include.
21076         (machine_function): Add sdmode_stack_slot field.
21077         (rs6000_alloc_sdmode_stack_slot): New function.
21078         (rs6000_instantiate_decls): Likewise.
21079         (rs6000_secondary_memory_needed_rtx): Likewise.
21080         (rs6000_check_sdmode): Likewise.
21081         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
21082         (TARGET_INSTANTIATE_DECLS): Likewise.
21083         (rs6000_hard_regno_mode_ok): Allow SDmode.
21084         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
21085         (rs6000_emit_move): Handle SDmode.
21086         (function_arg_advance): Likewise.
21087         (function_arg): Likewise.
21088         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
21089         SDmode var args for 32-bit compiles.
21090         (rs6000_secondary_reload_class): Handle SDmode.
21091         (rs6000_output_function_epilogue): Likewise.
21092         (rs6000_function_value): Simplify if statement.
21093         (rs6000_libcall_value): Likewise.
21094         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
21095         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
21096         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
21097         (movsd_hardfloat): New define_insn.
21098         (movsd_softfloat): Likewise.
21099         (movsd_store): Likewise.
21100         (movsd_load): Likewise.
21101         (extendsddd2): Likewise.
21102         (extendsdtd2): Likewise.
21103         (truncddsd2): Likewise.
21104         (movdd_hardfloat64): Fixup comment.
21105         (UNSPEC_MOVSD_LOAD): New constant.
21106         (UNSPEC_MOVSD_STORE): Likewise.
21107
21108 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
21109
21110         PR c++/34965
21111         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
21112         TRUTH_XOR_EXPR.
21113         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
21114         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
21115         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
21116         and TRUTH_XOR_EXPR.
21117
21118 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
21119
21120         PR target/34794
21121         * config.gcc: Separate AIX 5.3 from AIX 6.1.
21122         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
21123         __LONGDOUBLE128 too.
21124         * config/rs6000/aix61.h: New file.
21125
21126 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
21127
21128         PR rtl-optimization/34959
21129         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
21130         popcount and parity rtxes the same mode as their operand.
21131         Truncate or extend the result to the return value's mode
21132         if necessary.
21133
21134 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
21135
21136         PR target/34981
21137         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
21138         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
21139         to GOT_VERSION_REGNUM.
21140         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
21141         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
21142         * config/mips/mips.c (mips_emit_call_insn): New function.
21143         (mips_call_tls_get_addr): Call mips_expand_call directly.
21144         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
21145         emit_call_insn.
21146         (mips16_build_call_stub): Likewise.  Return the call insn or null.
21147         (mips_expand_call): Update the call to mips16_build_call_stub
21148         accordingly and a remove redundant condition.  Assert that MIPS16
21149         stubs do not use lazy binding.  Use mips_emit_call_insn and return
21150         the call insn.
21151         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
21152         TARGET_USE_GOT.
21153         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
21154         (mips_avoid_hazard): Remove hazard_set handling.
21155         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
21156         (UNSPEC_RESTORE_GP): ...this.
21157         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
21158         (FAKE_CALL_REGNO): Rename to...
21159         (GOT_VERSION_REGNUM): ...this.
21160         (type): Add "ghost" value.  Add an associated insn reservation.
21161         (hazard_set): Remove.
21162         (exception_receiver): Rename to...
21163         (restore_gp): ...this and update the unspec identifier accordingly.
21164         (exception_receiver, nonlocal_got_receiver): New expanders.
21165         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
21166         FAKE_CALL_REGNO.  Remove hazard_set attribute.
21167         (set_got_version, update_got_version): New patterns.
21168
21169 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
21170
21171         PR target/34970
21172         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
21173
21174 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
21175
21176         PR other/31955
21177         * doc/install.texi2html: Generate gcc-vers.texi.
21178
21179 2008-01-25  DJ Delorie  <dj@redhat.com>
21180
21181         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
21182
21183 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
21184
21185         * config/c4x: Remove directory.
21186         * config.gcc (crx-*, mt-*): Mark obsolete.
21187         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
21188         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
21189         sh-*-rtemscoff*): Remove cases.
21190         * defaults.h (C4X_FLOAT_FORMAT): Remove.
21191         * real.c (encode_c4x_single, decode_c4x_single,
21192         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
21193         c4x_extended_format): Remove.
21194         * real.h (c4x_single_format, c4x_extended_format): Remove.
21195         * doc/extend.texi (interrupt, naked): Remove mention of attributes
21196         on C4x.
21197         (Pragmas): Remove comment about c4x pragmas.
21198         * doc/install.texi (c4x): Remove target-specific instructions.
21199         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
21200         * doc/md.texi (Machine Constraints): Remove C4x documentation.
21201         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
21202         refer to C4x source files as examples.
21203         (C4X_FLOAT_FORMAT): Remove documentation.
21204
21205 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
21206
21207         * config/bfin/bfin.c (override_options): Reorder tests so that
21208         flag_pic gets enabled for -msep-data.
21209
21210 2008-01-25  Richard Guenther  <rguenther@suse.de>
21211
21212         PR middle-end/32244
21213         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
21214         to its bitfield precision if required.
21215
21216 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
21217
21218         PR middle-end/33880
21219         * tree-nested.c (walk_omp_for): New function.
21220         (convert_nonlocal_reference, convert_local_reference): Call
21221         walk_omp_for on OMP_FOR.
21222         (convert_call_expr): Call walk_body on OMP_FOR's
21223         OMP_FOR_PRE_INIT_BODY.
21224
21225 2008-01-25  Richard Guenther  <rguenther@suse.de>
21226
21227         PR tree-optimization/34966
21228         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
21229         default defs and PHI_NODEs we have to insert after the
21230         defining statement.
21231
21232 2008-01-24  Nick Clifton  <nickc@redhat.com>
21233
21234         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
21235         Provide a default definition.
21236         (LIBGCC2_UNITS_PER_WORD): Likewise.
21237
21238         * config/stormy16/stormy16.c: Include df.h for the prototype
21239         for df_regs_ever_live_p.
21240         (xstormy16_expand_builtin_va_start): Convert the stack offset
21241         into a component_ref and then use POINTER_PLUS_EXPR to add it
21242         to the incoming_virtual_args_rtx.
21243         (xstormy16_gimplify_va_arg_expr): Rename to
21244         xstormy16_gimplify_va_arg_expr.
21245         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
21246         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
21247         xstormy16_gimplify_va_arg_expr.
21248         Fix up some formatting issues.
21249
21250         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
21251         Move to predicates.md.
21252         (xs_hi_general_operand): Likewise.
21253         (xs_hi_nonmemory_operand): Likewise.
21254         * config/stormy16/predicates.md:
21255         (xstormy16_carry_plus_operand): New predicate.
21256         (xs_hi_general_operand): New predicate.
21257         (xs_hi_nonmemory_operand): New predicate.
21258         * config/stormy16/stormy16-protos.h:
21259         (xstormy16_carry_plus_operand): Delete prototype.
21260         (xs_hi_general_operand): Likewise.
21261         (xs_hi_nonmemory_operand): Likewise.
21262
21263         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
21264         modifiers as they are no longer needed and they can trigger
21265         reload spill failures.
21266
21267         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
21268         with a match_operand in order to help reload.
21269
21270         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
21271         constraint with 'e' for the 8th alternative as this version of
21272         the mov.w instruction only accepts the lower 8 registers.
21273
21274 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
21275
21276         PR target/34856
21277         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
21278         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
21279         vector elements.
21280
21281 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
21282
21283         PR middle-end/33333
21284         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
21285
21286 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
21287
21288         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
21289         New functions.
21290         (remove_structure): Update allocations list before removing structure.
21291
21292 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
21293
21294         * ipa-struct-reorg.c (is_safe_cond_expr,
21295         create_new_stmts_for_cond_expr): Use integer_zerop function,
21296         that recognize not only zero-pointer, but zero-integer too.
21297
21298 2008-01-25  Ben Elliston  <bje@au.ibm.com>
21299
21300         PR other/22232
21301         * fixproto: Escape "." in sed expression that strips leading "./".
21302
21303 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
21304
21305         PR driver/34904
21306         * gcc.c (SWITCH_OK): Removed.
21307         (SWITCH_LIVE): Changed to bit.
21308         (SWITCH_FALSE): Likewise.
21309         (SWITCH_IGNORE): Likewise.
21310         (switchstr): Change live_cond to unsigned int.
21311         (process_command): Replace SWITCH_OK with 0.
21312         (do_self_spec): Likewise.
21313         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
21314         (give_switch): Likewise.
21315         (used_arg): Likewise.
21316         (do_spec_1): Set the SWITCH_IGNORE bit.
21317         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
21318         bits.  Set the SWITCH_LIVE bit.
21319
21320 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21321
21322         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
21323
21324 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
21325
21326         PR tree-optimization/34472
21327         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
21328         parameter to a "bool *" and set *DATA to false if there is
21329         an unsafe access.  Do not delete the structure here.
21330         (check_cond_exprs): Delete it here instead.
21331         (check_cond_exprs, exclude_cold_structs): Do not increase
21332         I when removing a structure.
21333
21334 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
21335
21336         PR target/34856
21337         * config/i386/i386.c (ix86_expand_vector_init): Consider only
21338         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
21339
21340 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
21341
21342         PR middle-end/34934
21343         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
21344         a fixed vector for stack.
21345
21346 2008-01-24  Ben Elliston  <bje@au.ibm.com>
21347
21348         PR c++/25701
21349         * doc/gcc.texi (Software development): Add a direntry for g++.
21350
21351 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
21352
21353         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
21354         stale and straggling -fforce-addr comments above.
21355
21356         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
21357         define.
21358         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
21359         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
21360
21361 2008-01-23  Michael Matz  <matz@suse.de>
21362
21363         PR debug/34895
21364         * dwarf2out.c (force_type_die): Use modified_type_die instead of
21365         gen_type_die.
21366
21367 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
21368
21369         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
21370         malloc result type.
21371
21372 2008-01-23 Anatoly Sokolov <aesok@post.ru>
21373
21374         * config/avr/avr.c (avr_current_arch): New variable.
21375         (avr_arch_types): Add 'avr31' and 'avr51' entries.
21376         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
21377         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
21378         (avr_override_options): Init 'avr_current_arch'.
21379         (base_arch_s): Move from here...
21380         * config/avr/avr.h (base_arch_s): ... here. Add new members
21381         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
21382         'mega' to 'have_jmp_call'.
21383         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
21384         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
21385         macros.
21386         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
21387         architectures.
21388         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
21389         MULTILIB_MATCHES): Ditto.
21390
21391 2008-01-23  Richard Guenther  <rguenther@suse.de>
21392
21393         PR middle-end/31529
21394         * cgraphunit.c (cgraph_reset_node): Always mark the node
21395         not reachable if it is not queued already.
21396
21397 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
21398
21399         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
21400         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
21401         (cputype_selected): New static variable.
21402         (bfin_handle_option): Set it if -mcpu is used.
21403         (override_option): Select default set of workarounds if no cpu type
21404         selected on the command line.
21405         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
21406
21407         From  Michael Frysinger  <michael.frysinger@analog.com>
21408         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
21409         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
21410
21411         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
21412         for bf547, bf523, bf524, and bf526.
21413         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
21414         bf526.
21415         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
21416         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
21417         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
21418         __ADSPBF547__ and __ADSPBF54x__ for bf547.
21419         * doc/invoke.texi (Blackfin Options): Document that
21420         -mcpu now accept bf547, bf523, bf524, and bf526.
21421
21422 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
21423
21424         PR rtl-optimization/34628
21425         * combine.c (try_combine): Stop and undo after the first combination
21426         if an autoincrement side-effect on the first insn has effectively
21427         been lost.
21428
21429 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
21430
21431         PR target/34529
21432         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
21433         Offset addresses are not valid for Altivec or paired float modes.
21434
21435 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
21436
21437         PR c++/34607
21438         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
21439         if DECL_INITIAL (decl) is error_mark_node.
21440
21441         PR c++/34914
21442         * c-common.c (handle_vector_size_attribute): Only allow
21443         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
21444         the same way as pointer, array etc. types.
21445         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
21446
21447         PR c++/34917
21448         * tree.c (build_type_attribute_qual_variant): Call
21449         build_qualified_type if attributes are equal, but quals are not.
21450
21451 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21452
21453         PR 32102
21454         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
21455         * flags.h (warn_strict_aliasing): Remove.
21456         (warn_strict_overflow): Remove.
21457         * opts.c (warn_strict_aliasing): Remove.
21458         (warn_strict_overflow): Remove.
21459         * c-opts.c (c_common_handle_option): -Wall only sets
21460         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
21461         (c_common_post_options): Give default values to -Wstrict-aliasing
21462         and -Wstrict-overflow if they are uninitialized.
21463         * common.opt (Wstrict-aliasing): Specify Var and Init.
21464         (Wstrict-overflow): Likewise.
21465
21466 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
21467
21468         PR rtl-optimization/26854
21469         PR rtl-optimization/34400
21470         PR rtl-optimization/34884
21471         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
21472         DF_RD->gen.
21473         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
21474         (df_rd_bb_info.expanded_lr_out): Deleted
21475         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
21476         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
21477         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
21478         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
21479         Removed code to allocate, initialize or free expanded_lr_out.
21480         (df_rd_bb_local_compute_process_def): Restructured to make more
21481         understandable.
21482         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
21483         sets if the sets are being trimmed.
21484
21485 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
21486
21487         PR bootstrap/32287
21488         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
21489         (as_vers): Likewise.
21490         * configure: Regenerated.
21491
21492 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21493
21494         PR middle-end/33092
21495         * tree-pass.h (pass_build_alias): New pass.
21496         * tree-ssa-alias.c (gate_build_alias): New.
21497         (pass_build_alias): New.
21498         * passes.c (init_optimization_passes): Add pass_build_alias after
21499         pass_create_structure_vars.
21500
21501 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
21502
21503         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
21504         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
21505         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
21506         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
21507         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
21508         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
21509         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
21510         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
21511         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
21512         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
21513         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
21514         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
21515         * config/s390/s390.md (FP_ALL): New mode iterator.
21516         (_d): New mode attribute.
21517         ("*signbit<mode>2>"): Changed mode of first operand.
21518         ("isinf<mode>2"): Changed mode of first operand.
21519         ("*TDC_insn"): Adaptation for DFP modes.
21520
21521 2008-01-22  Ben Elliston  <bje@au.ibm.com>
21522
21523         * tree.c (check_qualified_type): Improve function description.
21524
21525 2008-01-21  Jason Merrill  <jason@redhat.com>
21526
21527         PR c++/34196
21528         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
21529         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
21530         if it is set.
21531
21532 2008-01-21  DJ Delorie  <dj@redhat.com>
21533
21534         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
21535         return zero.
21536
21537 2008-01-21  Richard Guenther  <rguenther@suse.de>
21538
21539         PR middle-end/34856
21540         * tree-cfg.c (verify_expr): Allow all invariant expressions
21541         instead of just constant class ones as reference argument.
21542         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
21543         like any other constant.
21544         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
21545
21546 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
21547
21548         * regmove.c (fixup_match_1): Update call crossed frequencies.
21549
21550 2008-01-21  Richard Guenther  <rguenther@suse.de>
21551
21552         PR c/34885
21553         * tree-inline.c (setup_one_parameter): Deal with mismatched
21554         types using a VIEW_CONVERT_EXPR.
21555
21556 2008-01-21  Alon Dayan  <alond@il.ibm.com>
21557             Olga Golovanevsky  <olga@il.ibm.com>
21558
21559         PR tree-optimization/34701
21560         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
21561         when the structure size is not a power of 2.
21562
21563 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
21564
21565         * doc/install.texi: Add doc for --enable-checking=df.
21566
21567 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21568
21569         PR rtl-optimization/34808
21570         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
21571
21572 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
21573
21574         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
21575         input.
21576
21577 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
21578
21579         PR rtl-optimization/26854
21580         PR rtl-optimization/34400
21581         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
21582         DF_RD->gen.
21583         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
21584         (df_rd_bb_info.expanded_lr_out): New.
21585         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
21586         * loop_iv.c (iv_analysis_loop_init): Ditto.
21587         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
21588         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
21589         Added code to allocate, initialize or free expanded_lr_out.
21590         (df_rd_bb_local_compute_process_def): Restructured to make
21591         more understandable.
21592         (df_rd_confluence_n): Add code to do nothing with fake edges and
21593         code to no apply invalidate_by_call sets if the sets are being trimmed.
21594         (df_lr_local_finalize): Renamed to df_lr_finalize.
21595         (df_live_local_finalize): Renamed to df_live_finalize.
21596
21597 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
21598
21599         PR target/34831
21600         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
21601         deciding whether to use reciprocal instructions.
21602
21603 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
21604
21605         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
21606         dwarf2out_note_section_used if cold_text_section is NULL.
21607
21608 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
21609
21610         PR gcov-profile/34610
21611         * tree-cfg.c (make_edges): Mark both outgoing edges from
21612         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
21613         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
21614         from OMP_FOR and OMP_CONTINUE outgoing edges.
21615
21616         * tree-profile.c (tree_profiling): Return early if
21617         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
21618         at the end.
21619         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
21620         from cfun to child_cfun.
21621         * function.h (struct function): Add after_tree_profile bit.
21622
21623 2008-01-19 Anatoly Sokolov <aesok@post.ru>
21624
21625         * config/avr/avr.S (_exit): Disable interrupt.
21626
21627 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
21628             Steven Bosscher  <stevenb.gcc@gmail.com>
21629
21630         PR rtl-optimization/26854
21631         PR rtl-optimization/34400
21632         * df-problems.c (df_live_scratch): New scratch bitmap.
21633         (df_live_alloc): Allocate df_live_scratch when doing df_live.
21634         (df_live_reset): Clear the proper bitmaps.
21635         (df_live_bb_local_compute): Only process the artificial defs once
21636         since the order is not important.
21637         (df_live_init): Init the df_live sets only with the variables
21638         found live by df_lr.
21639         (df_live_transfer_function): Use the df_lr sets to prune the
21640         df_live sets as they are being computed.
21641         (df_live_free): Free df_live_scratch.
21642
21643 2008-01-18  Ian Lance Taylor  <iant@google.com>
21644
21645         * common.opt: Add fmerge-debug-strings.
21646         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
21647         flag_merge_debug_strings rather than flag_merge_constants.
21648         * doc/invoke.texi (Option Summary): Mention
21649         -fmerge-debug-strings.
21650         (Debugging Options): Document -fmerge-debug-strings.
21651
21652 2008-01-18  Ian Lance Taylor  <iant@google.com>
21653
21654         PR c++/33407
21655         * tree.h (DECL_IS_OPERATOR_NEW): Define.
21656         (struct tree_function_decl): Add new field operator_new_flag.
21657         * tree-inline.c (expand_call_inline): When inlining a call to
21658         operator new, force the return value to go into a variable, and
21659         set DECL_NO_TBAA_P on that variable.
21660         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
21661
21662 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
21663
21664         PR debug/34484
21665         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
21666         DWARF2_DEBUGGING_INFO.
21667         (dwarf2out_note_section_used): Ditto.  Add prototype.
21668         (have_multiple_function_sections, text_section_used,
21669         cold_text_section_used, *cold_text_sections): Move declarations
21670         before their uses.
21671
21672 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
21673
21674         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
21675         field and add signal_ra.
21676         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
21677         assignments to frame state pc.  Move end of stack check after
21678         MD_FALLBACK_FRAME_STATE_FOR.
21679         (uw_update_context_1): Use frame state signal_regs if set, instead
21680         of checking signal_frame flag.
21681         (uw_update_context): Use frame state signal_ra if set.
21682         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
21683         * config/xtensa/linux-unwind.h: New file.
21684
21685 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
21686
21687         * modulo-sched.c (get_sched_window): Fix comment typo.
21688
21689 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
21690
21691         PR tree-optimization/34648
21692         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
21693
21694 2008-01-17  Anatoly Sokolov <aesok@post.ru>
21695
21696         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
21697         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
21698
21699 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
21700
21701         PR rtl-optimization/34400
21702         * df-core.c (df_worklist_dataflow_overeager,
21703         df_worklist_dataflow_doublequeue): New functions.
21704         (df_worklist_dataflow): Two different worklist solvers.
21705         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
21706         New param.
21707
21708 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21709
21710         PR testsuite/34821
21711         * doc/invoke.texi: Document the dependence on pthread for fopenmp
21712         and ftree-parallelize-loops.
21713
21714 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
21715
21716         PR rtl-optimization/34826
21717         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
21718
21719 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
21720
21721         * global.c (find_reg): Mark the eh regs as used if necessary.
21722         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
21723         * ra.h (struct allocno): no_eh_reg field added.  Changed
21724         no_stack_reg type to bitfield.
21725
21726 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
21727
21728         * tree.c (substitute_in_expr): Add missing 'break'.
21729
21730 2008-01-17  Richard Guenther  <rguenther@suse.de>
21731
21732         PR tree-optimization/34825
21733         * tree-ssa-math-opts.c (is_division_by): Do not recognize
21734         x / x as division to handle.
21735
21736 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21737
21738         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
21739         "-pthread" is specified.
21740         * pa-hpux11.h (LIB_SPEC): Likewise.
21741
21742 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
21743             Peter Bergner  <bergner@vnet.ibm.com>
21744
21745         PR rtl-optimization/33796
21746         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
21747
21748 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21749
21750         PR libgfortran/34699
21751         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
21752         static links.
21753         * pa-hpux10.h (LINK_SPEC): Likewise.
21754         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
21755
21756 2008-01-16  Richard Guenther  <rguenther@suse.de>
21757
21758         PR middle-end/32628
21759         * fold-const.c (fold_convert_const_int_from_int): Do not
21760         set overflow if that occured only because of a sign extension
21761         change when converting from/to a sizetype with the same
21762         precision and signedness.
21763
21764 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
21765
21766         PR debug/34249
21767         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
21768         location address to the correct place.  Update copyright year.
21769
21770 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21771
21772         * lambda-code.c (lambda_transform_legal_p): Handle the case of
21773         no dependences in the dependence_relations vector.
21774
21775 2008-01-16  Jan Hubicka  <jh@suse.cz>
21776
21777         PR rtl-optimization/31396
21778         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
21779         * cfg.c (dump_reg_info): Print it.
21780         * regs.h (struct reg_info_t): add freq_calls_crossed.
21781         (REG_FREQ_CALLS_CROSSED): New macro.
21782         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
21783         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
21784         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
21785         regmove_optimize): Update call crossed frequencies.
21786         * local-alloc.c (struct qty): Add freq_calls_crossed.
21787         (alloc_qty): Copute freq_calls_crossed.
21788         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
21789         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
21790         * ra.h (struct allocno): Add freq_calls_crossed.
21791
21792 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21793
21794         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
21795         libgomp when compiling with ftree-parallelize-loops.
21796         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
21797
21798 2008-01-16  Richard Guenther  <rguenther@suse.de>
21799
21800         PR tree-optimization/34769
21801         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
21802         * tree.c (int_cst_value): Instead make this function more
21803         permissive in what it accepts as valid input.  Document this
21804         function always sign-extends the value.
21805
21806 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
21807             Richard Guenther  <rguenther@suse.de>
21808
21809         PR c/34668
21810         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
21811         (gimple_fold_indirect_ref_rhs): ... this.
21812         (gimple_fold_indirect_ref): New function with foldings
21813         that preserve lvalueness.
21814         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
21815         * tree-flow.h (gimple_fold_indirect_ref): Declare.
21816         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
21817         to fold an INDIRECT_REF, fall back to the old use of
21818         fold_indirect_ref_1.
21819
21820 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
21821
21822         * tree-data-ref.c (subscript_dependence_tester_1): Call
21823         free_conflict_function.
21824         (compute_self_dependence): Same.
21825
21826 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
21827
21828         PR debug/34249
21829         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
21830         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
21831         function global.
21832         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
21833         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
21834         for DWARF2_UNWIND_INFO targets.
21835
21836 2008-01-16  Richard Guenther  <rguenther@suse.de>
21837
21838         PR c/34768
21839         * c-typeck.c (common_pointer_type): Do not merge inconsistent
21840         type qualifiers for function types.
21841
21842 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
21843
21844         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
21845         loop_iterator li from previous commit.
21846
21847 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
21848
21849         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
21850
21851 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
21852
21853         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
21854         (parallelize_loops): Don't parallelize irreducible components.
21855
21856 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21857
21858         PR c++/24924
21859         * c-opts (c_common_post_options): Do not enable CPP
21860         flag_pedantic_errors by default.
21861
21862 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
21863
21864         PR rtl-optimization/31944
21865         * cse.c (remove_pseudo_from_table): New function.
21866         (merge_equiv_classes): Use above function to remove pseudo-registers.
21867         (invalidate): Likewise.
21868
21869 2008-01-13  Richard Guenther  <rguenther@suse.de>
21870
21871         PR middle-end/34601
21872         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
21873         instead of TYPE_MODE to deal with calls from expand_one_error_var.
21874
21875 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
21876
21877         * gcse.c (cprop_jump): Call validate_unshare_change instead of
21878         validate_change to unshare the source of the PC set.
21879
21880 2008-01-12  Jan Hubicka  <jh@suse.cz>
21881
21882         PR middle-end/32135
21883         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
21884         references above array bounds.  This might trigger bounds checks for
21885         pointers to arrays.
21886
21887 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
21888
21889         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
21890         new_replaceable_dependencies.
21891
21892 2008-01-12  Doug Kwan  <dougkwan@google.com>
21893
21894         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
21895         instead of OPT_Wreturn_type in warning due to ignored return type
21896         qualifiers.
21897         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
21898         options included in -Wextra.
21899         * c.opt: New option -Wignored_qualifiers.
21900         * doc/invoke.texi (Warning Options, -Wextra): Add new option
21901         -Wignore_qualifiers.
21902         (-Wignored-qualifiers): Document.
21903         (-Wreturn-type): Remove description of functionality now handled
21904         by -Wignored-qualifiers.
21905
21906 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
21907
21908         PR ada/33788
21909         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
21910         NOP_EXPR if it is between integral types with the same precision.
21911
21912 2008-01-12  Jan Hubicka  <jh@suse.cz>
21913
21914         PR other/28023
21915         * invoke.texi (max-inline-recursive-depth): Fix default value.
21916
21917 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
21918
21919         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
21920         correct type.
21921
21922 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
21923
21924         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
21925
21926 2008-01-11  James E. Wilson  <wilson@specifix.com>
21927
21928         PR target/26015
21929         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
21930
21931 2008-01-11  Anatoly Sokolov <aesok@post.ru>
21932
21933         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
21934         save/restore frame pointer register and don't use 'call-prologues'
21935         optimization in function with "OS_task" attribute.
21936
21937 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
21938
21939         PR middle-end/31309
21940         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
21941         when copying to memory.
21942
21943 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
21944
21945         PR rtl-optimization/30905
21946         * cfgcleanup.c: Include dce.h
21947         (crossjumps_occured): New global variable.
21948         (try_crossjump_bb): Exit loop after finding a fallthru edge.
21949         If something changed, set crossjumps_occured to true.
21950         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
21951         Don't add/remove fake edges to exit here...
21952         (cleanup_cfg): ...but do it here, when crossjumping.
21953         Run a fast DCE when successful crossjumps occured in the latest
21954         iteration of try_optimize_cfg.
21955
21956 2008-01-11  Richard Guenther  <rguenther@suse.de>
21957
21958         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
21959         (struct vn_unary_op_s): Likewise.
21960         (vn_reference_insert): Free old reference on hash collision.
21961
21962 2008-01-10  Raksit Ashok  <raksit@google.com>
21963
21964         PR rtl-optimization/27971
21965         * combine.c (find_split_point): Split PLUS expressions which are
21966         inside a MEM rtx, and whose first operand is complex.
21967
21968 2008-01-10  DJ Delorie  <dj@redhat.com>
21969
21970         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
21971         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
21972         (m32c_hard_regno_ok): Call the underlying function.
21973
21974 2008-01-10  Richard Guenther  <rguenther@suse.de>
21975
21976         PR middle-end/34683
21977         * tree-cfg.c (tree_merge_blocks): Do not go through the
21978         full-blown folding and stmt updating path if we just deal
21979         with virtual operands.
21980         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
21981         test for abnormal SSA_NAMEs.
21982
21983 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
21984
21985         PR middle-end/34641
21986         * reload.c (push_reload): Add assertions.  All constants from
21987         reg_equiv_constant should have been used for replacing the respective
21988         pseudo earlier.
21989         (find_reloads_address): Invoke find_reloads_address_part for
21990         constant taken from the reg_equiv_constant array.
21991
21992 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
21993
21994         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
21995         field (valnum) the first in the struct.  Replace bools with
21996         unit bit fields.
21997
21998 2008-01-10  Richard Guenther  <rguenther@suse.de>
21999
22000         PR tree-optimization/34651
22001         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
22002         types and ordering for masking and converting.
22003
22004 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
22005
22006         PR tree-optimization/34017
22007         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
22008         also for PHI_NODE expressions.
22009
22010 2008-01-09  Jan Hubicka  <jh@suse.cz>
22011
22012         PR tree-optimization/34708
22013         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
22014         based on number of case labels.
22015         (init_inline_once): Remove switch_cost.
22016         * tree-inline.h (eni_weights_d): Remove switch_cost.
22017
22018 2008-01-09  Richard Guenther  <rguenther@suse.de>
22019         Andrew Pinski  <andrew_pinski@playstation.sony.com>
22020
22021         PR middle-end/30132
22022         * gimplify.c (gimplify_cond_expr): Do not create an addressable
22023         temporary if an rvalue is ok or an lvalue is not required.
22024
22025 2008-01-09  Richard Guenther  <rguenther@suse.de>
22026
22027         PR middle-end/34458
22028         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
22029         adjust return type.
22030
22031 2008-01-09  Richard Guenther  <rguenther@suse.de>
22032
22033         PR middle-end/34679
22034         * tree.c (host_integerp): Check for sizetype only if the
22035         type is an integer type.
22036
22037 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
22038
22039         PR debug/26364
22040         * opts.c (decode_options): Disable inlining of functions called
22041         once if not in unit-at-a-time mode.
22042
22043 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
22044
22045         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
22046
22047 2008-01-08  Richard Guenther  <rguenther@suse.de>
22048
22049         PR middle-end/31863
22050         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
22051         out early if the result will be unused.
22052
22053 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22054
22055         PR target/34709
22056         Revert:
22057
22058         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22059         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
22060         for TARGET_RECIP.
22061
22062 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
22063
22064         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
22065         for vectorization tuned.
22066
22067 2008-01-08  Richard Guenther  <rguenther@suse.de>
22068
22069         PR tree-optimization/34683
22070         * tree-ssa-operands.c (operand_build_cmp): Export.
22071         * tree-ssa-operands.h (operand_build_cmp): Declare.
22072         * tree-vn.c (vuses_compare): Remove.
22073         (sort_vuses): Use operand_build_cmp.
22074         (sort_vuses_heap): Likewise.
22075         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
22076         to re-use old VEC if available.  Do not sort already sorted VUSEs.
22077         (vdefs_to_vec): Do not sort already sorted VDEFs.
22078
22079 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
22080
22081         PR middle-end/34694
22082         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
22083
22084 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
22085
22086         PR target/34702
22087         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
22088         limitations of reciprocal sequences on x86 targets.
22089
22090 2008-01-08  Richard Guenther  <rguenther@suse.de>
22091
22092         PR tree-optimization/34683
22093         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
22094
22095 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
22096
22097         PR target/34622
22098         * config/darwin.c (darwin_mergeable_string_section): Don't use
22099         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
22100
22101 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
22102
22103         PR target/34682
22104         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
22105         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
22106         predicates of op0 and op1 to register_operand.
22107         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
22108         expander using X87MODEF mode iterator.  Change predicates of
22109         op0 and op1 to register_operand.
22110         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
22111         corresponding patterns and macroize using MODEF macro.  Change
22112         predicates of op0 and op1 to register_operand and remove
22113         "m" constraint. Disparage "r" alternative with "!".
22114         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
22115         macroize using X87MODEF macro.  Change predicates of op0 and op1
22116         to register_operand and remove "m" constraint.  Disparage "r"
22117         alternative with "!".
22118         (absneg splitter with memory operands): Remove.
22119         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
22120         patterns and macroize using X87MODEF mode iterator.
22121         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
22122         Change predicate of op1 to register_operand.
22123         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
22124         for memory operands.
22125
22126 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
22127
22128         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
22129
22130 2008-01-07  Richard Guenther  <rguenther@suse.de>
22131
22132         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
22133         fields.
22134
22135 2008-01-07  Richard Guenther  <rguenther@suse.de>
22136
22137         PR tree-optimization/34683
22138         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
22139         VOPs of the needed size to save memory.  Use VEC_quick_push
22140         to save compile-time.
22141         (vdefs_to_vec): Likewise.
22142
22143 2008-01-07  Sa Liu  <saliu@de.ibm.com>
22144
22145         * config/spu/spu.md (divdf3): Genetate inline code for double
22146         division.  The implementation doesn't handle INF or NAN, therefore it
22147         only applies when -ffinite-math-only is given.
22148
22149 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
22150
22151         PR libstdc++/34680
22152         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
22153         * doc/cpp.texi ([Common Predefined Macros]): Document.
22154
22155 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
22156
22157         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
22158         order to use commutative addition instead of subtraction.
22159
22160 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22161             Mircea Namolaru  <namolaru@il.ibm.com>
22162             Vladimir Yanovsky  <yanov@il.ibm.com>
22163             Revital Eres  <eres@il.ibm.com>
22164
22165         PR tree-optimization/34263
22166         * tree-outof-ssa.c (process_single_block_loop_latch,
22167         contains_tree_r): New functions.
22168         (analyze_edges_for_bb): Call process_single_block_loop_latch
22169         function to empty single-basic-block latch block if possible.
22170
22171 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22172
22173         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
22174         for TARGET_RECIP.
22175         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
22176
22177 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
22178
22179         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
22180
22181 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
22182
22183         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
22184
22185 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
22186
22187         PR tree-optimization/34618
22188         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
22189         flag from T.
22190
22191 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
22192
22193         PR target/34673
22194         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
22195         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
22196         Update copyright year.
22197
22198         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
22199         Update copyright year.
22200         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
22201         using NR fixup.
22202
22203 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
22204
22205         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
22206         edge does not point to current bb before changing need_assert.
22207
22208 2008-01-04  Richard Guenther  <rguenther@suse.de>
22209
22210         PR middle-end/34029
22211         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
22212         for verifying purposes if they are is_gimple_min_invariant.
22213
22214 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
22215
22216         PR tree-optimization/34448
22217         PR tree-optimization/34465
22218         * gimplify.c (gimplify_init_constructor): Add new parameter
22219         notify_temp_creation.  Use it.
22220         (gimplify_modify_expr_rhs): Take volatiles into account when
22221         optimizing constructors.
22222         Do not optimize constructors if gimplify_init_constructor will dump to
22223         memory.
22224         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
22225         * gcc.c-torture/compile/pr34448.c: New.
22226
22227 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
22228
22229         PR gcov-profile/34609
22230         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
22231         return_slot if result is TREE_ADDRESSABLE.
22232
22233 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
22234
22235         * config/mips/mips.md (sqrt_condition): Tweak comment.
22236         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
22237
22238 2008-01-03  Tom Tromey  <tromey@redhat.com>
22239
22240         PR c/34457
22241         * c-common.c (c_type_hash): Handle VLAs.
22242
22243 2008-01-03  Jan Hubicka  <jh@suse.cz>
22244
22245         PR tree-optimization/31081
22246         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
22247         0 when inlining and not inlining to first basic block.
22248         (remap_decl): When var is initialized to 0, don't set default_def.
22249         (expand_call_inline): Set entry_bb.
22250         * tree-inline.h (copy_body_data): Add entry_bb.
22251
22252 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
22253
22254         PR c++/34619
22255         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
22256         before returning.
22257
22258         PR tree-optimization/29484
22259         * tree-inline.c (inline_forbidden_p_2): New function.
22260         (inline_forbidden_p): Disallow inlining if some static var
22261         has an address of a local LABEL_DECL in its initializer.
22262         * doc/extend.texi (Labels as Values): Document &&foo behaviour
22263         vs. inlining.
22264
22265 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
22266
22267         PR tree-optimization/34635
22268         * tree-data-ref.c (add_other_self_distances): Make sure that the
22269         evolution step is constant.
22270
22271 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
22272
22273         PR middle-end/34608
22274         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
22275
22276 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
22277
22278         * tree-sra.c (scalarize_init): Insert the generate_element_init
22279         statements after the generate_element_zero statements.
22280
22281 2008-01-02  Richard Guenther  <rguenther@suse.de>
22282
22283         PR middle-end/34093
22284         PR middle-end/31976
22285         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
22286         for very large number of operands instead of ICEing.
22287
22288 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
22289
22290         PR target/34013
22291         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
22292         while stack probing.
22293
22294 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
22295
22296         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
22297         in C++0x mode.
22298
22299 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
22300
22301         PR libmudflap/26442
22302         * tree-mudflap.c (mx_register_decls): Guard warning by
22303         !DECL_ARTIFICIAL check.
22304
22305 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
22306
22307         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
22308         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
22309         sse5_perm<mode>): Fix constraints.