OSDN Git Service

* dwarf2.h (DW_OP_GNU_encoded_addr): New.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-24  Richard Henderson  <rth@redhat.com>
2
3         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
4         * unwind-dw2.c (execute_stack_op): Handle it.
5
6 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
7
8         Revert:
9         2008-09-24  Michael J. Eager  <eager@eagercon.com>
10
11 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
12
13         * c-common.c (fname_decl): New location argument.
14         * c-common.h (fname_decl): Same.
15         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
16         {warning,error}.
17         (c_parser_typeof_specifier): Same.
18         (c_parser_parms_list_declarator): Same.
19         (c_parser_asm_string_literal): Same.
20         (c_parser_compound_statement_nostart): Same.
21         (c_parser_label): Same.
22         (c_parser_do_statement): Same.
23         (c_parser_asm_statement): Same.
24         (c_parser_unary_expression): Same.
25         (c_parser_sizeof_expression): Same.
26         (c_parser_postfix_expression): Same.
27         (c_parser_pragma): Same.
28         (c_parser_omp_clause_collapse): Same.
29         (c_parser_omp_clause_num_threads): Same.
30         (c_parser_omp_clause_schedule): Same.
31         (c_parser_omp_all_clauses): Same.
32         (c_parser_omp_sections_scope): Same.
33         (c_parser_omp_for_loop): Same.  Pass condition's location to
34         c_objc_common_truthvalue_conversion.
35         (c_parser_enum_specifier): Remove comment.
36
37 2008-09-24  Michael J. Eager  <eager@eagercon.com>
38
39         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
40         are easy.
41         * config/rs6000/rs6000.c (rs6000_override_options): Move
42         rs6000_init_hard_regno_mode_ok after all options changed.
43         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
44         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
45         -msimple-fpu flags.  Add warning messages if single FP not configured.
46         (rs6000_file_start): Output gnu_attribute for single-float.
47         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
48         (rs6000_legitimize_address): Likewise.
49         (rs6000_legitimize_reload_address): Likewise.
50         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
51         TARGET_SINGLE_FLOAT.
52         (function_arg_advance): Likewise.
53         (function_arg): Likewise.
54         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
55         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
56         TARGET_SINGLE_FLOAT.
57         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
58         (rs6000_emit_prologue): Likewise.
59         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
60         TARGET_SINGLE_FLOAT.
61         (rs6000_libcall_value): Likewise.
62         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
63         (TARGET_DOUBLE_FLOAT): New default to 1
64         (TARGET_SIMPLE_FPU): New default to 0
65         (TARGET_SINGLE_FPU): New default to 0
66         (TARGET_SINGLE_FLOAT_MODE): New.
67         (TARGET_DOUBLE_FLOAT_MODE): New.
68         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
69         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
70         UNITS_PER_FP_WORD
71         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
72         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
73         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
74         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
75         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
76         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
77         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
78         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
79         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
80         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
81         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
82         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
83         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
84         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
85         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
86         cmptf_internal1, *cmptf_internal2): Condition on
87         TARGET_DOUBLE_FLOAT.
88         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
89         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
90         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
91         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
92         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
93         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
94         TARGET_SINGLE_FLOAT.
95         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
96         * config/rs6000/rs6000.opt (-msingle-float): New.
97         (-mdouble-float): New.
98         (-msimple-fpu): New.
99         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
100         -msingle-float, -mdouble-float, -msimple-fpu options.
101         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
102         _SOFT_DOUBLE for -msingle-float.
103         * config.gcc: New config for target=powerpc-xilinx-eabi.
104
105 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
106
107         * config/sparc/constraints.md: New file.
108         * config/sparc/sparc.md: Include it.
109         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
110         (sparc_extra_constraint_check): Delete.
111         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
112         (memory_ok_for_ldd): New predicate.
113         (sparc_extra_constraint_check): Delete.
114         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
115         (CONST_OK_FOR_LETTER_P): Likewise.
116         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
117         (EXTRA_CONSTRAINT): Likewise.
118
119 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
120
121         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
122
123 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
124
125         * alias.c (find_base_value): Use FIND_BASE_TERM.
126         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
127
128 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
129
130         * config/i386/i386.c: Include cselib.h.
131         (ix86_pic_register_p): New function.
132         (ix86_delegitimize_address): Use it to check for the PIC register.
133
134 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
135
136         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
137         * config/i386/i386.c (ix86_find_base_term): Don't check for
138         SYMBOL_REF and LABEL_REF.
139
140 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
141
142         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
143         constant PLUS in a CONST.
144
145 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
146
147         *config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
148         check for sibcall support for w64.
149
150 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
151
152         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
153
154 >>>>>>> .r140641
155 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
156
157         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
158         parser_build_binary_op.
159         * c-decl.c (build_enumerator): Pass location to build_binary_op.
160         * c-typeck.c (build_array_ref): Same.
161         (parser_build_unary_op): New location argument.
162         (pointer_diff): Pass location to build_binary_op,
163         c_objc_common_truthvalue_conversion.
164         (build_modify_expr): Same.
165         (build_unary_op): New location argument.
166         (build_binary_op): New location argument.
167         (c_objc_common_truthvalue_conversion): Pass location to
168         c_*common_truthvalue_conversion.
169         * c-convert.c (convert): Same.
170         * c-common.c (binary_op_error): New location argument.
171         (pointer_int_sum): Pass location to build_binary_op.
172         (c_common_truthvalue_conversion): New location argument.
173         (warn_for_sign_compare): Same.
174         * c-common.h: Add location argument to c_common_truthvalue_conversion,
175         binary_op_error, build_binary_op, warn_for_sign_compare.
176         * c-parser.c (c_parser_condition): Pass location to
177         c_*common_truthvalue_conversion.
178         (c_parser_conditional_expression): Save condition's location and pass
179         it on down.
180         (c_parser_binary_expression): Same, but for the binary operator's
181         location.
182         (c_parser_omp_for_loop): Pass location to
183         c_objc_common_truthvalue_conversion.
184
185 2008-09-23  Martin Jambor  <mjambor@suse.cz>
186
187         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
188         (cgraph_node_remove_callees): New temporary f.  Hold the next item
189         in f when looping.
190         (cgraph_node_remove_callers): Likewise.
191
192         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
193         (ipa_node_removal_hook): Likewise.
194
195         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
196         gimple_call_copy_skip_args and moved to the gimple_call section.
197         * gimple.c (gimple_copy_call_skip_args): Renamed to
198         gimple_call_copy_skip_args.  Changed al users.
199
200 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
201
202         * ira-color.c (start_allocno_priorities): Rename to
203         setup_allocno_priorities.  Use costs and
204         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
205         range lengths.  Get rid off doubles.
206         (ira_fast_allocations): Call start_allocno_priorities.
207         
208 2008-09-22  David Daney  <ddaney@avtrex.com>
209
210         PR target/37593
211         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
212         register if TARGET_LONG_CALLS.
213
214 2008-09-22  Richard Guenther  <rguenther@suse.de>
215
216         PR tree-optimization/37145
217         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
218         value-numbering union accesses with their offset and size only.
219         (visit_reference_op_load): Fix simplification of inserted conversions.
220         * tree-ssa-pre.c (find_or_generate_expression): Do not
221         recursively generate expressions if running FRE.
222
223 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
224
225         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
226         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el,
227         *baddu_di<mode>): New patterns.
228
229 2008-09-22  Richard Guenther  <rguenther@suse.de>
230
231         PR tree-optimization/37145
232         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
233         (phi_translate_1): Constant fold references.
234
235 2008-09-22  Ira Rosen  <irar@il.ibm.com>
236
237         PR tree-optimization/37482
238         * tree-vectorizer.h (struct _slp_instance): Add new field.
239         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
240         (get_earlier_stmt): New function.
241         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
242         function.
243         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
244         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
245         asserts that GSI points to the scalar statement being vectorized.
246         Set new statement location according to GSI.
247         (vect_schedule_slp_instance): Use GSI of
248         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
249
250 2008-09-21  Jan Hubicka  <jh@suse.cz>
251
252         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
253         (ipcp_insert_stage): Update dead_nodes bitmap.
254
255 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
256
257         PR target/37528 
258         * config/i386/t-cygming (SHLIB_LC): Remove.
259         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
260         * config/i386/t-cygwin (SHLIB_LC): Specify all required
261         libraries.
262
263 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
264
265         PR middle-end/37170
266         PR middle-end/37280
267         * final.c (mark_symbol_ref_as_used): New helper function.
268         (output_operand): Instead of just looking inside MEMs for
269         SYMBOL_REFs, use new helper function and for_each_rtx.
270         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
271         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
272         Make head comment more general.
273         * config/darwin.c (machopic_output_indirection): Handle weak
274         references here, like in assemble_external.
275
276 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
277
278         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
279         (sparc_emit_float_lib_cmp): Change return type.
280         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
281         (gen_compare_operator): New function.
282         (sparc_emit_float_lib_cmp): Return the new operator to be used in
283         the comparison sequence.  Minor tweaks.
284         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
285         that the final operator and the result of sparc_emit_float_lib_cmp
286         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
287         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
288         buneq, bunge, bunle, bltgt): Assert that the final operator and the
289         result of sparc_emit_float_lib_cmp match for software TFmode.
290         (movqicc, movhicc, movsicc, movdicc): Merge into...
291         (mov<I:mode>cc): ...this.
292         (movsfcc, movdfcc, movtfcc): Merge into...
293         (mov<F:mode>cc): ...this.
294         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
295         into...
296         (mov<I:mode>_cc_v9): ...this.
297         (movdi_cc_sp64_trunc): Delete.
298         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
299         movdi_cc_reg_sp64): Merge into...
300         (mov<I:mode>_cc_reg_sp64): ...this.
301         (movsf_cc_sp64): Rename into...
302         (movsf_cc_v9): ...this.
303         (movdf_cc_sp64): Rename into...
304         (movdf_cc_v9): ...this.
305         (movtf_cc_hq_sp64): Rename into...
306         (movtf_cc_hq_v9): ...this.
307         (movtf_cc_sp64): Rename into...
308         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
309
310 2008-09-21  Diego Novillo  <dnovillo@google.com>
311
312         * doc/gccint.texi: Include generic.texi and gimple.texi.
313         Re-order index.
314         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
315         (GIMPLE): Move to gimple.texi.
316         (Annotations): Remove references to to stmt_ann_t and
317         ssa_name_ann_t.
318         (SSA Operands): Rename from 'Statement Operands'.
319         * doc/generic.texi: New.
320         * doc/gimple.texi: New.
321         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and
322         gimple.texi.
323         * Makefile.in (TEXI_GCCINT_FILES):
324         * gimple.c (gimple_copy_call_skip_args): Rename from
325         giple_copy_call_skip_args.  Update all users.
326         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
327
328 2008-09-21  Ira Rosen  <irar@il.ibm.com>
329
330         PR tree-optimization/37539
331         * tree-vect-transform.c (vect_transform_strided_load): Save vector
332         statement in related statement field only for the first load of the
333         group of loads with the same data reference.
334
335 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
336
337         * config/mips/mips.h (TUNE_OCTEON): New macro.
338         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
339         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
340         * config/mips/octeon.md: New file.
341         * config/mips/mips.md: Include octeon.md.  Restore
342         semi-alphabetical order of include files.
343
344 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
345
346         PR target/37571
347         * config/i386/i386.md (*jcc_fused_1): Removed.
348         (*jcc_fused_2): Likewise.
349         (*jcc_fused_3): Likewise.
350         (*jcc_fused_4): Likewise.
351
352 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
353
354         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
355         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
356         * target.h (gcc_target): Add ira_cover_classes.
357         * ira.c: Remove IRA_COVER_CLASSES guards.
358         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
359         instead of IRA_COVER_CLASSES.
360         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
361         (setup_class_translate): Likewise.
362         (setup_reg_class_intersect_union): Likewise.
363         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
364         test of targetm.ira_cover_classes.
365         * opts.c (decode_options): Use targetm.ira_cover_classes instead
366         of IRA_COVER_CLASSES.
367         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
368         (TARGET_INITIALIZER): Include it.
369         * targhooks.h (default_ira_cover_classes): Declare.
370         * targhooks.c (default_ira_cover_classes): New function.
371
372 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
373         
374         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
375         
376 2008-09-19  Ian Lance Taylor  <iant@google.com>
377
378         * varasm.c (narrowing_initializer_constant_valid_p): Return
379         NULL_TREE if ENDTYPE is not an integer.
380
381 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
382
383         PR tree-opt/30930
384         * tree-ssa.c (execute_update_addresses_taken): Also update
385         DECL_GIMPLE_REG_P for vector and complex types.
386
387 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
388             Jan Hubicka  <jh@suse.cz>
389
390         PR middle-end/37567
391         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
392         empty before freeing them.
393         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
394
395 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
396
397         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
398         * config/xtensa/predicates.md (tls_symbol_operand): New.
399         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
400         (TARGET_CANNOT_FORCE_MEM): Define.
401         (xtensa_tls_symbol_p): New.
402         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
403         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
404         (xtensa_tls_module_base): New.
405         (xtensa_call_tls_desc): New.
406         (xtensa_legitimize_tls_address): New.
407         (xtensa_legitimize_address): Handle TLS symbols.
408         (xtensa_tls_referenced_p_1): New.
409         (xtensa_tls_referenced_p): New.
410         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and UNSPEC_DTPOFF.
411         (XTENSA_BUILTIN_THREAD_POINTER): New.
412         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
413         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3 builtin.
414         Add declarations for __builtin_thread_pointer and
415         __builtin_set_thread_pointer.
416         (xtensa_fold_builtin): Recognize new builtins.
417         (xtensa_expand_builtin): Expand new builtins.
418         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
419         (TARGET_THREADPTR): Define.
420         (HAVE_AS_TLS): Define default value.
421         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
422         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
423         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
424         (UNSPECV_SET_TP): New.
425         (sym_TPOFF, sym_DTPOFF): New.
426         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
427         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
428         * configure: Regenerated.
429         
430 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
431
432         PR target/37394
433         * config/ia64/ia64.c (ia64_optimization_options): Move
434         checking and setting flag_schedule_insns_after_reload and
435         ia64_flag_schedule_insns2 back to ...
436         (ia64_override_options): Here.
437
438 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
439
440         PR rtl-opt/37451
441         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
442         zero extend count after the correction to it is done.
443         (doloop_optimize): Update call to doloop_modify, don't zero extend
444         count before call.
445
446 2008-09-18  Martin Jambor  <mjambor@suse.cz>
447
448         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
449
450         * ipa-prop.c: Correct comments.
451         * ipa-prop.h: Likewise.
452
453 2008-09-18  Jan Hubicka  <jh@suse.cz>
454
455         PR middle-end/37448
456         * ipa-reference.c (ipa_reference_local_vars_info_d,
457         ipa_reference_global_vars_info_d,
458         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
459         ipa_reference_vars_info_t): Move here from ipa-reference.h
460         (node_duplication_hook_holder, node_removal_hook_holder): New.
461         (get_reference_vars_info_from_cgraph): Rename to ...
462         (get_reference_vars_info): ... this one, use cgraph uids.
463         (get_local_reference_vars_info, get_global_reference_vars_info):
464         Use cgraph instead of decl.
465         (ipa_reference_get_read_local, ipa_reference_get_written_local): Remove.
466         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
467         ipa_reference_get_written_global, ipa_reference_get_not_written_global): Use
468         cgraph argument.
469         (check_call): Simplify avail check.
470         (scan_stmt_for_static_refs): Update.
471         (propagate_bits): Update.
472         (merge_callee_local_info): Remove.
473         (init_function_info): Use cgraph nodes.
474         (clean_function_local_data): Break out from ...
475         (clean_function): ... here.
476         (copy_local_bitmap, copy_global_bitmap): New functions.
477         (duplicate_node_data, remove_node_data): New functions.
478         (generate_summary): Register hooks; use visibility instead of
479         master clones.
480         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
481         * ipa-reference.h (ipa_reference_local_vars_info_d,
482         ipa_reference_global_vars_info_d,
483         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
484         ipa_reference_vars_info_t): Move to ipa-reference.c
485         (ipa_reference_get_read_local, ipa_reference_get_written_local):
486         Remove.
487         (ipa_reference_get_read_global, ipa_reference_get_written_global,
488         ipa_reference_get_not_read_global, ipa_reference_get_not_written_global):
489         Update prototype.
490         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
491         (init_state): Remove.
492         (node_duplication_hook_holder, node_removal_hook_holder): New.
493         (get_function_state, set_function_state): Use VECtor.
494         (analyze_function): Check body availability.
495         (add_new_function): Likewise.
496         (duplicate_node_data, remove_node_data): New.
497         (generate_summary): Register hooks; do not care about clones.
498         (propafate): Do not care about clones; recursive functions are not looping.
499         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
500         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
501         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
502         static.
503         * tree-flow.h (function_ann_d): Remove reference_vars_info.
504         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops): Update call of
505         ipa-reference accesors.
506
507 2008-09-18  Simon Baldwin  <simonb@google.com>
508
509         * c-opts.c (c_common_handle_option): Add handling for
510         -Wbuiltin-macro-redefined command line option.
511         * c.opt: Added builtin-macro-redefined option.
512         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
513         documentation.
514
515 2008-09-18  Richard Guenther  <rguenther@suse.de>
516
517         PR tree-optimization/37258
518         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
519         and signedness for integral types.
520         (vn_phi_eq): Require compatible types.
521
522 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
523
524         PR debug/34037
525         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
526         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
527         VAR_DECL.
528         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
529         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
530         ggc_free other TREE_LIST nodes from that chain.
531         * function.c (instantiate_decls): Instantiate also DECL_RTL
532         of vars in cfun->local_decls, free that list afterwards.
533
534 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
535
536         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
537         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
538
539 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
540
541         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
542         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
543
544 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
545
546         PR tree-optimization/37102
547         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
548         from a node. Check to see if another PHI is dead.
549         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
550         remove real PHIs which have no uses.
551         (rewrite_out_of_ssa): Call eliminate_useless_phis.
552
553 2008-09-18  Richard Guenther  <rguenther@suse.de>
554
555         PR middle-end/37284
556         * tree-cfg.c (remove_useless_stmts_1): Remove
557         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
558
559 2008-09-18  Nick Clifton  <nickc@redhat.com>
560
561         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
562         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
563         to frv_secondary_reload_class.
564         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
565         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
566         (frv_secondary_reload_class): Omit unused parameter.
567         (frv_secondary_reload): New function.  Handle the case when
568         secondary_reload_class() is called before the reload_(in|out)
569         _optabs have been initialised.
570         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
571         unused parameter.
572         * config/frv/frv.md: Define an exclusion set between fr550_m0
573         and fr550_f0.
574
575 2008-09-18  Richard Guenther  <rguenther@suse.de>
576
577         PR tree-optimization/37456
578         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
579         want to insert after ends a BB insert on the single fallthru
580         outgoing edge.
581
582 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
583
584         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
585         Mention -march=z9-109, z9-ec and z10.
586
587 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
588
589         PR rtl-optimization/37544
590         * regrename.c (maybe_mode_change): Exit early when copy_mode
591         is narrower than orig_mode and narrower than new_mode.
592
593 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
594
595         PR middle-end/37499
596         * sched-int.h (struct _haifa_insn_data): Remove unused field
597         ref_count.
598
599         * sched-rgn.c (ref_counts): Remove.
600         (insn_referenced): New static variable.
601         (INSN_REF_COUNT): Remove.
602         (sched_run_compute_dependencies): Use insn_referenced instead of
603         INSN_REF_COUNT.
604         (add_branch_dependences): Likewise.  Delete dead assignment.
605
606 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
607
608         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
609         consumer is an asm.  Add comment why this is important.
610         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
611         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around
612         it.
613
614 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
615
616         * expr.c (emit_group_store): Do not shift before moving via a
617         stack slot.
618
619 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
620
621         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
622         from aggregate to non-aggregate type if the bit pattern is not fully
623         preserved afterwards.
624
625 2008-09-17  Richard Guenther  <rguenther@suse.de>
626
627         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
628         (verify_gimple_assign): ... this.  Split into ...
629         (verify_gimple_assign_unary): ... this,
630         (verify_gimple_assign_binary): ... that,
631         (verify_gimple_assign_single): ... and this.
632         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
633         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
634         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
635         (verify_types_in_gimple_reference): Be forgiving with
636         VIEW_CONVERT_EXPRs.
637         (verify_gimple_phi): Deal with virtual operands.
638
639         * tree.def (PREDICT_EXPR): Change to tcc_expression.
640
641 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
642
643         * tree.c (get_callee_fndecl): Don't call the language hook.
644         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
645         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
646         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
647
648 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
649
650         * tree.c (protected_set_expr_location): Don't unnecessarily
651         check for error_mark_node.
652
653 2008-09-17  Art Haas  <ahaas@impactweather.com>
654
655         * ipa-reference.c (analyze_function): Declare step only if
656         ENABLE_CHECKING is defined.
657
658 2008-09-17  Jan Hubicka  <jh@suse.cz>
659
660         PR c++/18071
661         * tree.h (DECL_INLINE): remove.
662         (DECL_DECLARED_INLINE_P): Update docs.
663         (DECL_NO_INLINE_WARNING_P): new.
664         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
665         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
666
667 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
668             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
669
670         PR bootstrap/37441
671         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
672         false.
673
674 2008-09-17  Jan Hubicka  <jh@suse.cz>
675
676         * ipa-reference.c (ipa_obstack): Remove.
677         (local_info_obstack, global_info_obstack): New.
678         (add_static_var): We now handle variables only.
679         (mark_address_taken, mark_load, mark_store): New functions based on ...
680         (check_operand): ... remove.
681         (get_asm_stmt_operands): Rename to ...
682         (check_asm_memory_clobber): ... this. Look only for memory clobber.
683         (scan_stmt_for_static_refs): Rewrite.
684         (scan_op_for_static_refs): Rename to ...
685         (scan_initializer_for_static_refs): do not look for VAR_DECL
686         initializers; stop recursion on types and decls.
687         (ipa_init): Use proper obstacks.
688         (analyze_variable): Use scan_initializer_for_static_refs.
689         (init_function_info): Use local obstack.
690         (analyze_function): Simplify.
691         (add_new_function): We don't need visited_nodes obstack.
692         (generate_summary): Use proper obstacks; cleanup after propagation.
693
694 2008-09-17  Richard Guenther  <rguenther@suse.de>
695
696         PR middle-end/37385
697         PR tree-optimization/37491
698         * alias.c (get_alias_set): Use the canonical type.
699         * tree-vect-transform.c (vectorizable_store): Use the type of
700         the lhs for the vector type.  Adjust checking.
701         (vectorizable_load): Adjust checking.
702
703 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
704             Adam Nemet  <anemet@caviumnetworks.com>
705
706         PR rtl-optimization/37483
707         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
708         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
709         Rearrange code to better match the original comment.  Check
710         t_unconditional first.  Improve comment.
711
712 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
713
714         PR c/37529
715         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
716         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
717
718         PR c++/37530
719         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
720         GIMPLE_TRY if cleanup sequence is empty.
721
722 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
723
724         PR middle-end/37263
725         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
726         eliminate IV if the cost are the same.
727
728 2008-09-16  Richard Guenther  <rguenther@suse.de>
729
730         PR middle-end/37380
731         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
732         if not necessary.
733
734 2008-09-16  Richard Guenther  <rguenther@suse.de>
735
736         PR tree-optimization/37508
737         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
738
739 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
740
741         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
742
743 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
744
745         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
746         use gen_floatdidf2 directly.
747         (floatunssidf2): Likewise.
748         (floatsidf_ppc64_mfpgpr): Remove.
749         (floatsidf_ppc64): Remove.
750         (floatunssidf_ppc64): Remove.
751
752 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
753
754         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
755         rather than update_cost_queue.
756
757         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
758         in every call starting with the second one, instead of only when
759         alias_bitmap_obstack.elements != NULL.
760
761         * tree-predcom.c (filter_suitable_components): Free all refs in
762         act->refs vector before calling release_component.
763         (add_ref_to_chain): Free ref if not adding it to chain->refs.
764
765         * tree-data-ref.c (free_subscripts): Free all subscript objects.
766
767         * tree-loop-linear.c (linear_transform_loops): Initialize
768         lambda_obstack only after calling perfect_loop_nest_depth.
769         Goto free_and_continue instead of just continue for later failures.
770
771         PR middle-end/37479
772         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
773
774         PR libmudflap/36397
775         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
776
777 2008-09-14  Andreas Schwab  <schwab@suse.de>
778
779         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
780
781 2008-09-14  Jan Hubicka  <jh@suse.cz>
782
783         * invoke.texi (-fconserve-stack): Document.
784         * opts.c (decode_options): Handle conserve_stack.
785         * common.opt (fconvserve_stack): New.
786
787 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
788
789         * config.host: Add x-aix to host_xmake_file.
790         * config/rs6000/t-aix52: Do not override LDFLAGS.
791         * config/rs6000/x-aix: New file.
792
793 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
794
795         PR target/19636
796         PR target/24894
797         PR target/31644
798         PR target/31786
799         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
800         is not recognized as a valid register usage. Allow REG_X to be used
801         as a base pointer.
802         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
803         forces a reload when using a base register.
804
805 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
806
807         * config/i386/cygming-crtend.c (register_frame_ctor): If
808         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
809         directly with atexit.
810         (deregister_frame_ctor): Rename to ...
811         (deregister_frame_dtor): Use to call __gcc_deregister_frame
812         if !DEFAULT_USE_CXA_ATEXIT.
813
814 2008-09-13  Jan Hubicka  <jh@suse.cz>
815
816         * cgraph.c: Include value-prof.h
817         * Makefile.in (cgraph.o): Add value-prof.h dependency.
818
819 2008-09-13  Jan Hubicka  <jh@suse.cz>
820
821         PR middle-end/32581
822         * tree-profile.c (add_abnormal_goto_call_edges): New function.
823         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
824         tree_gen_one_value_profiler, tree_gen_average_profiler,
825         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
826
827 2008-09-13  Jan Hubicka  <jh@suse.cz>
828
829         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
830         too many bytes on misalligned blocks.
831
832 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
833
834         * doc/cfg.texi: Fix some typos.
835         * doc/extend.texi: Likewise.
836         * doc/install.texi: Likewise.
837         * doc/invoke.texi: Likewise.
838         * doc/rtl.texi: Likewise.
839         * doc/tree-ssa.texi: Likewise.
840
841 2008-09-13  Richard Guenther  <rguenther@suse.de>
842
843         PR middle-end/30141
844         * tree-nested.c (finalize_nesting_tree_1): Generate valid
845         gimple stores for memory rhs.
846
847 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
848
849         PR rtl-optimization/37489
850         * cse.c (fold_rtx): Don't return const_true_rtx for float
851         compare if FLOAT_STORE_FLAG_VALUE is undefined.
852
853 2008-09-13  Jan Hubicka  <jh@suse.cz>
854
855         PR tree-optimization/37392
856         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
857
858 2008-09-13  Martin Jambor  <mjambor@suse.cz>
859             Jan Hubicka  <jh@suse.cz>
860
861         * cgraph.c (free_edges): New variable.
862         (NEXT_FREE_EDGE): New macro.
863         (cgraph_free_edge): New function.
864         (cgraph_remove_edge): Call cgraph_remove_edge_1.
865         (cgraph_node_remove_callees): Likewise.
866         (cgraph_node_remove_callers): Likewise.
867         (cgraph_create_edge): Reuse edges from the free list.  Do not
868         update uid if doing so.
869         (cgraph_remove_*_hook): Add free call.
870
871 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
872
873         * ira-color.c (conflict_allocno_vec): Delete.
874         (update_cost_queue_elem): New structure.
875         (update_cost_queue): New variable.
876         (update_cost_queue_tail): Likewise.
877         (update_cost_queue_elems): Likewise.
878         (allocno_update_cost_check): Delete.
879         (initiate_cost_update): Allocate update_cost_queue_elems
880         instead of allocno_update_cost_check.
881         (finish_cost_update): Update the free()s accordingly.
882         (start_update_cost): New function.
883         (queue_update_cost): Likewise.
884         (get_next_update_cost): Likewise.
885         (update_copy_costs_1): Inline into...
886         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
887         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
888         once we've established they are equal.  Don't allocate update
889         costs if there is nothing to add to them.
890         (update_conflict_hard_regno_costs): Remove ALLOCNO and
891         DIVISOR arguments.  Use a queue instead of recursive calls;
892         process all the allocnos in the initial queue, rather than
893         a single allocno.
894         (assign_hard_reg): Use queue_update_cost instead of
895         conflict_allocno_vec.  Queue coalesced allocnos instead
896         of calling update_conflict_hard_regno_costs for each one.
897         Just call update_conflict_hard_regno_costs once for the
898         entire queue.
899         (ira_color): Remove conflict_allocno_vec handling.
900
901 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
902
903         PR tree-optimization/37484
904         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
905         (save_var_name): Same.
906         (initialize_cloog_names): Same.
907         (initialize_cloog_names): Same.
908
909 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
910
911         * tree-scalar-evolution.c (set_instantiated_value): Set
912         instantiated_below.
913
914 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
915
916         PR rtl-opt/37377
917
918         * ira-build.c (common_loop_tree_node_dominator): Remove.
919         (copy_live_ranges_to_removed_store_destinations): New function.
920         (regno_top_level_allocno_map): Move to top level from ...
921         (ira_flattening): ... here.  Use
922         copy_live_ranges_to_removed_store_destinations.
923
924         * ira-emit.c (generate_edge_moves): Fix a comment.
925
926 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
927
928         PR target/37466
929         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
930         scratch register after 'set' pattern.
931
932 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
933
934         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
935         information passed to mark_reg_pointer.
936         * explow.c (force_reg): Likewise.
937
938 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
939
940         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
941         when building for the celledp architecture.
942
943 2008-09-12  Richard Guenther  <rguenther@suse.de>
944
945         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
946
947 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
948
949         PR rtl-optimization/37424
950         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
951         the regnos instead of the addresses.
952
953 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
954
955         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
956
957 2008-09-11  Richard Guenther  <rguenther@suse.de>
958
959         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
960         entering the weaker equivalence recording.
961
962         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
963
964 2008-09-11  Jeff Law <law@redhat.com>
965
966         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
967         by assign_stack_local on the IRA path for stack slot sharing
968         as well as the non-IRA path.
969
970 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
971
972         * config/i386/i386.h: Fix whitespace issues.
973
974 2008-09-11  Martin Jambor  <mjambor@suse.cz>
975
976         * ipa-prop.h (struct ipa_param_flags): Removed.
977         (struct ipa_param_descriptor): New structure.
978         (struct ipa_node_params): ipcp_lattices, param_decls and
979         param_flags moved to ipa_param_description.
980         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
981         descriptors.  Renamed all users.
982         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
983         changed to access descriptors.  Renamed all users.
984         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
985         to access descriptors. Renamed all users.
986         * ipa-cp.c (ipcp_init_cloned_node): Call
987         ipa_initialize_node_params instead of ipa_count_formal_params and
988         ipa_create_param_decls_array.
989         (ipcp_analyze_node): Likewise.
990         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
991         descriptors.  Renamed all users.
992         (ipcp_initialize_node_lattices): Remove allocation.
993         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
994         ipa_initialize_node_params instead of ipa_count_formal_params and
995         ipa_create_param_decls_array.
996         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
997         ipa_populate_param_decls, made static, added parameter info,
998         renamed mt to node, removed allocation, changed to use
999         descriptors.
1000         (ipa_count_formal_params): Made static, added parameter info,
1001         renamed mt to node.
1002         (ipa_initialize_node_params): New function.
1003         (ipa_check_stmt_modifications): Changed to use descriptors.
1004         (ipa_detect_param_modifications): Removed allocation, changed to
1005         use descriptors.
1006         (ipa_note_param_call): Changed to use descriptors.
1007         (ipa_analyze_params_uses): Removed allocation.
1008         (ipa_free_node_params_substructures): Changed to use descriptors.
1009         (ipa_edge_duplication_hook): Use the unused attribute.
1010         (ipa_node_duplication_hook): Use the unused attribute, changed to
1011         use descriptors, changed to duplicate descriptors.
1012
1013         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
1014         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
1015         indirect inlining.  Made static.
1016         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
1017         functions called only once.
1018         (cgraph_decide_recursive_inlining): Don't call
1019         ipa_propagate_indirect_call_infos, pass new_edges to
1020         cgraph_mark_inline_edge instead.
1021         (cgraph_decide_inlining_of_small_functions): Don't call
1022         ipa_propagate_indirect_call_infos, pass new_edges to
1023         cgraph_mark_inline_edge instead.
1024         (cgraph_decide_inlining): Don't call
1025         ipa_propagate_indirect_call_infos.
1026         * ipa-prop.c: Check that vectors are allocated.
1027
1028         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
1029         iff a new cgraph edges have been created.
1030         (cgraph_decide_inlining): New variable redo_always_inline.
1031         Flattening and always_inlining loop until callgraph stabilizes.
1032         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
1033         true iff new cgraph edges have been created.
1034         (propagate_info_to_inlined_callees): Likewise.
1035         (ipa_propagate_indirect_call_infos): Likewise.
1036
1037 2008-09-11  Richard Guenther  <rguenther@suse.de>
1038
1039         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
1040         (set_prologue_iterations): Likewise.
1041         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
1042         Likewise.
1043         (vect_update_init_of_dr): Likewise.
1044         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
1045         type verification.
1046         * fold-const.c (fold_unary): Do not generate calculations
1047         in sub-types.
1048
1049 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
1050
1051         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
1052         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
1053         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
1054
1055         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
1056         a bool.
1057         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
1058         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
1059         before finalizing the changes.
1060         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
1061         for BIT_IOR_EXPR.
1062         (simplify_truth_ops_using_ranges): New.
1063         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
1064         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
1065         whether a simplification was made.
1066         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
1067         use a switch statement and also call simplify_truth_ops_using_ranges.
1068
1069 2008-09-11  Jan Hubicka  <jh@suse.cz>
1070
1071         * ggc-common.c (loc_array): Make static.
1072         * dce.c (rest_of_handle_ud_dce): Free worklist.
1073
1074 2008-09-11  Jan Hubicka  <jh@suse.cz>
1075
1076         * cgraph.c (cgraph_release_function_body): Plug memory leak on
1077         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
1078         function so we are sure we do not dangle it forever.
1079         * function.c (outer_function_chain, find_function_data): Remove.
1080         (function_context_stack): New.
1081         (push_function_context, pop_function_context): Update.
1082         * function.h (struct function): Remove pointer outer.
1083         (outer_function_chain, find_function_data): Remove.
1084         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
1085
1086 2008-09-11  Jan Hubicka  <jh@suse.cz>
1087
1088         PR middle-end/37448
1089         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
1090
1091 2008-09-11  Jan Hubicka  <jh@suse.cz>
1092
1093         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
1094
1095 2008-09-11  Jan Hubicka  <jh@suse.cz>
1096
1097         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
1098         (free_var_map_entry): New function.
1099         (redirect_edge_var_map_destroy): Use it.
1100
1101 2008-09-11  Jan Hubicka  <jh@suse.cz>
1102
1103         PR middle-end/37448
1104         * tree-inline.c (add_lexical_block): Replace with ...
1105         (prepend_lexical_block): ... prepend at begginig.
1106         (remap_blocks): Use it and reverse later.
1107         (expand_call_inline): Use prepend_lexical_block.
1108
1109 2008-09-11  Jan Hubicka  <jh@suse.cz>
1110
1111         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
1112
1113 2008-09-11  Jan Hubicka  <jh@suse.cz>
1114
1115         * function.c (free_after_compilation): Call insn_locators_free.
1116         * cfglayout.c (insn_locators_free): New function.
1117         * rtl.h (insn_locators_free): Declare.
1118
1119 2008-09-11  Jan Hubicka  <jh@suse.cz>
1120
1121         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
1122         vector pointer.
1123         (cond_move_process_if_block): Update call.
1124
1125 2008-09-11  Jan Hubicka  <jh@suse.cz>
1126
1127         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
1128         * vec.c: Include hashtab.h
1129         (vec_descriptor, ptr_hash_entry): New structures.
1130         (vec_desc_hash, vec_ptr_map): New static variables.
1131         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
1132         register_overhead, free_overhead, vec_heap_free): New functions.
1133         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
1134         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
1135         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
1136         New functions.
1137
1138 2008-09-11  Ira Rosen  <irar@il.ibm.com>
1139
1140         PR tree-optimization/37474
1141         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
1142         length of load permutation.
1143
1144 2008-09-11  Andreas Schwab  <schwab@suse.de>
1145
1146         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
1147
1148 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
1149
1150         PR target/37382
1151         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
1152         * dse.c (find_shift_sequence): Use extract_low_bits instead of
1153         simplify_gen_subreg.
1154
1155 2008-09-11  Ira Rosen  <irar@il.ibm.com>
1156
1157         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
1158         for alias check.
1159
1160 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1161
1162         PR middle-end/37338
1163         * gimplify.c (gimplify_body): Call default_rtl_profile.
1164
1165         PR target/36904
1166         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
1167         instead of tok->val.node if not expanding to something else.  Handle
1168         intervening CPP_PADDING tokens.
1169         (altivec_categorize_keyword): Remove unneeded comparisons.
1170
1171 2008-09-10  Richard Guenther  <rguenther@suse.de>
1172
1173         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
1174
1175 2008-09-10  Richard Guenther  <rguenther@suse.de>
1176
1177         PR middle-end/37432
1178         * tree-inline.c (insert_init_stmt): Make sure to not
1179         insert invalid gimple stores.
1180
1181 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
1182
1183         PR tree-optimization/37388
1184         * toplev.c (process_options): Fail and warn when graphite
1185         flags are used, but the compiler has not been configured
1186         with graphite libraries.
1187         * graphite.c (graphite_transform_loops): Remove printfs
1188         to dump_file for the case when graphite is not available.
1189
1190 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
1191
1192         PR target/37434:
1193         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
1194         the even element into register.
1195         (ix86_expand_vector_init_general): Don't use
1196         ix86_expand_vector_init_interleave on V16QImode and V8HImode
1197         if we can't move from GPR to SSE register directly.
1198
1199 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
1200
1201         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
1202         not lose track of the number of NOPs needed.  Number of NOPs needed
1203         for sync vs. loads workaround was switched; corrected.  Run second
1204         pass for all workarounds.  No NOPs needed after call insns.  Change
1205         second pass to use find_next_insn_start and find_load helpers in order
1206         to properly detect parallel insns.
1207         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
1208
1209 2008-09-10  Jan Hubicka  <jh@suse.cz>
1210
1211         * value-prof.c (gimple_ic): Fix tuplification bug.
1212         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
1213         var warning.
1214
1215 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1216
1217         PR tree-optimization/37353
1218         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
1219         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
1220         calls instead of cond_dead_built_in_calls.
1221         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
1222         initalize the vector only before adding first entry.  Use VEC_safe_push
1223         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
1224         shrink_wrap_conditional_dead_built_in_calls call.
1225
1226 2008-09-10  Ira Rosen  <irar@il.ibm.com>
1227
1228         PR tree-optimization/37385
1229         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument,
1230         and use it as a vector type if not NULL.
1231         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
1232         vectorized rhs.
1233         (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
1234         argument.
1235         (vectorizable_load): Likewise.
1236
1237 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1238
1239         * config/i386/i386.md (SWI32): New mode iterator.
1240         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
1241         of SWI.
1242
1243 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1244
1245         PR rtl-optimization/37435
1246         * caller-save.c (insert_restore, insert_save): Check the mode by
1247         reg_save_code.
1248
1249 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1250
1251         PR other/37265
1252         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
1253         splay tree lookup.
1254         (dw2_output_indirect_constant_1): Use unstripped name in symbol
1255         reference.
1256
1257 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
1258
1259         * doc/invoke.texi (ARM Options): Correct errors in discussion
1260         of -mfloat-abi, -mhard-float, and -msoft-float.
1261
1262 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
1263             Jan Hubicka  <jh@suse.cz>
1264
1265         PR middle-end/37356
1266         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
1267         calling gimple_regimplify_operands on it.  Iterate over all newly
1268         added statements, not just the last one.
1269         (insert_init_stmt): Insert stmt into seq first, then call
1270         gimple_regimplify_operands on it.  Don't create new gimplification
1271         context, nor find referenced vars.
1272
1273 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
1274
1275         PR other/37419
1276         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
1277         to pointer to vector pointer.
1278         * ipa-prop.c (ipa_propagate_indirect_call_infos,
1279         propagate_info_to_inlined_callees): Likewise.
1280         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
1281         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
1282         ipa_check_create_edge_args.
1283         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument
1284         to pointer to vector pointer.
1285         (cgraph_decide_inlining_of_small_function): Adjust
1286         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
1287         calls.
1288
1289         PR target/37438
1290         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
1291         optimizing for size, not speed.
1292
1293         PR rtl-optimization/37408
1294         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
1295         if parm is promoted.
1296
1297 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
1298
1299         PR tree-optimization/37375
1300         * tree-scalar-evolution.c (scev_info_str): Add field
1301         instantiated_below.
1302         (new_scev_info_str, eq_scev_info, find_var_scev_info,
1303         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
1304         set_instantiated_value): Pass instantiated_below.
1305         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
1306         to above functions.
1307         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
1308         the definitions are not instantiated.
1309
1310         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
1311         (block_before_loop): New.
1312         * tree-data-ref.c (dr_analyze_indices): Update uses of
1313         instantiate_scev.
1314         * graphite.c (block_before_scop): New.
1315         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
1316         basic block, not a loop for determining the parameters.
1317         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
1318         scop.
1319         (idx_record_params, find_params_in_bb, find_scop_parameters,
1320         build_loop_iteration_domains, add_conditions_to_domain): Update calls
1321         to instantiate_scev.
1322
1323         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
1324
1325 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1326
1327         PR rtl-opt/37333
1328
1329         * ira-build.c (ira_create_allocno): Setup frequency to 0.
1330
1331         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
1332         Check zero freq and increase if necessary.
1333
1334 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1335
1336         * ira-conflicts.c (process_regs_for_copy): Check that the hard
1337         regno is in the right range.  Add comments.
1338
1339 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1340
1341         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
1342         warnings.
1343         * mips-tfile.c (copy_object): Cast alloca result to int *.
1344         * mips-tdump.c (print_symbol): Cast xmalloc return values to
1345         proper types.
1346         Rename class to sclass.
1347         (read_tfile): Cast read_seek return values to proper types.
1348         Cast xcalloc return value to proper type.
1349
1350 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1351
1352         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
1353         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
1354         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
1355
1356 2008-09-09  Jan Hubicka  <jh@suse.cz>
1357
1358         * profile.c (is_edge_inconsistent): Add debug output; ignore
1359         negative count on fake edges.
1360         (is_inconsistent): Add debug output.
1361
1362 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
1363
1364         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
1365         dump message.
1366         (choose_ready): When first insn is chosen from the ready list, also
1367         dump it.
1368
1369 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
1370
1371         PR rtl-optimization/37360
1372         * haifa-sched.c (max_issue): Do not assert that we never issue more
1373         insns than issue_rate.  Add comment.
1374
1375 2008-09-09  Richard Guenther  <rguenther@suse.de>
1376
1377         * tree-cfg.c (verify_types_in_gimple_op): Remove.
1378         (verify_types_in_gimple_call): Rename to ...
1379         (verify_gimple_call): ... this.  Enhance.
1380         (verify_types_in_gimple_cond): Remove.
1381         (verify_gimple_comparison): New function ...
1382         (verify_types_in_gimple_assign): ... split out from here.
1383         (verify_types_in_gimple_return): Rename to ...
1384         (verify_gimple_return): ... this.  Enhance.
1385         (verify_types_in_gimple_switch): Rename to ...
1386         (verify_gimple_switch): ... this.  Enhance.
1387         (verify_gimple_goto): New function.
1388         (verify_types_in_gimple_phi): Rename to ...
1389         (verify_gimple_phi): ... this.  Enhance.
1390         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
1391         Fold in single-statement cases from verify_types_in_gimple_seq_2.
1392         (verify_types_in_gimple_seq_2): Remove cases handled in
1393         verify_types_in_gimple_stmt.
1394
1395 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1396
1397         * config/bfin/bfin.c (n_regs_to_save): New static variable.
1398         (push_multiple_operation, pop_multiple_operation): Set it.
1399         (workaround_rts_anomaly): New function.
1400         (workaround_speculation): New function, broken out of bfin_reorg.
1401         (bfin_reorg): Call the new functions.
1402
1403 2008-09-09  Richard Guenther  <rguenther@suse.de>
1404
1405         PR middle-end/37354
1406         PR middle-end/30165
1407         * gimplify.c (gimplify_conversion): Change conversions of
1408         non-register type to VIEW_CONVERT_EXPRs.
1409         (gimplify_addr_expr): If we need to make the operand
1410         addressable make sure to use a properly initialized
1411         temporary for that so it gets a valid gimple store.
1412
1413 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
1414
1415         * function.h (struct function): Add function_start_locus.
1416         * cfgexpand.c (gimple_expand_cfg): Use it.
1417         * c-parser.c (c_parser_declaration_or_fndef): Set it.
1418
1419 2008-09-09  Richard Guenther  <rguenther@suse.de>
1420
1421         PR tree-optimization/37433
1422         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
1423         function calls.
1424
1425 2008-09-09  Richard Guenther  <rguenther@suse.de>
1426
1427         PR tree-optimization/37387
1428         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
1429         and bits to a common type.
1430
1431 2008-09-09  Nick Clifton  <nickc@redhat.com>
1432
1433         * config/v850/v850.md (return): Restore frame size restriction.
1434
1435 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
1436
1437         * c-common.c (c_expand_decl): Remove.
1438         * c-common.h (anon_aggr_type_p): Remove prototype.
1439         (DECL_ANON_UNION_ELEMS): Remove.
1440         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
1441         * c-decl.c (anon_aggr_type_p): Remove.
1442         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
1443         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
1444         * langhooks.h (struct lang_hooks): Remove expand_decl.
1445         * langhooks.c (lhd_expand_decl): Remove.
1446         * stmt.c (expand_anon_union_decl): Remove.
1447         * tree.h (expand_anon_union_decl): Remove prototype.
1448
1449 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
1450
1451         PR target/36609
1452         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
1453         zero.
1454         * config/avr/avr.md  (QISI) : Define mode iterator.
1455         (negated_tst<mode>) : Redefine as split using mode macro.
1456         (reversed_tstqi): Define insn as reversed compare with zero.
1457         (reversed_tsthi): Ditto.
1458         (reversed_tstsi): Ditto.
1459
1460 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1461
1462         PR middle-end/37393
1463         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
1464         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
1465
1466         PR middle-end/37414
1467         * predict.c (optimize_function_for_size_p): Don't segfault if
1468         FUN is NULL.
1469         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
1470         tree_swap_operands_p): Don't test cfun != NULL before calling
1471         optimize_function_for_s*_p.
1472
1473 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
1474
1475         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
1476         end of the search.
1477
1478 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
1479
1480         * crx/crx.h (IRA_COVER_CLASSES): Define.
1481
1482 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1483
1484         PR middle-end/37337
1485         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
1486         even when a stmt has been gimple_modified_p, but after fold_stmt is
1487         not any longer.  Remove unneeded may_have_exposed_new_symbols
1488         initializations.
1489
1490 2008-09-08  Richard Guenther  <rguenther@suse.de>
1491
1492         PR tree-optimization/37421
1493         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
1494         valueize the RHS.
1495
1496 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1497
1498         PR middle-end/37415
1499         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
1500
1501 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1502
1503         PR driver/37409
1504         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
1505         * pa-hpux10.h (LINK_SPEC): Likewise.
1506         * pa-hpux11.h (LINK_SPEC): Likewise.
1507
1508 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1509
1510         * pa32-regs.h (IRA_COVER_CLASSES): Define.
1511         * pa64-regs.h (IRA_COVER_CLASSES): Define.
1512
1513 2008-09-07  Helge Deller  <deller@gmx.de>
1514
1515         * pa/linux-atomic.c: New file.
1516         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
1517         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
1518
1519 2008-09-07  Richard Guenther  <rguenther@suse.de>
1520             Ira Rosen  <irar@il.ibm.com>
1521
1522         PR tree-optimization/36630
1523         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
1524         Call STRIP_NOPS before calling evolution_part_in_loop_num.
1525
1526 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
1527             Ira Rosen  <irar@il.ibm.com>
1528
1529         PR tree-optimization/35642
1530         * config/rs6000/altivec.md (mulv8hi3): Implement.
1531
1532 2008-09-06  Jeff Law <law@redhat.com>
1533
1534         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
1535
1536 2008-09-06  Jan Hubicka  <jh@suse.cz>
1537
1538         PR tree-optimization/14703
1539         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
1540         declarations.
1541         * passes.c (init_optimization_passes): Recompute inline parameters.
1542
1543 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
1544
1545         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
1546         DECL being null.
1547
1548 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
1549             Peter Fuerst  <post@pfrst.de>
1550
1551         * doc/invoke.texi: Document -mr10k-cache-barrier=.
1552         * doc/extend.texi: Document __builtin_mips_cache.
1553         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
1554         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
1555         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
1556         __GCC_HAVE_BUILTIN_MIPS_CACHE.
1557         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
1558         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
1559         (set_push_mips_isas): New variable.
1560         (mips_r10k_cache_barrier): New variable.
1561         (cache): New availability predicate.
1562         (mips_builtins): Add an entry for __builtin_mips_cache.
1563         (mips_build_cvpointer_type): New function.
1564         (MIPS_ATYPE_CVPOINTER): New macro.
1565         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
1566         mode is VOIDmode.
1567         (r10k_simplified_address_p, r10k_simplify_address)
1568         (r10k_uncached_address_p, r10k_safe_address_p)
1569         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
1570         (r10k_needs_protection_p_call, r10k_needs_protection_p)
1571         (r10k_insert_cache_barriers): New functions.
1572         (mips_reorg_process_insns): Delete cache barriers after a
1573         branch-likely instruction.
1574         (mips_reorg): Call r10k_insert_cache_barriers.
1575         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
1576         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
1577         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
1578         (mips_cache, r10k_cache_barrier): New define_insns.
1579
1580 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
1581
1582         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
1583         * ira-color.c (setup_allocno_left_conflicts_num): Use
1584         hard_reg_set_equal_p instead of a comparison with
1585         ira_zero_hard_reg_set.
1586         * ira.c (setup_reg_subclasses): Likewise.
1587         (setup_cover_and_important_classes): Likewise.
1588         (setup_class_translate): Likewise.
1589         (setup_reg_class_intersect_union): Likewise.
1590         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
1591         (ira_init_once): Don't initialize them.
1592
1593 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
1594
1595         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
1596
1597 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
1598
1599         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
1600
1601 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1602
1603         Improved branch hints, safe hints, and scheduling.
1604
1605         * haifa-sched.c (sched_emit_insn) : Define.
1606         * sched-int.h (sched_emit_insn) : Add prototype.
1607         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
1608         -mhint-max-distance -msafe-hints) : Document.
1609         * config/spu/spu.c (spu_flag_var_tracking): New.
1610         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
1611         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
1612         TARGET_ASM_FILE_START): Define.
1613         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
1614         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
1615         (spu_emit_branch_hint): Add blocks argument.
1616         (insert_branch_hints, insert_nops): Remove.
1617         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
1618         uses_ls_unit, spu_sched_init_global, spu_sched_init,
1619         spu_sched_reorder, asm_file_start): New functions.
1620         (clock_var, spu_sched_length, pipe0_clock,
1621         pipe1_clock, prev_clock_var, prev_priority,
1622         spu_ls_first, prev_ls_clock): New static variables.
1623         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
1624         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
1625         (nopn_nv): Add a non-volatile version of nop.
1626         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
1627         -mhint-max-distance, -msafe-hints): New options.
1628
1629 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
1630             Samuel Tardieu  <sam@rfc1149.net>
1631
1632         * opts.c (decode_options): Combine nested if statements.
1633
1634         PR target/37283
1635         * opts.c (decode_options): Handle more relationships among
1636         unit-at-a-time, toplevel-reorder, and section-anchors.
1637
1638 2008-09-05  David Daney  <ddaney@avtrex.com>
1639
1640         * doc/install.texi (--enable-reduced-reflection): Document new option.
1641
1642 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
1643
1644         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
1645         constantpool_mem_p.
1646         (constantpool_operand): New.
1647         (move_operand): Disallow sub-word modes for the constant pool.
1648         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
1649         (xtensa_secondary_reload_class): Replace with....
1650         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
1651         Set icode for sub-word reloads from the constant pool.
1652         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
1653         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
1654         * config/xtensa/xtensa.md (reload<mode>_literal): New.
1655         * config/xtensa/xtensa-protos.h: Update prototypes.
1656
1657 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
1658
1659         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
1660         (REG_CLASS_NAMES): Update.
1661         (REG_CLASS_CONTENTS): Update.
1662         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
1663         of ALL_REGS for regs 77 and 78.
1664         * function.c (instantiate_virtual_regs_in_insn): Assert that
1665         return value of simplify_gen_subreg is not NULL.
1666
1667 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
1668
1669         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
1670         (gen_rtvec_v): Fix coding standards.
1671
1672 2008-09-04  Jan Hubicka  <jh@suse.cz>
1673
1674         * i386.c (decide_alg): Be more conservative about optimizing for size.
1675
1676 2008-09-04  Ian Lance Taylor  <iant@google.com>
1677
1678         * varasm.c (narrowing_initializer_constant_valid_p): New
1679         static function.
1680         (initializer_constant_valid_p): Call it.
1681
1682 2008-09-04  Jeff Law  <law@redhat.com>
1683
1684         * fold-const.c (native_encode_real): Fix computation of WORDS.
1685         (native_interpret_real): Likewise.
1686
1687 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
1688
1689         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
1690
1691 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1692
1693         * ira-conflicts.c (process_regs_for_copy): Check insn to check
1694         that the cost is already taken into account in ira-costs.c
1695
1696         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
1697
1698         * ira-build.c (print_copy, print_copies, ira_debug_copy,
1699         ira_debug_copies): New.
1700         (ira_bulid): Call print_copies.
1701
1702         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
1703
1704 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
1705
1706         PR target/32783
1707         * config/rs6000/rs6000.c (optimization_options): Remove check of
1708         flag_toplevel_order.
1709
1710 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
1711
1712         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
1713         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
1714         second operand is a reg_imm10_operand.
1715         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
1716         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
1717         (*seq_<GPR:mode><GPR2:mode>): Rename to
1718         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
1719         ISA_HAS_SEQ_SNE.
1720         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
1721         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
1722         ISA_HAS_SEQ_SNE.
1723         (*sne_<GPR:mode><GPR2:mode>): Rename to
1724         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
1725         ISA_HAS_SEQ_SNE.
1726
1727 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
1728
1729         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
1730         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
1731         combining an arithmetic right shift by more than 31 and a
1732         trunction.  Don't match for out-of-range shift amounts.  Set
1733         attribute mode to <MODE>.
1734         (*lshr32_trunc<mode>): Name the pattern combining a logical right
1735         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
1736         (*<optab>_trunc<mode>_exts): New pattern for truncated right
1737         shifts by less than 32.
1738         (extv): Change predicate on first operand to accept registers.
1739         Change predicate of the other operands from immediate_operand to
1740         const_int_operand.  Expand exts when source is a register.
1741         (extzv): Change predicate of the constant operands from
1742         immediate_operand to const_int_operand.
1743         (extzv<mode>): Change predicate of the constant operands from
1744         immediate_operand to const_int_operand and no constraint. Also
1745         remove mode.
1746         (*extzv_trunc<mode>_exts): New pattern.
1747
1748 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
1749
1750         * config/mips/mips.h (ISA_HAS_CINS): New macro.
1751         * config/mips/mips-protos.h (mask_low_and_shift_p,
1752         mask_low_and_shift_len): Declare.
1753         * config/mips/mips.c (mask_low_and_shift_p,
1754         mask_low_and_shift_len): New functions.
1755         (mips_print_operand): Handle new operand prefix "m".
1756         * config/mips/mips.md (*cins<mode>): New pattern.
1757
1758 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
1759
1760         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
1761         optimizing for size.
1762
1763 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
1764
1765         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
1766         regardless of epilogue_completed.
1767
1768 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1769
1770         PR middle-end/37359
1771         * ira-lives.c (process_bb_node_lives): Check setjmp.
1772
1773 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
1774
1775         PR middle-end/37243
1776         * ira-build.c (form_loop_tree): Reverse BB walk.
1777         (create_bb_allocnos): Likewise.
1778         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
1779         (mark_reg_store): Rename to...
1780         (mark_ref_live): ...this and take a df_ref argument instead of
1781         note_stores arguments.  Assert that we have a register.
1782         (mark_reg_clobber): Delete.
1783         (def_conflicts_with_inputs_p): New function.
1784         (mark_reg_conflicts): Delete.
1785         (mark_reg_death): Rename to...
1786         (mark_ref_dead): ...this and take a df_ref argument instead of
1787         a register.  Assert that we have a register.
1788         (process_bb_node_lives): Hoist frequency calculation out of
1789         instruction walk.  Convert from a forwards scan to a backwards scan.
1790         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
1791         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
1792         (create_allocno_live_ranges): Don't create regs_set.
1793
1794 2008-09-04  Ian Lance Taylor  <iant@google.com>
1795
1796         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
1797         or REG_LABEL_TARGET.
1798         * calls.c (emit_library_call_value_1): Use MEM_P rather than
1799         comparing MODE with MEM.
1800         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
1801         comparing with GF_PREDICT_TAKEN.
1802         (gimple_get_lhs): Change code to enum gimple_code.
1803         (gimple_set_lhs): Likewise.
1804         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
1805         * omp-low.c (find_omp_clause): Change kind parameter to enum
1806         omp_clause_code.
1807         * tree-flow.h (find_omp_clause): Update declaration.
1808         * regrename.c (clear_dead_regs): Change kind parameter to enum
1809         reg_note.
1810         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
1811         GET_MODE.
1812         * see.c (see_get_extension_data): Change return type to enum
1813         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
1814         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
1815         (see_gen_normalized_extension): Change extension_code parameter to
1816         enum entry_type.
1817         (see_seek_pre_extension_expr): Change extension_code to enum
1818         entry_type.
1819         (see_merge_one_def_extension): Likewise.
1820         (see_handle_relevant_defs): Likewise.
1821         (see_handle_relevant_uses): Likewise.
1822         (see_analyze_one_def): Likewise.
1823         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
1824         GIMPLE_ASM rather than ASM_EXPR.
1825         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
1826         GIMPLE_RETURN rather than RETURN_EXPR.
1827         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
1828         (evaluate_stmt): Likewise.
1829         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
1830         to enum vect_relevant.
1831         (vect_mark_stmts_to_be_vectorized): Change assertion to not
1832         compare gimple codes with tree codes.
1833
1834 2008-09-04  Paul Brook  <paul@codesourcery.com>
1835
1836         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
1837
1838 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
1839
1840         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
1841         pointer check lost in the recent no-unit-at-a-time patch.
1842
1843 2008-09-04  Jan Hubicka  <jh@suse.cz>
1844
1845         PR middle-end/37343
1846         * tree-switch-conversion.c (check_final_bb): Accept only IP
1847         invariants.
1848
1849 2008-09-04  Jan Hubicka  <jh@suse.cz>
1850
1851         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
1852         Break out from ...
1853         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
1854         using_ranges argument.
1855         (vrp_evaluate_conditional): Avoid bogus warning for type range.
1856         (vrp_visit_cond_stmt): Update call of
1857         vrp_evaluate_conditional_warnv_with_ops
1858
1859 2008-09-04  Jan Hubicka  <jh@suse.cz>
1860
1861         PR tree-optimization/37345
1862         PR tree-optimization/37358
1863         PR tree-optimization/37357
1864         * tree.c (build_function_type_skip_args): Build distinct type copy;
1865         set TYPE_CONTEXT.
1866         (build_function_decl_skip_args): Set type of new decl not orig decl;
1867         clear DECL_VINDEX for methods turned into functions.
1868
1869 2008-09-04  Nick Clifton  <nickc@redhat.com>
1870
1871         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
1872         * configure: Regenerate.
1873         * config.in: Regenerate.
1874         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
1875         alignment field, if it is supported.
1876
1877 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
1878
1879         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
1880         libraries.
1881
1882 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
1883
1884         * config/rs6000/rs6000.c (processor_target_table): Do not
1885         enable VMX for POWER6.
1886
1887 2008-09-03  Anton Blanchard  <anton@samba.org>
1888
1889         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
1890         emit memory barrier before operation.
1891
1892 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
1893
1894         PR testsuite/37325
1895         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
1896         default_elf_asm_output_external.
1897
1898 2008-09-03  Jeff Law  <law@redhat.com>
1899
1900         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
1901
1902 2008-09-03  Richard Henderson  <rth@redhat.com>
1903
1904         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
1905         memory barrier to below the test-and-set.
1906         (alpha_split_lock_test_and_set_12): Likewise.
1907
1908 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1909
1910         PR rtl-opt/37243
1911
1912         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
1913         all_allocnos.
1914
1915         * ira-color.c (print_loop_title): Use all_allocnos.
1916         (color_pass): Ditto.  Don't add border_allocnos.  Check that
1917         subloop allocno in the correspdoning bitmap all_allocnos.
1918
1919         * ira-emit.c (change_loop): Use all_allocnos.
1920
1921         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
1922         Ditto.
1923         (ira_create_allocno): Set up all_allocnos bit for the created
1924         allocno.
1925         (create_cap_allocno): Remove setting mentioned_allocnos.
1926         (create_insn_allocnos): Ditto.
1927         (remove_unnecessary_allocnos): Use all_allocnos.
1928         (check_allocno_creation): Check that allocnos are in the
1929         corresponding bitmap all_allocnos.
1930
1931 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1932
1933         PR rtl-opt/37243
1934
1935         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
1936         (process_regs_for_copy): Process subregs.  Refine check when cost
1937         is taken into account in ira-costs.c.
1938         (process_reg_shuffles): Use REG_SUBREG_P.
1939         (add_insn_allocno_copies): Ditto.  Ignore modes.
1940
1941         * ira-color.c (conflict_allocno_vec): New.
1942         (COST_HOP_DIVISOR): New macro.
1943         (update_copy_costs_1): Use it.
1944         (update_conflict_hard_regno_costs): New function.
1945         (assign_hard_reg): Use it.
1946         (ira_color): Allocate and free conflict_allocno_vec.
1947
1948 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
1949
1950         PR rtl-opt/37296
1951
1952         * ira-int.h (ira_sort_insn_chain): Remove.
1953
1954         * ira.c (basic_block_order_nums, chain_insn_order,
1955         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
1956         (ira): Don't call ira_sort_insn_chain.
1957
1958         * reload1.c (reload): Don't call ira_sort_insn_chain.
1959
1960 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1961
1962         PR middle-end/37293
1963         * cgraphunit.c (update_call_expr): Remove eh regions from statements
1964         which become non throw.
1965         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
1966         update_call_expr after updating the flags on the decl.
1967
1968 2008-09-03  Jan Hubicka  <jh@suse.cz>
1969
1970         PR tree-optimization/37315
1971         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
1972         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
1973         (cgraph_analyze_functions): Use node->analyzed
1974         (cgraph_mark_functions_to_output): Likewise.
1975         (cgraph_expand_function): All functions can be released after
1976         expanding.
1977         (cgraph_optimize): Use gimple_has_body_p.
1978         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
1979         (cgraph_decide_inlining_incrementally): Likewise.
1980         (inline_transform): Inline transform.
1981         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
1982         copy fields needed.
1983         (inlinable_function_p): Drop gimple_body check.
1984         (expand_call_inline): Use gimple_has_body_p.
1985         * gimple.c (gimple_has_body_p): New.
1986         * gimple.h (gimple_has_body_p): Add prototype.
1987         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
1988         (dump_function_to_file): Use gimple_has_body_p check.
1989
1990 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
1991
1992         PR c++/37346
1993         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
1994         substatements.
1995         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
1996
1997 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
1998
1999         From Michael Frysinger  <michael.frysinger@analog.com>
2000         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
2001         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
2002         for bf538.
2003
2004 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
2005
2006         Add picoChip port.
2007         * doc/extend.texi: Document picoChip builtin functions.
2008         * doc/invoke.texi: Document picoChip options.
2009         * doc/contrib.texi: Add picoChip contribution.
2010         * doc/md.texi: Document picoChip constraints.
2011         * config.gcc: Add picochip-*-*.
2012         * config/picochip/: Add new port.
2013
2014 2008-09-03  Richard Guenther  <rguenther@suse.de>
2015
2016         PR tree-optimization/37328
2017         * tree-sra.c (sra_build_assignment): Gimplify properly.
2018         (generate_copy_inout): Take the correct stmt as definition,
2019         remove bogus assert.
2020
2021 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2022
2023         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
2024         attributes.
2025
2026         From Michael Frysinger  <michael.frysinger@analog.com>
2027         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
2028
2029 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
2030
2031         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
2032         (__gthread_setspecific): Revert 2008-08-31 change to
2033         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
2034
2035 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
2036
2037         * diagnostic.c (error_at): New.
2038         * toplev.h (error_at): New prototype.
2039         * c-typeck.c (build_array_ref): Call error_at instead of error.
2040         Pass location to pedwarn.
2041
2042 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
2043
2044         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
2045
2046 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2047
2048         * dwarf2out.c (tree_add_const_value_attribute): Only handle
2049         VAR_DECL and CONST_DECL.
2050
2051 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
2052             Jakub Jelinek  <jakub@redhat.com>
2053
2054         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
2055         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
2056         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
2057         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
2058         Don't set ix86_save_varrargs_registers.
2059         (ix86_setup_incoming_varargs): Assume cum != NULL.
2060         (ix86_va_start): Check ix86_varargs_gpr_size and
2061         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
2062         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
2063         from frame pointer if ix86_varargs_gpr_size == 0.
2064         (ix86_compute_frame_layout): Updated.
2065         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
2066         (ix86_varargs_gpr_size): Define.
2067         (ix86_varargs_fpr_size): Likewise.
2068         (machine_function): Remove save_varrargs_registers.
2069         Add varargs_gpr_size and varargs_fpr_size.
2070
2071 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2072
2073         * config/alpha/alpha.c (va_list_skip_additions,
2074         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
2075         (alpha_gimplify_va_arg): Call unshare_expr on second use of
2076         offset_field.
2077
2078         PR tree-optimization/36766
2079         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
2080         for already removed basic blocks.
2081
2082         PR target/36332
2083         * real.c (real_maxval): Clear a lower bit to make real_maxval
2084         match get_max_float for IBM long double format.
2085
2086 2008-09-02  Andreas Schwab  <schwab@suse.de>
2087
2088         * configure.ac: Use m4_quote to quote the expansion of m4_do.
2089         * configure: Regenerate.
2090
2091 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
2092
2093         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
2094         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
2095         checking for a non-VOID CONSTANT_P.
2096
2097 2008-09-02  Jan Hubicka  <jh@suse.cz>
2098
2099         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
2100         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
2101         sdiv_pow2_cheap
2102
2103 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
2104
2105         * expr.c (emit_group_store): Don't assert stack temp mode size.
2106
2107 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
2108             Tobias Grosser  <grosser@fim.uni-passau.de>
2109             Jan Sjodin  <jan.sjodin@amd.com>
2110             Harsha Jagasia  <harsha.jagasia@amd.com>
2111             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2112             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
2113             Adrien Eliche  <aeliche@isty.uvsq.fr>
2114
2115         Merge from graphite branch.
2116         * graphite.c: New.
2117         * graphite.h: New.
2118         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
2119         * doc/invoke.texi (-floop-block, -floop-interchange,
2120         -floop-strip-mine): Document new flags.
2121         * tree-into-ssa.c (gimple_vec): Moved...
2122         * tree-loop-distribution.c (rdg_component): Moved...
2123         * cfgloopmanip.c: Include tree-flow.h.
2124         (update_dominators_in_loop): New.
2125         (create_empty_if_region_on_edge): New.
2126         (create_empty_loop_on_edge): New.
2127         (loopify): Use update_dominators_in_loop.
2128         * tree-pass.h (pass_graphite_transforms): Declared.
2129         * configure: Regenerate.
2130         * tree-phinodes.c (make_phi_node): Export.
2131         (add_phi_node_to_bb): New, split from create_phi_node.
2132         * tree-chrec.c (for_each_scev_op): New.
2133         * tree-chrec.h (for_each_scev_op): Declared.
2134         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
2135         (remove_statement): Call get_phi_with_result.
2136         * config.in (HAVE_cloog): Undef.
2137         * gdbinit.in (pgg): New.
2138         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
2139         * tree-ssa-loop.c (graphite_transforms): New.
2140         (gate_graphite_transforms): New.
2141         (pass_graphite_transforms): New.
2142         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
2143         HAVE_cloog): Defined.
2144         * tree-vectorizer.c (rename_variables_in_bb): Export.
2145         * tree-data-ref.c (dr_may_alias_p): Export.
2146         (stmt_simple_memref_p): New.
2147         (find_data_references_in_stmt): Export.
2148         (find_data_references_in_loop): Export.
2149         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
2150         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
2151         (create_rdg_vertices): Export.
2152         (build_empty_rdg): New.
2153         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
2154         * tree-data-ref.h (rdg_component): ... here.
2155         (scop_p): New.
2156         (struct data_reference): Add a field scop.
2157         (DR_SCOP): New.
2158         (find_data_references_in_loop): Declared.
2159         (find_data_references_in_stmt): Declared.
2160         (create_rdg_vertices): Declared.
2161         (dr_may_alias_p): Declared.
2162         (stmt_simple_memref_p): Declared.
2163         (struct rdg_edge): Add a field ddr_p relation.
2164         (build_empty_rdg): Declared.
2165         * lambda.h (lambda_matrix): Declare a VEC of.
2166         (find_induction_var_from_exit_cond): Declared.
2167         (lambda_vector_compare): New.
2168         * common.opt (fgraphite, floop-strip-mine,
2169         floop-interchange, floop-block): New flags.
2170         * lambda-code.c (find_induction_var_from_exit_cond): Export.
2171         * cfgloop.c (is_loop_exit): New.
2172         * cfgloop.h (is_loop_exit): Declared.
2173         (create_empty_if_region_on_edge): Declared.
2174         (create_empty_loop_on_edge): Declared.
2175         * tree-flow.h (add_phi_node_to_bb): Declared.
2176         (make_phi_node): Declared.
2177         (rename_variables_in_bb): Declared.
2178         (perfect_loop_nest_depth): Declared.
2179         (graphite_transform_loops): Declared.
2180         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
2181         (graphite.o-warn): Add -Wno-error.
2182         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
2183         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
2184         (INCLUDES): Add PPLINC, CLOOGINC.
2185         (OBJS-common): Add graphite.o.
2186         (graphite.o): Add rule.
2187         * gimple.h (gimple_vec): ... here.
2188         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
2189         * passes.c (init_optimization_passes): Schedule
2190         pass_graphite_transforms.
2191
2192 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
2193
2194         PR target/37283
2195         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
2196         and -fno-toplevel-reorder after handle_options.
2197
2198 2008-09-02  Paul Brook  <paul@codesourcery.com>
2199
2200         * config/arm/arm.c (arm_tune_cortex_a9): Define.
2201         (arm_override_options): Set arm_tune_cortex_a9.
2202         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
2203         (arm_issue_rate): Handle cortexa9.
2204         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
2205         * config/arm/arm-cores.def: Add cortex-a9.
2206         * config/arm/arm-tune.md: Regenerate.
2207         * config/arm/arm.md: Include cortex-a9.md.
2208         (generic_sched, generic_vfp): Add cortexa9.
2209         * config/arm/cortex-a9.md: New file.
2210
2211 2008-09-02  Richard Guenther  <rguenther@suse.de>
2212
2213         PR tree-optimization/37327
2214         * tree-vrp.c (register_new_assert_for): Make sure to not have
2215         TREE_OVERFLOW set on the bound.
2216
2217 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
2218
2219         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
2220
2221         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
2222         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
2223         spec_info->mask.
2224
2225 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
2226
2227         * gcc/config/spu/spu.md (divdf3): Removed.
2228
2229 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2230
2231         PR tree-optimization/37095
2232         * cgraph.c (cgraph_node): When creating new cgraph node after
2233         assembler_name_hash has been populated, record it in the hash
2234         table.
2235
2236 2008-09-01  Paul Brook  <paul@codesourcery.com>
2237
2238         * doc/invoke.texi: Document -mword-relocations.
2239         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2240         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2241         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2242         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
2243         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
2244         (arm_emit_movpair): New function.
2245         (arm_print_operand <c>): Handle sybolic addresses.
2246         * config/arm/arm.h (TARGET_USE_MOVT): Define.
2247         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2248         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
2249         * config/arm/arm.opt: Add -mword-relocations.
2250         * config/arm/arm.md (movsi): Use arm_emit_movpair.
2251         (arm_movt, arm_movw): New.
2252
2253 2008-09-01  Paul Brook  <paul@codesourcery.com>
2254
2255         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
2256         Allow Interworking on ARMv4 EABI based targets.
2257         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
2258         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
2259
2260 2008-09-01  Paul Brook  <paul@codesourcery.com>
2261
2262         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
2263         optimized LT0 test.  Remove optimization for GT.
2264
2265 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2266
2267         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
2268         openmp applications.
2269         * pa-hpux11.h (LIB_SPEC): Likewise.
2270
2271         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
2272         is defined.
2273
2274 2008-09-01  Jan Hubicka  <jh@suse.cz>
2275
2276         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
2277         present, use only counts; when guessed use only frequencies.
2278         (estimate_bb_frequencies): Use function_frequency.
2279         * profile.c (compute_branch_probabilities): Exit early when
2280         profile reading failed. Set profile_status.
2281         (branch_prob): Do not set profile_status.
2282
2283 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
2284
2285         * tree.c (protected_set_expr_location): New.
2286         * tree.h (protected_set_expr_location): New prototype.
2287         * c-tree.h (build_array_ref): Add argument.
2288         (parser_build_unary_op): Same.
2289         * c-typeck.c (build_indirect_ref): Handle new location argument.
2290         (build_array_ref): Same.
2291         (parser_build_unary_op): Same.
2292         * gimplify.c (gimplify_asm_expr): Set input_location before calling
2293         error.
2294         * c-omp.c (c_finish_omp_atomic): Pass location when calling
2295         build_indirect_ref.
2296         * c-common.c (finish_label_address_expr): Handle new location argument.
2297         * c-common.h (build_indirect_ref): Add argument.
2298         (finish_label_address_expr): Same.
2299         * c-parser.c (c_parser_unary_expression): Pass location to build
2300         functions.
2301         (c_parser_postfix_expression): Same.
2302
2303 2008-09-01  Paul Brook  <paul@codesourcery.com>
2304
2305         * config/arm/arm.md: Include cortex-r4f.md.
2306         (attr fpu): Update type list.
2307         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
2308         fconstd, fcmps and fcmpd.
2309         (attr tune_cortexr4): Define.
2310         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
2311         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
2312         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
2313         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
2314         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
2315         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
2316         cortex_a8_vfp_farith: Ditto.
2317         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
2318         * config/arm/cortex-r4.md: Use tune_cortexr4.
2319         * config/arm/cortex-r4f.md: New file.
2320
2321 2008-09-01  Richard Guenther  <rguenther@suse.de>
2322
2323         PR tree-optimization/37305
2324         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
2325         the result of constant conversions.
2326         (fold_gimple_assign): Likewise.
2327
2328 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
2329
2330         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
2331         #ifdef ENABLE_CHECKING.
2332
2333 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
2334
2335         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
2336         * sched-int.h (print_insn, print_pattern, print_value): Declare also
2337         when !INSN_SCHEDULING.
2338
2339 2008-09-01  Andreas Schwab  <schwab@suse.de>
2340
2341         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
2342
2343 2008-09-01  Paul Brook  <paul@codesourcery.com>
2344
2345         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
2346
2347 2008-09-01  Jan Hubicka  <jh@suse.cz>
2348
2349         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
2350
2351         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
2352         Pass speed operand.
2353         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
2354         * gimplify.c (gimplify_init_constructor): Add speed operand.
2355         * tree-sra.c (decide_block_copy): Likewise.
2356         * tree-inline.c (estimate_move_cost): Likewise.
2357         * config/alpha/alpha.h (MOVE_RATIO): Update.
2358         * config/frv/frv.c (MOVE_RATIO): Update.
2359         * config/spu/spu.h (MOVE_RATIO): Update.
2360         * config/sparc/sparc.h (MOVE_RATIO): Update.
2361         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
2362         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
2363         * config/cris/cris.h (MOVE_RATIO): Update.
2364         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
2365         * config/arm/arm.h (MOVE_RATIO): Update.
2366         * config/pa/pa.md: Update uses of MOVE_RATIO
2367         * config/pa/pa.h (MOVE_RATIO): Update.
2368         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
2369         CLEAR_RATIO, SET_RATIO): Update.
2370         * config/h8300/h8300.h (MOVE_RATIO): Update.
2371         * config/v850/v850.h (MOVE_RATIO): Update.
2372         * config/bfin/bfin.h (MOVE_RATIO): Update.
2373
2374 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
2375             Dmitry Melnik  <dm@ispras.ru>
2376             Dmitry Zhurikhin  <zhur@ispras.ru>
2377             Alexander Monakov  <amonakov@ispras.ru>
2378             Maxim Kuvyrkov  <maxim@codesourcery.com>
2379
2380         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
2381         sel-sched-dump.c, sel-sched-ir.c: New files.
2382         * Makefile.in (OBJS-common): Add selective scheduling object files.
2383         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
2384         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
2385         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
2386         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
2387         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
2388         (make_forwarder_block): Update loop latch if we have redirected
2389         the loop latch edge.
2390         * cfgloop.c (get_loop_body_in_custom_order): New function.
2391         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
2392         (CP_FALLTHRU_PREHEADERS): Likewise.
2393         (get_loop_body_in_custom_order): Declare.
2394         * cfgloopmanip.c (has_preds_from_loop): New.
2395         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
2396         Assert that the preheader edge will be fall thru when it is set.
2397         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
2398         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
2399         fsel-sched-substitution, fselective-scheduling): New flags.
2400         * cse.c (hash_rtx_cb): New.
2401         (hash_rtx): Use it.
2402         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
2403         sel_sched_insn_cnt): New counters.
2404         * final.c (compute_alignments): Export.  Free dominance
2405         info after loop_optimizer_finalize.
2406         * genattr.c (main): Output maximal_insn_latency prototype.
2407         * genautomata.c (output_default_latencies): New.
2408         Factor its code from ...
2409         (output_internal_insn_latency_func): ... here.
2410         (output_internal_maximal_insn_latency_func): New.
2411         (output_maximal_insn_latency_func): New.
2412         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
2413         (struct hard_reg_set_iterator): New.
2414         (hard_reg_set_iter_init, hard_reg_set_iter_set,
2415         hard_reg_set_iter_next): New functions.
2416         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
2417         * lists.c (remove_free_INSN_LIST_node,
2418         remove_free_EXPR_LIST_node): New functions.
2419         * loop-init.c (loop_optimizer_init): When
2420         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
2421         calling create_preheaders.
2422         (loop_optimizer_finalize): Do not verify flow info after reload.
2423         * recog.c (validate_replace_rtx_1): New parameter simplify.
2424         Default it to true.  Update all uses.  Factor out simplifying
2425         code to ...
2426         (simplify_while_replacing): ... this new function.
2427         (validate_replace_rtx_part,
2428         validate_replace_rtx_part_nosimplify): New.
2429         * recog.h (validate_replace_rtx_part,
2430         validate_replace_rtx_part_nosimplify): Declare.
2431         * rtl.c (rtx_equal_p_cb): New.
2432         (rtx_equal_p): Use it.
2433         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
2434         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
2435         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
2436         * vecprim.h: Add a vector type for unsigned int.
2437         * haifa-sched.c: Include vecprim.h and cfgloop.h.
2438         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
2439         ready_try, cycle_issued_insns, spec_info): Make global.
2440         (readyp): Initialize.
2441         (dfa_lookahead): New global variable.
2442         (old_max_uid, old_last_basic_block): Remove.
2443         (h_i_d): Make it a vector.
2444         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
2445         through HID macro.
2446         (after_recovery, adding_bb_to_current_region_p):
2447         New variables to handle correct insertion of the recovery code.
2448         (struct ready_list): Move declaration to sched-int.h.
2449         (rgn_n_insns): Removed.
2450         (rtx_vec_t): Move to sched-int.h.
2451         (find_insn_reg_weight): Remove.
2452         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
2453         (haifa_init_h_i_d, haifa_finish_h_i_d):
2454         New functions to initialize / finalize haifa instruction data.
2455         (extend_h_i_d, init_h_i_d): Rewrite.
2456         (unlink_other_notes): Move logic to add_to_note_list.  Handle
2457         selective scheduler.
2458         (ready_lastpos, ready_element, ready_sort, reemit_notes,
2459         find_fallthru_edge): Make global, remove static prototypes.
2460         (max_issue): Make global.  Add privileged_n and state parameters.  Use
2461         them.
2462         (extend_global, extend_all): Removed.
2463         (init_before_recovery): Add new param.  Fix the handling of the case
2464         when we insert a recovery code before the EXIT which has a predecessor
2465         with a fallthrough edge to it.
2466         (create_recovery_block): Make global.  Rename to
2467         sched_create_recovery_block.  Update.
2468         (change_pattern): Rename to sched_change_pattern.  Make global.
2469         (speculate_insn): Rename to sched_speculate_insn.  Make global.
2470         Split haifa-specific functionality into ...
2471         (haifa_change_pattern): New static function.
2472         (sched_extend_bb): New static function.
2473         (sched_init_bbs): New function.
2474         (current_sched_info): Change type to struct haifa_sched_info.
2475         (insn_cost): Adjust for selective scheduling.
2476         (dep_cost_1): New function.  Move logic from ...
2477         (dep_cost): ... here.
2478         (dep_cost): Use dep_cost_1.
2479         (contributes_to_priority_p): Use sched_deps_info instead of
2480         current_sched_info.
2481         (priority): Adjust to work with selective scheduling.  Process the
2482         corner case when all dependencies don't contribute to priority.
2483         (rank_for_schedule): Use ds_weak instead of dep_weak.
2484         (advance_state): New function.  Move logic from ...
2485         (advance_one_cycle): ... here.
2486         (add_to_note_list, concat_note_lists): New functions.
2487         (rm_other_notes): Make static.  Adjust for selective scheduling.
2488         (remove_notes, restore_other_notes): New functions.
2489         (move_insn): Add two arguments.  Update assert.  Don't call
2490         reemit_notes.
2491         (choose_ready): Remove lookahead variable, use dfa_lookahead.
2492         Remove more_issue, max_points.  Move the code to initialize
2493         max_lookahead_tries to max_issue.
2494         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
2495         ready.  Adjust use of move_insn.  Call restore_other_notes.
2496         (luid): Remove.
2497         (sched_init, sched_finish): Move Haifa-specific initialization/
2498         finalization to ...
2499         (haifa_sched_init, haifa_sched_finish): ... respectively.
2500         New functions.
2501         (setup_sched_dump): New function.
2502         (haifa_init_only_bb): New static function.
2503         (haifa_speculate_insn): New static function.
2504         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
2505         (extend_ready, extend_all): Remove.
2506         (sched_extend_ready_list, sched_finish_ready_list): New functions.
2507         (create_check_block_twin, add_to_speculative_block): Use
2508         haifa_insns_init instead of extend_global.  Update to use new
2509         initialization functions.  Change parameter.  Factor out code from
2510         create_check_block_twin to ...
2511         (sched_create_recovery_edges) ... this new function.
2512         (add_block): Remove.
2513         (sched_scan_info): New.
2514         (extend_bb): Use sched_scan_info.
2515         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
2516         static functions for walking through scheduling region.
2517         (sched_luids): New vector variable to replace uid_to_luid.
2518         (luids_extend_insn): New function.
2519         (sched_max_luid): New variable.
2520         (luids_init_insn): New function.
2521         (sched_init_luids, sched_finish_luids): New functions.
2522         (insn_luid): New debug function.
2523         (sched_extend_target): New function.
2524         (haifa_init_insn): New static function.
2525         (sched_init_only_bb): New hook.
2526         (sched_split_block): New hook.
2527         (sched_split_block_1): New function.
2528         (sched_create_empty_bb): New hook.
2529         (sched_create_empty_bb_1): New function.
2530         (common_sched_info, ready): New global variables.
2531         (current_sched_info_var): Remove.
2532         (move_block_after_check): Use common_sched_info.
2533         (haifa_luid_for_non_insn): New static function.
2534         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
2535         (increase_insn_priority): New.
2536         * modulo-sched.c: (issue_rate): Remove static declaration.
2537         (sms_sched_info): Change type to haifa_sched_info.
2538         (sms_sched_deps_info, sms_common_sched_info): New variables.
2539         (setup_sched_infos): New.
2540         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
2541         Do not call regstat_free_calls_crossed.
2542         (sms_print_insn): Use const_rtx.
2543         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
2544         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
2545         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
2546         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
2547         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
2548         current_sched_info to use it.
2549         (enum reg_pending_barrier_mode): Move to sched-int.h.
2550         (h_d_i_d): New variable. Initialize to NULL.
2551         ({true, output, anti, spec, forward}_dependency_cache): Initialize
2552         to NULL.
2553         (estimate_dep_weak): Remove static declaration.
2554         (sched_has_condition_p): New function.  Adjust users of
2555         sched_get_condition to use it instead.
2556         (conditions_mutex_p): Add arguments indicating which conditions are
2557         reversed.  Use them.
2558         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
2559         argument to indicate whether returned condition is reversed.  Do not
2560         generate new rtx when condition should be reversed; indicate it by
2561         setting new argument instead.
2562         (add_dependence_list_and_free): Add deps parameter.
2563         Update all users.  Do not free dependence list when
2564         deps context is readonly.
2565         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
2566         contexts.
2567         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
2568         (remove_from_deps): New. Use the above functions.
2569         (cur_insn, can_start_lhs_rhs_p): New static variables.
2570         (add_or_update_back_dep_1): Initialize present_dep_type.
2571         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
2572         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
2573         haifa_note_dep): New functions implementing dependence hooks for
2574         the Haifa scheduler.
2575         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
2576         note_dep): New functions.
2577         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
2578         functions.
2579         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
2580         (free_deps): Initialize deps->reg_last.
2581         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
2582         sched_analyze_insn): Update to use dependency hooks infrastructure
2583         and readonly contexts.
2584         (deps_analyze_insn): New function.  Move part of logic from ...
2585         (sched_analyze): ... here.  Also move some logic to ...
2586         (deps_start_bb): ... here.  New function.
2587         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
2588         sel_sched_p.
2589         (sched_deps_init): New function.  Move code from ...
2590         (init_dependency_caches): ... here.  Remove.
2591         (init_deps_data_vector): New.
2592         (sched_deps_finish): New function.  Move code from ...
2593         (free_dependency_caches): ... here.  Remove.
2594         (init_deps_global, finish_deps_global): Adjust for use with
2595         selective scheduling.
2596         (get_dep_weak): Move logic to ...
2597         (get_dep_weak_1): New function.
2598         (ds_merge): Move logic to ...
2599         (ds_merge_1): New static function.
2600         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
2601         (ds_get_max_dep_weak): New function.
2602         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
2603         (n_insns): Rename to rgn_n_insns.
2604         (debug_ebb_dependencies): New function.
2605         (init_ready_list): Use it.
2606         (begin_schedule_ready): Use sched_init_only_bb.
2607         (ebb_print_insn): Indicate when an insn starts a new cycle.
2608         (contributes_to_priority, compute_jump_reg_dependencies,
2609         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
2610         (add_block1): Remove to ebb_add_block.
2611         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
2612         (schedule_ebb): Initialize them.  Use remove_notes instead of
2613         rm_other_notes.  Use haifa_local_init/finish.
2614         (schedule_ebbs): Use haifa_sched_init/finish.
2615         * sched-int.h: Include vecprim.h, remove rtl.h.
2616         (struct ready_list): Delete declaration.
2617         (sched_verbose_param, enum sched_pass_id_t,
2618         bb_vec_t, insn_vec_t, rtx_vec_t): New.
2619         (struct sched_scan_info_def): New structure.
2620         (sched_scan_info, sched_scan, sched_init_bbs,
2621         sched_init_luids, sched_finish_luids, sched_extend_target,
2622         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
2623         (struct common_sched_info_def): New.
2624         (common_sched_info, haifa_common_sched_info,
2625         sched_emulate_haifa_p): Declare.
2626         (sel_sched_p): New.
2627         (sched_luids): Declare.
2628         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
2629         (sched_max_luid, insn_luid): Declare.
2630         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
2631         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
2632         print_insn, print_pattern, print_value, haifa_classify_insn,
2633         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
2634         setup_sched_dump, sched_init, sched_finish,
2635         sel_insn_is_speculation_check): Export.
2636         (struct ready_list): Move from haifa-sched.c.
2637         (ready_try, ready, max_issue): Export.
2638         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
2639         sched_init_only_bb, sched_split_block, sched_split_block_1,
2640         sched_create_empty_bb, sched_create_empty_bb_1,
2641         sched_create_recovery_block, sched_create_recovery_edges): Export.
2642         (enum reg_pending_barrier_mode): Export.
2643         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
2644         (deps_t): New.
2645         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
2646         print_insn field.  Move add_block and fix_recovery_cfg to
2647         common_sched_info_def.  Move compute_jump_reg_dependencies,
2648         use_cselib  ...
2649         (struct sched_deps_info_def): ... this new structure.
2650         (sched_deps_info): Declare.
2651         (struct spec_info_def): Remove weakness_cutoff, add
2652         data_weakness_cutoff and control_weakness_cutoff.
2653         (spec_info): Declare.
2654         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
2655         dep_count field.
2656         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
2657         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
2658         (current_sched_info): Change type to struct haifa_sched_info.
2659         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
2660         (h_d_i_d): New variable.
2661         (HDID): New accessor macro.
2662         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
2663         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
2664         and HDID.
2665         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
2666         (enum SCHED_FLAGS): Update for selective scheduler.
2667         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
2668         (init_dependency_caches, free_dependency_caches): Delete declarations.
2669         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
2670         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
2671         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
2672         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
2673         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
2674         ds_to_dt): Export.
2675         (rm_other_notes): Delete declaration.
2676         (schedule_block): Remove one argument.
2677         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
2678         ready_element, ready_lastpos, sched_extend_ready_list,
2679         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
2680         concat_note_lists): Export.
2681         (struct region): Move from sched-rgn.h.
2682         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
2683         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
2684         BLOCK_TO_BB, CONTAINING_RGN): Export.
2685         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
2686         (current_nr_blocks, current_blocks, target_bb): Likewise.
2687         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
2688         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
2689         sched_rgn_local_init, extend_regions,
2690         rgn_make_new_region_out_of_new_block, compute_priorities,
2691         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
2692         extend_rgns, deps_join rgn_setup_common_sched_info,
2693         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
2694         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
2695         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
2696         increase_insn_priority): Likewise.
2697         * sched-rgn.c: Include sel-sched.h.
2698         (ref_counts): New static variable.  Use it ...
2699         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
2700         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
2701         (sched_is_disabled_for_current_region_p): Delete static declaration.
2702         (struct region): Move to sched-int.h.
2703         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
2704         ebb_head): Define and initialize.
2705         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
2706         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
2707         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
2708         sched-int.h.
2709         (find_single_block_region): Add new argument to indicate that EBB
2710         regions should be constructed.
2711         (debug_live): Delete declaration.
2712         (current_nr_blocks, current_blocks, target_bb):
2713         Remove static qualifiers.
2714         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
2715         declaration.
2716         (init_regions): Delete declaration.
2717         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
2718         rgn_estimate_number_of_insns): New.
2719         (too_large): Use estimate_number_of_insns.
2720         (haifa_find_rgns): New. Move the code from ...
2721         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
2722         (free_trg_info): New.
2723         (compute_trg_info): Allocate candidate tables here instead of ...
2724         (init_ready_list): ... here.
2725         (rgn_print_insn): Use const_rtx.
2726         (contributes_to_priority, extend_regions): Delete static declaration.
2727         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
2728         (add_block1): Rename to rgn_add_block.
2729         (debug_rgn_dependencies): Delete static qualifier.
2730         (new_ready): Use sched_deps_info.  Simplify.
2731         (rgn_common_sched_info, rgn_const_sched_deps_info,
2732         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
2733         New.
2734         (region_sched_info): Rename to rgn_const_sched_info.
2735         (deps_join): New, extracted from ...
2736         (propagate_deps): ... here.
2737         (compute_block_dependences, debug_dependencies): Update for selective
2738         scheduling.
2739         (free_rgn_deps, compute_priorities): New functions.
2740         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
2741         sched_rgn_compute_dependencies): New functions.
2742         (schedule_region): Use them.
2743         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
2744         rgn_setup_common_sched_info, rgn_setup_sched_infos):
2745         New functions.
2746         (schedule_insns): Call new functions that were split out.
2747         (rgn_make_new_region_out_of_new_block): New.
2748         (get_rgn_sched_max_insns_priority): New.
2749         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
2750         scheduling when appropriate.
2751         * sched-vis.c: Include insn-attr.h.
2752         (print_value, print_pattern): Make global.
2753         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
2754         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
2755         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
2756         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
2757         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
2758         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
2759         hooks.  Initialize them to 0.
2760         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
2761         * target.h (struct gcc_target): Add them.  Rename gen_check field to
2762         gen_spec_check.
2763         * flags.h (sel_sched_switch_set): Declare.
2764         * opts.c (sel_sched_switch_set): New variable.
2765         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
2766         pipelining is disabled from command line.
2767         (common_handle_option): Record whether selective scheduling is
2768         requested from command line.
2769         * doc/invoke.texi: Document new flags and parameters.
2770         * doc/tm.texi: Document new target hooks.
2771         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
2772         ia64_gen_check.
2773         (dfa_state_size): Do not declare locally.
2774         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
2775         * config/rs6000/rs6000.c (rs6000_init_sched_context,
2776         rs6000_alloc_sched_context, rs6000_set_sched_context,
2777         rs6000_free_sched_context): New functions.
2778         (struct _rs6000_sched_context): New.
2779         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
2780         scheduling.
2781         (rs6000_sched_finish): Do not run for selective scheduling.
2782
2783 2008-08-31  Jan Hubicka  <jh@suse.cz>
2784
2785         * frv.c (frv_rtx_costs): Update forward declaration.
2786         * spu.c (spu_rtx_costs): Likewise.
2787         * pdp11.c: Include df.h
2788         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
2789         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
2790         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
2791         * iq2000.c (iq2000_address_cost): Add speed argument.
2792         (iq2000_rtx_costs): Likewise.
2793         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
2794         update call of mn10300_address_cost.
2795         * mcore.c: Include df.h
2796         (mcore_rtx_costs): Update prototype.
2797         * score3.c: Include df.h
2798         (score3_rtx_costs): Remove speed argument.
2799         * score7.c: Include df.h
2800         (score7_address_cost): Remove speed argument.
2801         * score-protos.h (score_address_cost): Update prototype.
2802         * score.c: Include df.h
2803         (score_rtx_costs): Update call of costs functions.
2804         * v850.c (v850_rtx_costs): Add bool argument.
2805
2806 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
2807
2808         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
2809
2810 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
2811
2812         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
2813         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
2814
2815 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
2816
2817         * mkmap-flat.awk: Add option pe_dll.
2818         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
2819         * config/i386/t-cygwin (SHLIB_LC): Add.
2820         * config/i386/t-mingw32 (SHLIB_LC): Add.
2821         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
2822         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
2823         (LINK_SPEC): Support libgcc_s.
2824         (LIBGCC_SPEC): Support libgcc_s.
2825         (LIBGCC_SONAME): New.
2826
2827 2008-08-31  Jan Hubicka  <jh@suse.cz>
2828
2829         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
2830         mistakely had old version of patch.
2831
2832         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
2833         (ipcp_estimate_growth): New.
2834         (ipcp_insert_stage): Use ipcp_estimate_growth.
2835         * profile.c (branch_prob): When reading failed, do not consider
2836         profile as read.
2837
2838 2008-08-31  Jan Hubicka  <jh@suse.cz>
2839
2840         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
2841         loop is optimized for speed.
2842
2843 2008-08-31  Richard Guenther  <rguenther@suse.de>
2844
2845         PR middle-end/37289
2846         * fold-const.c (fold_binary): Retain conversions in folding
2847         ~A + 1 to -A.
2848
2849 2008-08-31  Jan Hubicka  <jh@suse.cz>
2850
2851         * postreload-gcse.c (eliminate_partially_redundant_loads):
2852         Use optimize_bb_for_size_p.
2853         * predict.c (maybe_hot_frequency_p): Make inline.
2854         (maybe_hot_count_p): Break out from ...
2855         (maybe_hot_bb_p): ... this one.
2856         (maybe_hot_edge_p): Simplify.
2857         * basic-block.h (probably_cold_bb_p): Remove.
2858
2859 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
2860
2861         PR target/37168
2862         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
2863         prototype.
2864         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
2865         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
2866         Also split V4SFmode.
2867         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
2868         vector float modes.
2869
2870 2008-08-31  Jan Hubicka  <jh@suse.cz>
2871
2872         * predict.c (PROB_VERY_LIKELY): Make small enough so things
2873         become cold.
2874         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
2875
2876 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
2877
2878         PR debug/37287
2879         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
2880         add source coords.
2881
2882         * dwarf2out.c (native_encode_initializer): Subtract min_index for
2883         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
2884
2885 2008-08-31  Jan Hubicka  <jh@suse.cz>
2886
2887         * sparc.h (BRANCH_COST): Fix macro definition.
2888         * avr.c (avr_operand_rtx_cost): Add speed argument.
2889         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
2890
2891 2008-08-31  Richard Guenther  <rguenther@suse.de>
2892
2893         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
2894         types instead of operands.  Re-instantiate verifying of
2895         binary expression operands.
2896
2897 2008-08-30  Jan Hubicka  <jh@suse.cz>
2898
2899         * fwprop.c (should_replace_address): Add speed attribute.
2900         (PR_OPTIMIZE_FOR_SPEED): New flag.
2901         (propagate_rtx_1): Use it.
2902         (propagate_rtx): Set it.
2903         (try_fwprop_subst): Update call of rtx_costs.
2904         (forward_propagate_and_simplify): LIkewise.
2905         * hooks.c (hook_int_rtx_bool_0): New
2906         (hook_bool_rtx_int_int_intp_false): Replace by ...
2907         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
2908         * hooks.h (hook_int_rtx_bool_0): New
2909         (hook_bool_rtx_int_int_intp_false): Replace by ...
2910         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
2911         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
2912         (prepare_cmp_insn): UPdate call of rtx_cost.
2913         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
2914         (reload_cse_simplify_operands): Update call of rtx_cost.
2915         (reload_cse_move2add): call of rtx_cost.
2916         * target.h (struct gcc_target): Update rtx_costs and address_costs.
2917         * rtlanal.c (rtx_cost): Add speed argument.
2918         (address_cost): Add speed argument
2919         (default_address_cost): Likewise.
2920         (insn_rtx_cost): Likewise.
2921         * cfgloopanal.c (seq_cost): Add speed argument.
2922         (target_reg_cost, target_spill_cost): Turn to array.
2923         (init_set_costs): Update for speed.
2924         (estimate_reg_pressure_cost): Add speed argument.
2925         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
2926         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
2927         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
2928         (seq_cost): Add speed argument.
2929         (computation_cost): Add speed arugment.
2930         (add_cost, multiply_by_const, get_address_cost): add speed argument.
2931         (force_expr_to_var_cost): Update for profile info.
2932         (force_var_cost): Likewise.
2933         (split_address_cost): Likewise.
2934         (ptr_difference_cost): Likewise.
2935         (difference_cost): Likewise.
2936         (get_computation_cost_at): Likewise.
2937         (determine_iv_cost): Likewise.
2938         (ivopts_global_cost_for_size): Likewise.
2939         (rewrite_use_address): Likewise.
2940         (tree_ssa_iv_optimize_loop): Initialize speed field.
2941         * cse.c (optimize_this_for_speed_p): New static var.
2942         (notreg_cost): Update call of rtx_cost.
2943         (cse_extended_basic_block): set optimize_this_for_speed_p.
2944         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
2945         (noce_try_cmove_arith): Likewise.
2946         (noce_try_sign_mask): LIkewise.
2947         * expr.c (compress_float_constant): Update rtx_cost calls.
2948         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
2949         argument.
2950         (addr_to_parts): Likewise.
2951         (create_mem_ref): Likewise.
2952         * dse.c (find_shift_sequence): Add speed argument.
2953         (replace_read): Update call.
2954         * calls.c (precompute_register_parameters): Update call of rtx_cost.
2955         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
2956         * neg_cost, shift_cost, shiftadd_cost,
2957         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
2958         mul_highpart_cost): Increase dimension.
2959         (init_expmed): Initialize for both size and speed.
2960         (expand_shift): Use profile.
2961         (synth_mult): Use profile.
2962         (choose_mult_variant): Use profile.
2963         (expand_mult): Use profile.
2964         (expand_mult_highpart_optab): Use profile.
2965         (expand_mult_highpart): Use profile.
2966         (expand_smod_pow2): Use profile.
2967         (expand_divmod): Use profile.
2968         * simplify-rtx.c (simplify_binary_operation_1): Update call of
2969         rtx_cost.
2970         * loop-invariant.c (create_new_invariant): Use profile.
2971         (gain_for_invariant): Add speed parameter.
2972         (best_gain_for_invariant): Likewise.
2973         (find_invariants_to_move): Likewise.
2974         (move_single_loop_invariants): Set it.
2975         * target-def.h (TARGET_RTX_COSTS): Use hook.
2976         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
2977         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
2978         * output.h (default_address_cost): Update prototype.
2979         * combine.c (optimize_this_for_speed_p): New static var.
2980         (combine_validate_cost): Update call of rtx_cost.
2981         (combine_instructions): Set optimize_this_for_speed_p.
2982         (expand_compound_operation): Update call of rtx_cost.
2983         (make_extraction):Update call of rtx_cost.
2984         (force_to_mode):Update call of rtx_cost.
2985         (distribute_and_simplify_rtx):Update call of rtx_cost.
2986         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
2987         (estimate_reg_pressure_cost): Update prototype.
2988         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
2989         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
2990         Remove.
2991         * config/alpha/alpha.c (alpha_rtx_costs): Update.
2992         (alpha_rtx_costs): Update.
2993         * config/frv/frv.c (frv_rtx_costs): Update.
2994         * config/s390/s390.c (s390_rtx_costs): Update.
2995         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
2996         (m32c_rtx_costs): Update.
2997         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
2998         (spu_rtx_costs): Update.
2999         * config/sparc/sparc.c (sparc_rtx_costs): Update.
3000         * config/m32r/m32r.c (m32r_rtx_costs): Update.
3001         * config/i386/i386.c (:ix86_address_cost): Update.
3002         (ix86_rtx_costs): Update.
3003         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
3004         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
3005         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
3006         * config/crx/crx.c (crx_address_cost): Update.
3007         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
3008         * config/stormy16/stormy16.c
3009         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
3010         * config/m68hc11/m68hc11.c
3011         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
3012         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
3013         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
3014         Update.
3015         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
3016         Update
3017         * config/ia64/ia64.c (ia64_rtx_costs): Update.
3018         * config/m68k/m68k.c (m68k_rtx_costs): Update.
3019         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
3020         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
3021         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
3022         (mcore_rtx_costs): update.
3023         * config/score/score3.c (score3_rtx_costs): Update.
3024         * config/score/score7.c (score7_rtx_costs): Update.
3025         * config/score/score3.h (score3_rtx_costs):Update.
3026         * config/score/score7.h (score7_rtx_costs): Update.
3027         * config/score/score.c (score_rtx_costs): Update.
3028         * config/arm/arm.c (arm_address_cost): Update.
3029         (arm_rtx_costs_1): Update.
3030         (arm_rtx_costs_1): Update.
3031         (arm_size_rtx_costs): Update.
3032         (arm_size_rtx_costs): Update.
3033         (arm_size_rtx_costs): Update.
3034         (arm_xscale_rtx_costs): Update.
3035         (arm_thumb_address_cost): Update.
3036         * config/pa/pa.c (hppa_address_cost): Update.
3037         * config/mips/mips.c (mips_rtx_costs): Update.
3038         * config/vax/vax.c (vax_address_cost): Update.
3039         * config/h8300/h8300.c (h8300_shift_costs): Update.
3040         (h8300_rtx_costs): Update.
3041         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
3042         (v850_rtx_costs): Update.
3043         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
3044         * config/bfin/bfin.c
3045         (bfin_address_cost): Update.
3046         (bfin_rtx_costs): Update.
3047         * stmt.c (lshift_cheap_p): Update.
3048
3049 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3050
3051         PR middle-end/36444
3052         * expmed.c (extract_bit_field_1): Check the mode size to make
3053         sure the vector modes have the same size.
3054
3055 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
3056
3057         * dojump.c (top level): Include basic-block.h to declare
3058         optimize_insn_for_speed_p
3059
3060         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
3061
3062         * opts.h (CL_SAVE): New option class for marking options that are
3063         target specific options usable in the target attribute.
3064         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
3065
3066         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
3067         can easily find the target specific options that are safe to use
3068         in the attribute or pragma.
3069
3070         * attribs.c (decl_attributes): Change #pragma GCC option to
3071         #pragma GCC target, and attribute((option(...))) to
3072         attribute((target(...))).
3073
3074         * doc/extend.texi (target attribute): Change from option
3075         attribute.  Delete push/pop/reset.
3076         (#pragma GCC target): Change from #pragma GCC option.  Delete
3077         push/pop/reset.
3078         (#pragma GCC push_options): Document new pragma.
3079         (#pragma GCC pop_options): Document new pragma.
3080         (#pragma GCC reset_options): Document new pragma.
3081
3082         * targhooks.c (default_target_option_valid_attribute_p): Add
3083         warning about port not supporting target attributes.
3084         (default_target_option_pragma_parse): New function, warn about
3085         #pragma GCC target not being supported.
3086
3087         * targhooks.h (default_target_option_pragma_parse): Add
3088         declaration.
3089
3090         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
3091         TI_CURRENT_OPTION_PRAGMA.
3092         (current_target_pragma): Rename from current_option_pragma.
3093
3094         * target.h: (struct target_option): Delete booleans for changing
3095         the optimization level on hot/cold functions.  Change signature of
3096         pragma_parse hook to take a second tree.
3097
3098         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
3099
3100         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
3101         that the declaration is done at global scope.
3102
3103         * langhooks.c (add_builtin_function_common): Move most of the code
3104         from add_builtin_function here, calling the hook passed in.
3105         (add_builtin_function): Call add_builtin_function_common with
3106         standard builtin hook.
3107         (add_builtin_function_ext_scope): New function to add builtins to
3108         global scope.
3109
3110         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
3111         hook.
3112         (add_builtin_function_ext_scope): Add declaration.
3113
3114         * c-pragma.c (handle_pragma_target): Rename from
3115         handle_pragma_option, #pragma GCC option is now #pragma GCC
3116         target.  Move warning about port not supporting target options to
3117         default pragma parse hook.  Remove push/pop/reset from this
3118         pragma.
3119         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
3120         (option_stack): Delete static variable.
3121         (optimize_stack): Ditto.
3122         (optons_stack): New stack of saved target and optimization
3123         options.
3124         (handle_pragma_push_options): New function to handle pushing both
3125         target and optimization options.
3126         (handle_pragma_pop_options): New function to handle popping both
3127         target and optimization options.
3128         (handle_pragma_reset_options): New function to handle resetting
3129         both target and optimization options to their initial state.
3130         (init_pragma): Rename handle_pragma_option to
3131         handle_pragma_target.  Add support for push_options, pop_options,
3132         and reset_options pragmas.
3133
3134         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
3135         default_target_option_pragma_parse.
3136         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
3137         default_target_option_valid_attribute_p.
3138         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3139         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3140         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
3141         optimization level on hot/cold functions.
3142
3143         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
3144         if the caller and callee have different optimization levels.
3145
3146         * c-common.c (handle_target_attribute): Rename from
3147         handle_option_attribute, attribute((option(...))) is now
3148         attribute((target(...))).  Move warning if the port does not
3149         support target attributes to the default hook.
3150         (handle_hot_attribute): Delete code to change the optimization
3151         level of hot functions.
3152         (handle_cold_attribute): Ditto.
3153
3154         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
3155         argument that is the binary tree options to use if there are no
3156         arguments.  Call ix86_valid_target_attribute_tree instead of
3157         ix86_valid_option_attribute_tree.
3158         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
3159         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
3160         ix86_pragma_option_parse.
3161
3162         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
3163         Rename from ix86_valid_option_attribute_tree.
3164
3165         * config/i386/i386.c (ix86_add_new_builtins): New function to add
3166         new builtins when the ISA changes.
3167         (ix86_valid_target_attribute_tree): Rename from
3168         ix86_valid_option_attribute_tree.  Change callers.  If the
3169         function specified optimization options, use those as the starting
3170         point before setting up the target attributes.  If the
3171         optimization options were changed in the course of setting the
3172         target attributes, record the new optimization options.
3173         (ix86_valid_target_attribute_tree_inner_p): Rename from
3174         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
3175         ix86_add_new_builtins if the ISA changed.
3176         (ix86_valid_target_attribute_p): Rename from
3177         ix86_valid_option_attribute_p.  Change callers.
3178         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
3179         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
3180         as delayed builtin functions.
3181         (struct builtin_isa): New structure to record builtin functions
3182         that should be delayed until the ISA for that function is used.
3183         (ix86_builtins_isa): Change from int to struct to track builtin
3184         functions we want to declare at some point.
3185         (def_builtin): If the front end can delay defining the builtin
3186         functions, don't create builtins for ISAs not part of the default
3187         options.
3188         (def_builtin_const): Ditto.
3189         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
3190         __builtin_ia32_pcmov_v2di to be different builtin functions.
3191         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
3192         a structure instead of an int.
3193         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
3194         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
3195         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3196         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3197
3198         * config/ia64/ia64.h
3199         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3200         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3201
3202         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
3203         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
3204         (LANG_HOOKS_INITIALIZER): Add
3205         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
3206
3207 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
3208
3209         PR target/37270
3210         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
3211         the reload address with the index register for SFmode
3212         access with a displacement.
3213
3214 2008-08-30  Jan Hubicka  <jh@suse.cz>
3215
3216         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
3217         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
3218         * dojump.c (do_jump): Likewise.
3219         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
3220         (note-if_info): Add BRANCH_COST.
3221         (noce_try_store_flag_constants, noce_try_addcc,
3222         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
3223         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
3224         find_if_case_2): Use computed branch cost.
3225         * expr.h (BRANCH_COST): Update default.
3226         * predict.c (predictable_edge_p): New function.
3227         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
3228         Update BRANCH_COST call.
3229         * basic-block.h (predictable_edge_p): Declare.
3230         * config/alpha/alpha.h (BRANCH_COST): Update.
3231         * config/frv/frv.h (BRANCH_COST): Update.
3232         * config/s390/s390.h (BRANCH_COST): Update.
3233         * config/spu/spu.h (BRANCH_COST): Update.
3234         * config/sparc/sparc.h (BRANCH_COST): Update.
3235         * config/m32r/m32r.h (BRANCH_COST): Update.
3236         * config/i386/i386.h (BRANCH_COST): Update.
3237         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
3238         BRANCH_COST.
3239         * config/sh/sh.h (BRANCH_COST): Update.
3240         * config/pdp11/pdp11.h (BRANCH_COST): Update.
3241         * config/avr/avr.h (BRANCH_COST): Update.
3242         * config/crx/crx.h (BRANCH_COST): Update.
3243         * config/xtensa/xtensa.h (BRANCH_COST): Update.
3244         * config/stormy16/stormy16.h (BRANCH_COST): Update.
3245         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
3246         * config/iq2000/iq2000.h (BRANCH_COST): Update.
3247         * config/ia64/ia64.h (BRANCH_COST): Update.
3248         * config/rs6000/rs6000.h (BRANCH_COST): Update.
3249         * config/arc/arc.h (BRANCH_COST): Update.
3250         * config/score/score.h (BRANCH_COST): Update.
3251         * config/arm/arm.h (BRANCH_COST): Update.
3252         * config/pa/pa.h (BRANCH_COST): Update.
3253         * config/mips/mips.h (BRANCH_COST): Update.
3254         * config/vax/vax.h (BRANCH_COST): Update.
3255         * config/h8300/h8300.h (BRANCH_COST): Update.
3256         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
3257         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
3258         * doc/tm.texi (BRANCH_COST): Update.
3259
3260 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
3261
3262         PR target/37283
3263         * config/arm/arm.c (arm_optimization_options): Set
3264         flag_section_anchors to 2 instead of 1 to distinguish it from
3265         -fsection-anchors given explicitely on the command line.
3266
3267 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
3268
3269         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
3270         final insn of a split.
3271
3272 2008-08-30  Jan Hubicka  <jh@suse.cz>
3273
3274         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
3275         optimized for speed.
3276         * final.c (compute_alignments): Use optimize_bb_for_size_p.
3277         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
3278         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
3279         flag_gcse_after_reload_set): New static vars.
3280         (common_handle_option): Enable those flags for profile-use.
3281         (decode_options): Remove optimize_size flags that are handled
3282         on higher granuality.
3283         * tree-vectorizer.c (vectorize_loops): Use
3284         optimize_loop_nest_for_speed_p.
3285         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
3286         * tree-predcom.c (tree_predictive_commoning): Use
3287         optimize_loop_for_speed_p.
3288         * varasm.c (assemble_start_function): Use
3289         optimize_function_for_speed_p.
3290         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
3291         * predict.c (optimize_loop_for_speed_p): Fix walk.
3292
3293 2008-08-30  Jan Hubicka  <jh@suse.cz>
3294
3295         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
3296         functions.
3297         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
3298         profile presence locally.
3299
3300 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
3301
3302         PR bootstrap/37086
3303         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
3304         versions before 4.0.
3305
3306 2008-08-29  Jan Hubicka  <jh@suse.cz>
3307
3308         * tree-inline.c (insert_init_stmt): Insert sequence even when
3309         not in SSA form.
3310
3311 2008-08-29  Jeff Law  <law@redhat.com>
3312
3313         * mn10300.c (mn10300_secondary_reload_class): We need secondary
3314         reloads for AM33-2 if IN is a pseudo with an equivalent memory
3315         location and class is an FP register.
3316
3317 2008-08-29  Jan Hubicka  <jh@suse.cz>
3318
3319         * see.c (see_merge_one_def_extension): Silence used uninitialized
3320         warning.
3321         * matrix-reorg.c (check_allocation_function): Likewise.
3322         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
3323
3324 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
3325
3326         PR c/37261
3327         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
3328         compute new & and | in type rather than TREE_TYPE (arg0).
3329
3330         * dwarf2out.c (fortran_common): Update comment.
3331         (gen_variable_die): Swap com_die and var_die variables in Fortran
3332         COMMON block handling code.
3333
3334         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
3335
3336         * dwarf2out.c (gen_const_die): New function.
3337         (size_of_die, value_format, output_die): Output larger
3338         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
3339         (native_encode_initializer): New function.
3340         (tree_add_const_value_attribute): Call it.
3341         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
3342
3343         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
3344         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
3345         TREE_THIS_VOLATILE to add_type_attribute.
3346
3347         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
3348         types.
3349         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
3350         types.
3351
3352         * dwarf2out.c (loc_by_reference): New function.
3353         (add_location_or_const_value_attribute): Use it.
3354
3355         PR fortran/23057
3356         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
3357         as DW_TAG_variable children of DW_TAG_common_block rather than
3358         DW_TAG_member children.  Put DW_AT_external to individual
3359         DW_TAG_variable DIEs, not to DW_TAG_common_block.
3360
3361         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
3362         loc_descriptor_from_tree_1.
3363
3364         PR fortran/29635
3365         PR fortran/23057
3366         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
3367         arguments to imported_module_or_decl.
3368         (debug_nothing_tree_tree): Removed.
3369         (debug_nothing_tree_tree_tree_bool): New prototype.
3370         * debug.c (do_nothing_debug_hooks): Adjust.
3371         (debug_nothing_tree_tree): Removed.
3372         (debug_nothing_tree_tree_tree_bool): New function.
3373         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
3374         (gen_variable_die): Put all common vars for the
3375         same COMMON block under one DW_TAG_common_block.
3376         (declare_in_namespace): Return new context_die, for Fortran
3377         return the module DIE instead of adding extra declarations into
3378         the namespace.
3379         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
3380         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
3381         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
3382         DW_AT_declaration.
3383         (dwarf2out_global_decl): Don't skip Fortran global vars.
3384         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
3385         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
3386         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
3387         DW_TAG_imported_declaration as child of previous
3388         DW_TAG_imported_module.
3389         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
3390         * sdbout.c (sdb_debug_hooks): Likewise.
3391         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3392
3393 2008-08-29  Jan Hubicka  <jh@suse.cz>
3394
3395         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
3396
3397         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
3398         * ipa-cp.c (n_cloning_candidates): New static variable.
3399         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
3400         (ipcp_print_all_lattices): Improve debug output.
3401         (ipcp_cloning_candidate_p): New function.
3402         (ipcp_initialize_node_lattices): Use it.
3403         (ipcp_init_stage): Do only analyzis here; prettier debug output.
3404         (ipcp_propagate_stage): Prettier debug output.
3405         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
3406         (ipcp_print_all_structures): Remove.
3407         (ipcp_need_redirect_p): Test !n_cloning_candidates.
3408         (ipcp_insert_stage): Prettier debug output; call
3409         cgraph_remove_unreachable_nodes before propagating.
3410         (pass_ipa_cp): Schedule function removal pass.
3411         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
3412         debug output.
3413         (cgraph_maybe_hot_edge_p): Move to ...
3414         * predict.c (cgraph_maybe_hot_edge_p) ... here.
3415         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
3416         (common_handle_option): Set them; enable ipa-cp when profiling.
3417         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
3418         (ipa_print_all_jump_functions): Likewise.
3419         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
3420         (ipa_print_node_params, ipa_print_all_params): New.
3421         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
3422         ipa_print_all_param_flags): Remove.
3423         (ipa_print_node_params, ipa_print_all_params): New.
3424
3425 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
3426
3427         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
3428         change from 2008-04-03.
3429         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
3430
3431 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
3432
3433         PR rtl-opt/37251
3434         * ira-color.c (push_allocnos_to_stack): Truncate
3435         removed_splay_allocno_vec.
3436
3437 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
3438
3439         PR rtl-opt/37243
3440         * ira-color (ira_fast_allocation): Don't assign hard registers to
3441         global allocnos.
3442
3443 2008-08-29  Jan Hubicka  <jh@suse.cz>
3444
3445         PR middle-end/37278
3446         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
3447         for cold internal loops.
3448
3449 2008-08-29  Richard Guenther  <rguenther@suse.de>
3450
3451         * tree-ssa-structalias.c (create_variable_info_for): Do not
3452         create fields for heap vars or vars with a noalias state.
3453         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
3454         from ESCAPED.
3455
3456 2008-08-29  Richard Guenther  <rguenther@suse.de>
3457
3458         * common.opt (ftree-store-ccp): Mark as preserved for
3459         backward compatibility.
3460         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
3461         * tree-pass.h (pass_store_ccp): Remove.
3462         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
3463         (first_vdef): Remove declaration.
3464         (get_value_loaded_by): Likewise.
3465         * tree-ssa-ccp.c (do_store_ccp): Remove.
3466         (get_default_value): Simplify as do_store_ccp is always false
3467         now.  Do not initialize mem_ref.
3468         (set_value_varying): Likewise.
3469         (canonicalize_float_value): Likewise.
3470         (set_lattice_value): Likewise.
3471         (likely_value): Likewise.
3472         (surely_varying_stmt_p): Likewise.
3473         (ccp_initialize): Likewise.
3474         (ccp_lattice_meet): Likewise.
3475         (ccp_visit_phi_node): Likewise.
3476         (ccp_fold): Likewise.
3477         (evaluate_stmt): Likewise.
3478         (visit_assignment): Likewise.
3479         (ccp_visit_stmt): Likewise.
3480         (execute_ssa_ccp): Fold into ...
3481         (do_ssa_ccp): ... this.
3482         (do_ssa_store_ccp): Remove.
3483         (gate_store_ccp): Likewise.
3484         (pass_store_ccp): Likewise.
3485         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
3486         initialize mem_ref.
3487         * tree-ssa-propagate.c (first_vdef): Remove.
3488         (get_value_loaded_by): Likewise.
3489         (replace_vuses_in): Likewise.
3490         (substitute_and_fold): Do not call replace_vuses_in.
3491         * opts.c (decode_options): Do not set flag_tree_store_ccp.
3492
3493 2008-08-29  Richard Guenther  <rguenther@suse.de>
3494
3495         PR middle-end/37236
3496         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
3497         PARAM_NOALIAS tags with is_heapvar.
3498         * tree-ssa-operands.c (access_can_touch_variable): Offset
3499         based tests do not apply for heapvars.  Fix offset test.
3500
3501 2008-08-29  Jan Hubicka  <jh@suse.cz>
3502
3503         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
3504         (-fipa-cp-clone): Enabled by default at -O3.
3505         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
3506         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
3507
3508 2008-08-29  Jan Hubicka  <jh@suse.cz>
3509
3510         * tree.c (build_function_type_skip_args,
3511         build_function_decl_skip_args): New functions.
3512         * tree.h (build_function_type_skip_args,
3513         build_function_decl_skip_args): Declare.
3514         * gimple.c (giple_copy_call_skip_args): New function.
3515         (giple_copy_call_skip_args): Declare.
3516
3517         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
3518         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
3519         (ipcp_node_modifiable_p): ... this one; use
3520         tree_versionable_function_p.
3521         (ipcp_create_replace_map): Improve debug output.
3522         (ipcp_need_redirect_p): Return false when not clonning.
3523         (ipcp_update_callgraph): Skip args.
3524         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
3525         skip args.
3526         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
3527         (save_inline_function_body): Update call of tree_function_versioning.
3528         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
3529         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
3530         argument.
3531         (tree_function_versioning): Likewise.
3532         * tree-inline.h (tree_function_versioning): Update prototype.
3533
3534 2008-08-29  Jan Hubicka  <jh@suse.cz>
3535
3536         * loop-unswitch.c (unswitch_single_loop): Use
3537         optimize_loop_for_speed_p.
3538         * tree-ssa-threadupdate.c (mark_threaded_blocks):
3539         Use optimize_function_for_size_p.
3540         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
3541         * postreload-gcse.c (eliminate_partially_redundant_load):
3542         Use optimize_bb_for_size_p.
3543         * value-prof.c (gimple_divmod_fixed_value_transform,
3544         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
3545         gimple_stringops_transform): Use optimize_bb_for_size_p.
3546         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
3547         * final.c (compute_alignments): Use optimize_function_for_size_p.
3548         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
3549         (fold_builtin_strcpy, fold_builtin_fputs): Use
3550         optimize_function_for_size_p.
3551         * fold-const.c (tree_swap_operands_p): Use
3552         optimize_function_for_size_p.
3553         * recog.c (relax_delay_slots): Likewise.
3554         * tree-ssa-math-opts.c (replace_reciprocal):
3555         Use optimize_bb_for_speed_p.
3556         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
3557         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
3558         optimize_function_for_size_p.
3559         (cgraph_decide_inlining_of_small_function): Use
3560         optimize_function_for_size_p.
3561         * global.c (find_reg): Use optimize_function_for_size_p.
3562         * opts.c (decode_options): Do not clear flag_tree_ch,
3563         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
3564         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
3565         work it out from profile.
3566         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
3567         optimize_loop_for_speed_p.
3568         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3569         Constify argument.
3570         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
3571         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
3572         * tree-eh.c (decide_copy_try_finally): Use
3573         optimize_function_for_size_p.
3574         * local-alloc.c (block_alloc): Pass BB pointer.
3575         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
3576         * gcse.c (gcse_main): Use optimize_function_for_size_p.
3577         * loop-unroll.c (decide_unrolling_and_peeling):
3578         Use optimize_loop_for_size_p.
3579         (decide_peel_completely): Likewise.
3580         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
3581         optimize_loop_for_size_p.
3582         (vect_enhance_data_refs_alignment): Likewise.
3583         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
3584         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
3585         Update call.
3586         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
3587         (try_crossjump_bb): Use optimize_bb_for_size_p.
3588         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
3589         optimize_loop_for_speed_p.
3590         * bb-reorder.c (find_traces_1_round): Likewise.
3591         (copy_bb): Use optimize_bb_for_speed_p.
3592         (duplicate_computed_gotos): Likewise.
3593         * basic-block.h (optimize_loop_nest_for_size_p,
3594         optimize_loop_nest_for_speed_p): New.
3595         * stmt.c (expand_case): Use optimize_insn_for_size_p.
3596
3597 2008-08-29  Tristan Gingold  <gingold@adacore.com>
3598
3599         * gcov.c (main): Call expandargv.
3600
3601 2008-08-29  Jan Hubicka  <jh@suse.cz>
3602
3603         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
3604         is not cold.
3605         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3606         Constify arguments.
3607         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
3608         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3609         Constify.
3610         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
3611
3612 2008-08-29  Jan Hubicka  <jh@suse.cz>
3613
3614         * tree-pass.h (pass_strip_predict_hints): Declare.
3615         * predict.c (strip_builtin_expect): Rename to ...
3616         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
3617         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
3618         (tree_estimate_probability): Do not strip builtin_expect.
3619         (pass_strip_predict_hints): New pass.
3620         * tree-inline.c (expand_call_inline): When inlining cold function,
3621         predict it as unlikely.
3622         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
3623
3624 2008-08-29  Richard Guenther  <rguenther@suse.de>
3625
3626         PR tree-optimization/37207
3627         * tree-vrp.c (extract_range_from_binary_expr): Also try
3628         to constant fold if only one of the operands is a constant.
3629
3630 2008-08-29  Nick Clifton  <nickc@redhat.com>
3631
3632         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
3633         the same way as SYMBOL_REFs.
3634
3635 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
3636
3637         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
3638
3639 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
3640
3641         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
3642         * config/mips/mips.md (branch_likely): Remove const.  Fix
3643         comment formatting.
3644         (define_delay for type "branch"): Change to only apply for branch
3645         with likely variant.
3646         (define_delay for type "branch" and "branch_likely" no).  New delay
3647         definition.
3648         (equality_op): New code iterator.
3649         (bbv, bbinv): New code attributes.
3650         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
3651         patterns.
3652
3653 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3654             Andrew Pinski  <pinskia@gcc.gnu.org>
3655
3656         PR 18050
3657         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
3658
3659 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
3660
3661         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
3662         rule that a symbolic constant must be defined and >= 0 for the
3663         corresponding facility to be present at compile-time.
3664         * gthr-posix.c: Likewise.
3665
3666 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
3667
3668         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
3669         * config/mips/mips.md (D): New mode attribute.
3670         (mulsi3, muldi3): Merge it into ...
3671         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
3672         (muldi3_mul3): New pattern.
3673         (mulsi3_mult3): Rename to mulsi3_mul3.
3674
3675 2008-08-28  Jan Hubicka  <jh@suse.cz>
3676
3677         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
3678         to fail.
3679         * predict.c (always_optimize_for_size_p): Rename to ...
3680         (optimize_function_for_size): ... this one; make extern.
3681         (optimize_function_for_speed_p): New.
3682         (optimize_bb_for_size_p, optimize_bb_for_size_p,
3683         optimize_edge_for_size_p,optimize_edge_for_size_p,
3684         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
3685         * basic-block.h (optimize_function_for_size_p,
3686         optimize_function_for_speed_p): Declare.
3687         * i386.md (optimize_size checks): Replace them by appropriate
3688         predicate.
3689         (standard_80387_constant_p, ix86_compute_frame_layout,
3690         ix86_expand_epilogue, ix86_decompose_address,
3691         print_operand, emit_i387_cw_initialization,
3692         inline_memory_move_cost, ix86_pad_returns,
3693         ix86_reorg): Replace optimize_size checks.
3694
3695 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
3696
3697         * rtl.h (simplify_subreg_regno): Declare.
3698         * rtlanal.c (simplify_subreg_regno): New function, split out from...
3699         * simplify-rtx.c (simplify_subreg): ...here.
3700         * reload.c (find_reloads): Use simplify_subreg_regno instead of
3701         subreg_offset_representable_p.
3702
3703 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3704
3705         PR c/30949
3706         * c-typeck.c (convert_for_assignment): Give a note describing what
3707         was passed and what was expected.
3708
3709 2008-08-28  Joey Ye  <joey.ye@intel.com>
3710
3711         * doc/extend.texi: Document AVX built-in functions.
3712         * doc/invoke.texi: Document -mavx.
3713
3714 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
3715             Joey Ye  <joey.ye@intel.com>
3716             Xuepeng Guo  <xuepeng.guo@intel.com>
3717
3718         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
3719
3720         * config/i386/cpuid.h (bit_FMA): New.
3721         (bit_XSAVE): Likewise.
3722         (bit_OSXSAVE): Likewise.
3723         (bit_AVX): Likewise.
3724
3725         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
3726         define.  Use ASM_OUTPUT_AVX_PREFIX.
3727
3728         * config/i386/gmmintrin.h: New.
3729
3730         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
3731         (OPTION_MASK_ISA_AVX_SET): New.
3732         (OPTION_MASK_ISA_FMA_SET): Likewise.
3733         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
3734         (OPTION_MASK_ISA_FMA_SET): Likewise.
3735         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
3736         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
3737         (pta_flags): Add PTA_AVX and PTA_FMA.
3738         (override_options): Handle PTA_AVX and PTA_FMA.
3739         (init_cumulative_args): Handle warn_avx.
3740         (classify_argument): Return 0 for COImode and OImode.  Return
3741         1 and X86_64_AVX_CLASS for 256bit vector types.
3742         (examine_argument): Handle X86_64_AVX_CLASS.
3743         (construct_container): Likewise.
3744         (function_arg_advance_32): Pass OImode and 256bit vector types
3745         in AVX register.
3746         (function_arg_advance_64): Take a new argument to indicate if a
3747         parameter is named.  Handle 256bit vector types.  Return
3748         immediately for unnamed 256bit vector mode parameters.
3749         (function_arg_advance): Updated.
3750         (function_arg_32): Add comments for TImode.  Handle OImode
3751         and 256bit vector types.
3752         (function_arg_64): Take a new argument to indicate if a
3753         parameter is named.  Handle 256bit vector types.  Return NULL
3754         for unnamed 256bit vector mode parameters.
3755         (function_arg): Updated.
3756         (setup_incoming_varargs_64): Support
3757         AVX encoding for *sse_prologue_save_insn.
3758         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
3759         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
3760         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
3761         enabled, otherwise return -3.
3762         (standard_sse_constant_opcode): Handle AVX and 256bit vector
3763         modes.
3764         (print_reg): Support AVX registers.  Handle 'x' and 't'.
3765         Handle 'd' to duplicate the operand.
3766         (print_operand): Likewise.  Also support AVX vector compare
3767         instructions.
3768         (output_387_binary_op): Support AVX.
3769         (output_fp_compare): Likewise.
3770         (ix86_expand_vector_move_misalign): Likewise.
3771         (ix86_attr_length_vex_default): New.
3772         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
3773         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
3774         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
3775         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
3776         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
3777         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
3778         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
3779         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
3780         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
3781         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
3782         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
3783         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
3784         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
3785         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
3786         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
3787         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
3788         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
3789         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
3790         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
3791         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
3792         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
3793         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
3794         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
3795         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
3796         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
3797         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
3798         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
3799         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
3800         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
3801         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
3802         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
3803         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
3804         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
3805         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
3806         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
3807         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
3808         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
3809         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
3810         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
3811         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
3812         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
3813         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
3814         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
3815         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
3816         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
3817         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
3818         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
3819         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
3820         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
3821         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
3822         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
3823         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
3824         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
3825         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
3826         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
3827         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
3828         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
3829         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
3830         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
3831         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
3832         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
3833         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
3834         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
3835         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
3836         and IX86_BUILTIN_MOVMSKPS256,
3837         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
3838         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
3839         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
3840         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
3841         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
3842         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
3843         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
3844         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
3845         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
3846         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
3847         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
3848         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
3849         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
3850         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
3851         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
3852         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
3853         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
3854         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
3855         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
3856         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
3857         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
3858         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
3859         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
3860         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
3861         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
3862         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
3863         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
3864         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
3865         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
3866         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
3867         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
3868         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
3869         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
3870         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
3871         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
3872         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
3873         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
3874         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
3875         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
3876         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
3877         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
3878         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
3879         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
3880         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
3881         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
3882         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
3883         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
3884         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
3885         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
3886         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
3887         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
3888         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
3889         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
3890         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
3891         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
3892         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
3893         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
3894         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
3895         IX86_BUILTIN_CMPPS,
3896         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
3897         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
3898         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
3899         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
3900         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
3901         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
3902         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
3903         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
3904         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
3905         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
3906         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
3907         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
3908         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
3909         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
3910         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
3911         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
3912         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
3913         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
3914         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
3915         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
3916         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
3917         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
3918         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
3919         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
3920         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
3921         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
3922         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
3923         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
3924         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
3925         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
3926         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
3927         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
3928         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
3929         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
3930         IX86_BUILTIN_MOVMSKPS256.
3931         (ix86_init_mmx_sse_builtins): Support AVX builtins.
3932         (ix86_expand_args_builtin): Likewise.
3933         (ix86_expand_special_args_builtin): Likewise.
3934         (ix86_hard_regno_mode_ok): Handle AVX modes.
3935         (ix86_expand_vector_init_duplicate): Likewise.
3936         (ix86_expand_vector_init_one_nonzero): Likewise.
3937         (ix86_expand_vector_init_one_var): Likewise.
3938         (ix86_expand_vector_init_concat): Likewise.
3939         (ix86_expand_vector_init_general): Likewise.
3940         (ix86_expand_vector_set): Likewise.
3941         (ix86_vector_mode_supported_p): Likewise.
3942         (x86_extended_reg_mentioned_p): Check INSN_P before using
3943         PATTERN.
3944
3945         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3946         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
3947
3948         * config/i386/i386.h (TARGET_AVX): New.
3949         (TARGET_FMA): Likewise.
3950         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
3951         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
3952         (VALID_AVX256_REG_MODE): New.
3953         (AVX256_VEC_FLOAT_MODE_P): Likewise.
3954         (AVX_FLOAT_MODE_P): Likewise.
3955         (AVX128_VEC_FLOAT_MODE_P): Likewise.
3956         (AVX256_VEC_FLOAT_MODE_P): Likewise.
3957         (AVX_VEC_FLOAT_MODE_P): Likewise.
3958         (ASM_OUTPUT_AVX_PREFIX): Likewise.
3959         (ASM_OUTPUT_OPCODE): Likewise.
3960         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
3961         support.
3962         (SSE_REG_MODE_P): Allow 256bit vector modes.
3963         (ix86_args): Add a warn_avx field.
3964
3965         * config/i386/i386.md (UNSPEC_PCMP): New.
3966         (UNSPEC_VPERMIL): Likewise.
3967         (UNSPEC_VPERMIL2): Likewise.
3968         (UNSPEC_VPERMIL2F128): Likewise.
3969         (UNSPEC_MASKLOAD): Likewise.
3970         (UNSPEC_MASKSTORE): Likewise.
3971         (UNSPEC_CAST): Likewise.
3972         (UNSPEC_VTESTP): Likewise.
3973         (UNSPECV_VZEROALL): Likewise.
3974         (UNSPECV_VZEROUPPER): Likewise.
3975         (XMM0_REG): Likewise.
3976         (XMM1_REG): Likewise.
3977         (XMM2_REG): Likewise.
3978         (XMM3_REG): Likewise.
3979         (XMM4_REG): Likewise.
3980         (XMM5_REG): Likewise.
3981         (XMM6_REG): Likewise.
3982         (XMM8_REG): Likewise.
3983         (XMM9_REG): Likewise.
3984         (XMM10_REG): Likewise.
3985         (XMM11_REG): Likewise.
3986         (XMM12_REG): Likewise.
3987         (XMM13_REG): Likewise.
3988         (XMM14_REG): Likewise.
3989         (XMM15_REG): Likewise.
3990         (prefix): Likewise.
3991         (prefix_vex_imm8): Likewise.
3992         (prefix_vex_w): Likewise.
3993         (length_vex): Likewise.
3994         (maxmin): Likewise.
3995         (movoi): Likewise.
3996         (*avx_ashlti3): Likewise.
3997         (*avx_lshrti3): Likewise.
3998         (*avx_setcc<mode>): Likewise.
3999         (*fop_<mode>_comm_mixed_avx): Likewise.
4000         (*fop_<mode>_comm_avx): Likewise.
4001         (*fop_<mode>_1_mixed_avx): Likewise.
4002         (*fop_<mode>_1_avx): Likewise.
4003         (*avx_<code><mode>3): Likewise.
4004         (*avx_ieee_smin<mode>3): Likewise.
4005         (*avx_ieee_smax<mode>3): Likewise.
4006         (mode): Add OI, V8SF and V4DF.
4007         (length): Support VEX prefix.
4008         (*cmpfp_i_mixed): Set prefix attribute.
4009         (*cmpfp_i_sse): Likewise.
4010         (*cmpfp_iu_mixed): Likewise.
4011         (*cmpfp_iu_sse): Likewise.
4012         (*movsi_1): Support AVX.
4013         (*movdi_2): Likewise.
4014         (*movdi_1_rex64): Likewise.
4015         (*movti_internal): Likewise.
4016         (*movti_rex64): Likewise.
4017         (*movsf_1): Likewise.
4018         (*movdf_nointeger): Likewise.
4019         (*movdf_integer_rex64): Likewise.
4020         (*movtf_internal): Likewise.
4021         (zero_extendsidi2_32): Likewise.
4022         (zero_extendsidi2_rex64): Likewise.
4023         (*extendsfdf2_mixed): Likewise.
4024         (*extendsfdf2_sse): Likewise.
4025         (*truncdfsf_fast_mixed): Likewise.
4026         (*truncdfsf_fast_sse): Likewise.
4027         (*truncdfsf_mixed): Likewise.
4028         (fix_trunc<mode>di_sse): Likewise.
4029         (fix_trunc<mode>si_sse): Likewise.
4030         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
4031         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
4032         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
4033         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
4034         (*rcpsf2_sse): Likewise.
4035         (*rsqrtsf2_sse): Likewise.
4036         (*sqrt<mode>2_sse): Likewise.
4037         (sse4_1_round<mode>2): Likewise.
4038         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
4039         Support AVX.  Set length attribute properly for AVX.
4040
4041         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
4042         (VECTOR_MODES (FLOAT, 32)): Likewise.
4043         (VECTOR_MODE (INT, DI, 8)): Likewise.
4044         (VECTOR_MODE (INT, HI, 32)): Likewise.
4045         (VECTOR_MODE (INT, QI, 64)): Likewise.
4046         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
4047         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
4048         (VECTOR_MODE (INT, DI, 4)): Removed.
4049         (VECTOR_MODE (INT, SI, 8)): Likewise.
4050         (VECTOR_MODE (INT, HI, 16)): Likewise.
4051         (VECTOR_MODE (INT, QI, 32)): Likewise.
4052         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
4053         (INT_MODE (OI, 32)): Likewise.
4054
4055         * config/i386/i386.opt (mavx): New.
4056         (mfma): Likewise.
4057
4058         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
4059
4060         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
4061         (*mov<mode>_internal_avx): New.
4062         (*movv2sf_internal_rex64_avx): Likewise.
4063         (*movv2sf_internal_avx): Likewise.
4064
4065         * config/i386/predicates.md (const_4_to_5_operand): New.
4066         (const_6_to_7_operand): Likewise.
4067         (const_8_to_11_operand): Likewise.
4068         (const_12_to_15_operand): Likewise.
4069         (avx_comparison_float_operator): Likewise.
4070
4071         * config/i386/sse.md (AVX256MODEI): New.
4072         (AVX256MODE): Likewise.
4073         (AVXMODEQI): Likewise.
4074         (AVXMODE): Likewise.
4075         (AVX256MODEF2P): Likewise.
4076         (AVX256MODE2P): Likewise.
4077         (AVX256MODE4P): Likewise.
4078         (AVX256MODE8P): Likewise.
4079         (AVXMODEF2P): Likewise.
4080         (AVXMODEF4P): Likewise.
4081         (AVXMODEDCVTDQ2PS): Likewise.
4082         (AVXMODEDCVTPS2DQ): Likewise.
4083         (avxvecmode): Likewise.
4084         (avxvecpsmode): Likewise.
4085         (avxhalfvecmode): Likewise.
4086         (avxscalarmode): Likewise.
4087         (avxcvtvecmode): Likewise.
4088         (avxpermvecmode): Likewise.
4089         (avxmodesuffixf2c): Likewise.
4090         (avxmodesuffixp): Likewise.
4091         (avxmodesuffixs): Likewise.
4092         (avxmodesuffix): Likewise.
4093         (vpermilbits): Likewise.
4094         (pinsrbits): Likewise.
4095         (mov<mode>): Likewise.
4096         (*mov<mode>_internal): Likewise.
4097         (push<mode>1): Likewise.
4098         (movmisalign<mode>): Likewise.
4099         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4100         (avx_movdqu<avxmodesuffix>): Likewise.
4101         (avx_lddqu<avxmodesuffix>): Likewise.
4102         (<plusminus_insn><mode>3): Likewise.
4103         (*avx_<plusminus_insn><mode>3): Likewise.
4104         (*avx_vm<plusminus_insn><mode>3): Likewise.
4105         (mul<mode>3): Likewise.
4106         (*avx_mul<mode>3): Likewise.
4107         (*avx_vmmul<mode>3): Likewise.
4108         (divv8sf3): Likewise.
4109         (divv4df3): Likewise.
4110         (avx_div<mode>3): Likewise.
4111         (*avx_div<mode>3): Likewise.
4112         (*avx_vmdiv<mode>3): Likewise.
4113         (avx_rcpv8sf2): Likewise.
4114         (*avx_vmrcpv4sf2): Likewise.
4115         (sqrtv8sf2): Likewise.
4116         (avx_sqrtv8sf2): Likewise.
4117         (*avx_vmsqrt<mode>2): Likewise.
4118         (rsqrtv8sf2): Likewise.
4119         (avx_rsqrtv8sf2): Likewise.
4120         (*avx_vmrsqrtv4sf2): Likewise.
4121         (<code><mode>3): Likewise.
4122         (*avx_<code><mode>3_finite): Likewise.
4123         (*avx_<code><mode>3): Likewise.
4124         (*avx_vm<code><mode>3): Likewise.
4125         (*avx_ieee_smin<mode>3): Likewise.
4126         (*avx_ieee_smax<mode>3): Likewise.
4127         (avx_addsubv8sf3): Likewise.
4128         (avx_addsubv4df3): Likewise.
4129         (*avx_addsubv4sf3): Likewise.
4130         (*avx_addsubv2df3): Likewise.
4131         (avx_h<plusminus_insn>v4df3): Likewise.
4132         (avx_h<plusminus_insn>v8sf3): Likewise.
4133         (*avx_h<plusminus_insn>v4sf3): Likewise.
4134         (*avx_h<plusminus_insn>v2df3): Likewise.
4135         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
4136         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
4137         (*avx_maskcmp<mode>3): Likewise.
4138         (avx_nand<mode>3): Likewise.
4139         (*avx_<code><mode>3): Likewise.
4140         (*avx_nand<mode>3): Likewise.
4141         (*avx_<code><mode>3): Likewise.
4142         (*avx_cvtsi2ss): Likewise.
4143         (*avx_cvtsi2ssq): Likewise.
4144         (*avx_cvtsi2sd): Likewise.
4145         (*avx_cvtsi2sdq): Likewise.
4146         (*avx_cvtsd2ss): Likewise.
4147         (avx_cvtss2sd): Likewise.
4148         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
4149         (avx_cvtps2dq<avxmodesuffix>): Likewise.
4150         (avx_cvttps2dq<avxmodesuffix>): Likewise.
4151         (*avx_cvtsi2sd): Likewise.
4152         (*avx_cvtsi2sdq): Likewise.
4153         (avx_cvtdq2pd256): Likewise.
4154         (avx_cvtpd2dq256): Likewise.
4155         (avx_cvttpd2dq256): Likewise.
4156         (*avx_cvtsd2ss): Likewise.
4157         (*avx_cvtss2sd): Likewise.
4158         (avx_cvtpd2ps256): Likewise.
4159         (avx_cvtps2pd256): Likewise.
4160         (*avx_movhlps): Likewise.
4161         (*avx_movlhps): Likewise.
4162         (avx_unpckhps256): Likewise.
4163         (*avx_unpckhps): Likewise.
4164         (avx_unpcklps256): Likewise.
4165         (*avx_unpcklps): Likewise.
4166         (avx_movshdup256): Likewise.
4167         (avx_movsldup256): Likewise.
4168         (avx_shufps256): Likewise.
4169         (avx_shufps256_1): Likewise.
4170         (*avx_shufps_<mode>): Likewise.
4171         (*avx_loadhps): Likewise.
4172         (*avx_storelps): Likewise.
4173         (*avx_loadlps): Likewise.
4174         (*avx_movss): Likewise.
4175         (*vec_dupv4sf_avx): Likewise.
4176         (*vec_concatv2sf_avx): Likewise.
4177         (*vec_concatv4sf_avx): Likewise.
4178         (*vec_setv4sf_0_avx): Likewise.
4179         (*vec_setv4sf_avx): Likewise.
4180         (*avx_insertps): Likewise.
4181         (avx_vextractf128<mode>): Likewise.
4182         (vec_extract_lo_<mode>): Likewise.
4183         (vec_extract_hi_<mode>): Likewise.
4184         (vec_extract_lo_<mode>): Likewise.
4185         (vec_extract_hi_<mode>): Likewise.
4186         (vec_extract_lo_v16hi): Likewise.
4187         (vec_extract_hi_v16hi): Likewise.
4188         (vec_extract_lo_v32qi): Likewise.
4189         (vec_extract_hi_v32qi): Likewise.
4190         (avx_unpckhpd256): Likewise.
4191         (*avx_unpckhpd): Likewise.
4192         (avx_movddup256): Likewise.
4193         (*avx_movddup): Likewise.
4194         (avx_unpcklpd256): Likewise.
4195         (*avx_unpcklpd): Likewise.
4196         (avx_shufpd256): Likewise.
4197         (avx_shufpd256_1): Likewise.
4198         (*avx_punpckhqdq): Likewise.
4199         (*avx_punpcklqdq): Likewise.
4200         (*avx_shufpd_<mode>): Likewise.
4201         (*avx_storehpd): Likewise.
4202         (*avx_loadhpd): Likewise.
4203         (*avx_loadlpd): Likewise.
4204         (*avx_movsd): Likewise.
4205         (*vec_concatv2df_avx): Likewise.
4206         (*avx_<plusminus_insn><mode>3): Likewise.
4207         (*avx_<plusminus_insn><mode>3): Likewise.
4208         (*avx_mulv8hi3): Likewise.
4209         (*avxv8hi3_highpart): Likewise.
4210         (*avx_umulv8hi3_highpart): Likewise.
4211         (*avx_umulv2siv2di3): Likewise.
4212         (*avx_mulv2siv2di3): Likewise.
4213         (*avx_pmaddwd): Likewise.
4214         (*avx_mulv4si3): Likewise.
4215         (*avx_ashr<mode>3): Likewise.
4216         (*avx_lshr<mode>3): Likewise.
4217         (*avx_ashl<mode>3): Likewise.
4218         (*avx_<code><mode>3): Likewise.
4219         (*avx_eq<mode>3): Likewise.
4220         (*avx_gt<mode>3): Likewise.
4221         (*avx_nand<mode>3): Likewise.
4222         (*avx_nand<mode>3): Likewise.
4223         (*avx_<code><mode>3): Likewise.
4224         (*avx_<code><mode>3): Likewise.
4225         (*avx_packsswb): Likewise.
4226         (*avx_packssdw): Likewise.
4227         (*avx_packuswb): Likewise.
4228         (*avx_punpckhbw): Likewise.
4229         (*avx_punpcklbw): Likewise.
4230         (*avx_punpckhwd): Likewise.
4231         (*avx_punpcklwd): Likewise.
4232         (*avx_punpckhdq): Likewise.
4233         (*avx_punpckldq): Likewise.
4234         (*avx_pinsr<avxmodesuffixs>): Likewise.
4235         (*avx_pinsrq): Likewise.
4236         (*avx_loadld): Likewise.
4237         (*vec_extractv2di_1_rex64_avx): Likewise.
4238         (*vec_extractv2di_1_avx): Likewise.
4239         (*vec_dupv2di_avx): Likewise.
4240         (*vec_concatv2si_avx): Likewise.
4241         (*vec_concatv4si_1_avx): Likewise.
4242         (*vec_concatv2di_avx): Likewise.
4243         (*vec_concatv2di_rex64_avx): Likewise.
4244         (*avx_uavgv16qi3): Likewise.
4245         (*avx_uavgv8hi3): Likewise.
4246         (*avx_psadbw): Likewise.
4247         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
4248         (*avx_phaddwv8hi3): Likewise.
4249         (*avx_phadddv4si3): Likewise.
4250         (*avx_phaddswv8hi3): Likewise.
4251         (*avx_phsubwv8hi3): Likewise.
4252         (*avx_phsubdv4si3): Likewise.
4253         (*avx_phsubswv8hi3): Likewise.
4254         (*avx_pmaddubsw128): Likewise.
4255         (*avx_pmulhrswv8hi3): Likewise.
4256         (*avx_pshufbv16qi3): Likewise.
4257         (*avx_psign<mode>3): Likewise.
4258         (*avx_palignrti): Likewise.
4259         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4260         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4261         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4262         (*avx_mpsadbw): Likewise.
4263         (*avx_packusdw): Likewise.
4264         (*avx_pblendvb): Likewise.
4265         (*avx_pblendw): Likewise.
4266         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4267         (avx_ptest256): Likewise.
4268         (avx_roundp<avxmodesuffixf2c>256): Likewise.
4269         (*avx_rounds<ssemodesuffixf2c>): Likewise.
4270         (*avx_aesenc): Likewise.
4271         (*avx_aesenclast): Likewise.
4272         (*avx_aesdec): Likewise.
4273         (*avx_aesdeclast): Likewise.
4274         (avx_vzeroupper): Likewise.
4275         (avx_vzeroupper_rex64): Likewise.
4276         (avx_vpermil<mode>): Likewise.
4277         (avx_vpermilvar<mode>3): Likewise.
4278         (avx_vpermil2<mode>3): Likewise.
4279         (avx_vperm2f128<mode>3): Likewise.
4280         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4281         (avx_vbroadcastss256): Likewise.
4282         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
4283         (avx_vinsertf128<mode>): Likewise.
4284         (vec_set_lo_<mode>): Likewise.
4285         (vec_set_hi_<mode>): Likewise.
4286         (vec_set_lo_<mode>): Likewise.
4287         (vec_set_hi_<mode>): Likewise.
4288         (vec_set_lo_v16hi): Likewise.
4289         (vec_set_hi_v16hi): Likewise.
4290         (vec_set_lo_v32qi): Likewise.
4291         (vec_set_hi_v32qi): Likewise.
4292         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4293         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4294         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
4295         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
4296         (vec_init<mode>): Likewise.
4297         (*vec_concat<mode>_avx): Likewise.
4298         (blendbits): Support V8SF and V4DF.
4299         (sse2_movq128): Support AVX.
4300         (<sse>_movnt<mode>): Likewise.
4301         (sse2_movntv2di): Likewise.
4302         (sse_rcpv4sf2): Likewise.
4303         (sse_sqrtv4sf2): Likewise.
4304         (sse_rsqrtv4sf2): Likewise.
4305         (<sse>_comi): Likewise.
4306         (<sse>_ucomi): Likewise.
4307         (sse_cvtss2si): Likewise.
4308         (sse_cvtss2si_2): Likewise.
4309         (sse_cvtss2siq): Likewise.
4310         (sse_cvtss2siq_2): Likewise.
4311         (sse_cvttss2si): Likewise.
4312         (sse_cvttss2siq): Likewise.
4313         (sse2_cvtsd2si): Likewise.
4314         (sse2_cvtsd2si_2): Likewise.
4315         (sse2_cvtsd2siq): Likewise.
4316         (sse2_cvtsd2siq_2): Likewise.
4317         (sse2_cvttsd2si): Likewise.
4318         (sse2_cvttsd2siq): Likewise.
4319         (sse2_cvtdq2pd): Likewise.
4320         (*sse2_cvtpd2dq): Likewise.
4321         (*sse2_cvttpd2dq): Likewise.
4322         (*sse2_cvtpd2ps): Likewise.
4323         (sse2_cvtps2pd): Likewise.
4324         (sse3_movshdup): Likewise.
4325         (sse3_movsldup): Likewise.
4326         (sse_storehps): Likewise.
4327         (*sse4_1_extractps): Likewise.
4328         (sse2_storelpd): Likewise.
4329         (vec_dupv2df_sse3): Likewise.
4330         (*vec_concatv2df_sse3): Likewise.
4331         (*sse4_1_pextrb): Likewise.
4332         (*sse4_1_pextrb_memory): Likewise.
4333         (*sse2_pextrw): Likewise.
4334         (*sse4_1_pextrw_memory): Likewise.
4335         (*sse4_1_pextrd): Likewise.
4336         (*sse4_1_pextrq): Likewise.
4337         (sse2_pshufd_1): Likewise.
4338         (sse2_pshuflw_1): Likewise.
4339         (sse2_pshufhw_1): Likewise.
4340         (*sse2_storeq_rex64): Likewise.
4341         (*vec_dupv4si): Likewise.
4342         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
4343         (sse2_pmovmskb): Likewise.
4344         (*sse2_maskmovdqu): Likewise.
4345         (*sse2_maskmovdqu_rex64): Likewise.
4346         (sse_ldmxcsr): Likewise.
4347         (sse_stmxcsr): Likewise.
4348         (abs<mode>2): Likewise.
4349         (sse4_1_movntdqa): Likewise.
4350         (sse4_1_phminposuw): Likewise.
4351         (sse4_1_extendv8qiv8hi2): Likewise.
4352         (*sse4_1_extendv8qiv8hi2): Likewise.
4353         (sse4_1_extendv4qiv4si2): Likewise.
4354         (*sse4_1_extendv4qiv4si2): Likewise.
4355         (sse4_1_extendv2qiv2di2): Likewise.
4356         (*sse4_1_extendv2qiv2di2): Likewise.
4357         (sse4_1_extendv4hiv4si2): Likewise.
4358         (*sse4_1_extendv4hiv4si2): Likewise.
4359         (sse4_1_extendv2hiv2di2): Likewise.
4360         (*sse4_1_extendv2hiv2di2): Likewise.
4361         (sse4_1_extendv2siv2di2): Likewise.
4362         (*sse4_1_extendv2siv2di2): Likewise.
4363         (sse4_1_zero_extendv8qiv8hi2): Likewise.
4364         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
4365         (sse4_1_zero_extendv4qiv4si2): Likewise.
4366         (*sse4_1_zero_extendv4qiv4si2): Likewise.
4367         (sse4_1_zero_extendv2qiv2di2): Likewise.
4368         (*sse4_1_zero_extendv2qiv2di2): Likewise.
4369         (sse4_1_zero_extendv4hiv4si2): Likewise.
4370         (*sse4_1_zero_extendv4hiv4si2): Likewise.
4371         (sse4_1_zero_extendv2hiv2di2): Likewise.
4372         (*sse4_1_zero_extendv2hiv2di2): Likewise.
4373         (sse4_1_zero_extendv2siv2di2): Likewise.
4374         (*sse4_1_zero_extendv2siv2di2): Likewise.
4375         (sse4_1_ptest): Likewise.
4376         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
4377         (sse4_2_pcmpestri): Likewise.
4378         (sse4_2_pcmpestrm): Likewise.
4379         (sse4_2_pcmpistri): Likewise.
4380         (sse4_2_pcmpistrm): Likewise.
4381         (aesimc): Likewise.
4382         (aeskeygenassist): Likewise.
4383
4384 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
4385
4386         * config/i386/predicates.md (vzeroall_operation): New.
4387
4388         * config/i386/sse.md (avx_vzeroall): New.
4389         (*avx_vzeroall): Likewise.
4390
4391 2008-08-28  Paul Brook  <paul@codesourcery.com>
4392             Mark Shinwell  <shinwell@codesourcery.com>
4393             Richard Earnshaw  <richard.earnshaw@arm.com>
4394
4395         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
4396         (TARGET_MIN_ANCHOR_OFFSET): New.
4397         (arm_override_options): Set correct anchor ranges for Thumb-1
4398         and Thumb-2 if required.
4399         (legitimize_pic_address): Handle case involving a TLS symbol
4400         reference with an addend.
4401         (arm_optimization_options): Enable section anchors at -O1 and
4402         above.
4403         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
4404         * config/arm/arm-protos.h (arm_optimization_options): New.
4405
4406 2008-08-28  Nick Clifton  <nickc@redhat.com>
4407
4408         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
4409         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
4410         attribute.
4411
4412         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
4413         * config/v850/v850.md (return): Remove frame size restriction.
4414
4415         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
4416
4417         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
4418
4419         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
4420
4421         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
4422
4423 2008-08-28  Paul Brook  <paul@codesourcery.com>
4424
4425         * config/arm/vfp11.md: Update license notice.
4426         * config/arm/cortex-r4.md: Ditto.
4427
4428 2008-08-28  Richard Guenther  <rguenther@suse.de>
4429
4430         PR tree-optimization/37207
4431         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
4432         tuplification bug.
4433
4434 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
4435
4436         PR c++/36741
4437         * tree.c (int_fits_type_p): Don't forget unsigned integers
4438           of type sizetype which higher end word equals -1.
4439
4440 2008-08-28  Ira Rosen  <irar@il.ibm.com>
4441
4442         * target.h (struct vectorize): Add new target builtin.
4443         * tree-vectorizer.c (destroy_loop_vec_info): Call
4444         vect_free_slp_instance instead of vect_free_slp_node.
4445         * tree-vectorizer.h (enum slp_load_perm_type): New.
4446         (struct _slp_instance): Add new fields.
4447         (SLP_INSTANCE_LOAD_PERMUTATION): New.
4448         (SLP_INSTANCE_LOADS): New.
4449         (vect_free_slp_tree): Remove.
4450         (vect_free_slp_instance): Declare.
4451         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
4452         (vectorizable_load): Add argument.
4453         (vect_transform_slp_perm_load): New.
4454         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
4455         vectorizable_load.
4456         (vect_get_place_in_interleaving_chain): New function.
4457         (vect_free_slp_tree): Make static.
4458         (vect_free_slp_instance): New function.
4459         (vect_build_slp_tree): Add new arguments. Allow load permutations and
4460         collect the load location in the interleaving chain.
4461         (vect_supported_slp_permutation_p): New function.
4462         (vect_supported_load_permutation_p): Likewise.
4463         (vect_analyze_slp_instance): In case of loads permutation, call
4464         vect_supported_load_permutation_p to check that the permutation is
4465         supported.
4466         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
4467         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
4468         (vect_create_mask_and_perm): New function.
4469         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
4470         (vectorizable_load): Add an argument. Don't keep the created vectors
4471         statements in the node if permutation is required. Call
4472         vect_transform_slp_perm_load to generate the permutation.
4473         (vect_transform_stmt): Add new argument. Call vectorizable_load with
4474         additional argument.
4475         (vect_schedule_slp_instance): In case of loads permutation, allocate
4476         vectorized statements structure for all the related SLP nodes. Call
4477         vect_transform_stmt with addditional argument.
4478         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
4479         * config/spu/spu.c (spu_builtin_vec_perm): New.
4480         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
4481         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
4482         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
4483         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
4484
4485 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
4486
4487         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
4488         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
4489         __gthread_cond_signal, __gthread_cond_timedwait,
4490         __gthread_cond_timedwait_recursive): New functions.
4491         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
4492         Likewise.
4493         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
4494         thread interfaces.
4495
4496 2008-08-28  Richard Guenther  <rguenther@suse.de>
4497
4498         PR middle-end/37005
4499         * fold-const.c (maybe_canonicalize_comparison_1): Require
4500         undefined overflow only for canonicalizing A +- CST cmp CST.
4501         Make sure to not generate new constants that are not inside
4502         their TYPE_MIN/MAX_VALUE range.
4503         (maybe_canonicalize_comparison): Remove undefined overflow
4504         checking from here.
4505         (fold_binary): Remove now duplicate folding.
4506
4507 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
4508
4509         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
4510         use not updated in the last change.
4511
4512 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4513
4514         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
4515         (IRA_COVER_CLASSES): Add FPUL_REGS.
4516
4517 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4518
4519         PR 37217
4520         * c-common.c (conversion_warning): Check for null operands.
4521
4522 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4523
4524         PR c/31673
4525         * c-decl.c (check_for_loop_decls): Improve error message. Give
4526         hint.
4527
4528 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4529
4530         PR c/37186
4531         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
4532         (convert_for_assignment): Pass corrent OPT_W* parameter to
4533         WARN_FOR_ASSIGNMENT.
4534
4535 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
4536
4537         PR c++/35321
4538         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
4539
4540 2008-08-27  Paul Brook  <paul@codesourcery.com>
4541
4542         * config.gcc: Loosen checks for arm uclinux eabi targets.
4543
4544 2008-08-27  Paul Brook  <paul@codesourcery.com>
4545
4546         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
4547         _clzsi2.
4548         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
4549
4550 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
4551
4552         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
4553         the enumerators of an ENUMERAL_TYPE.
4554         * dbxout.c (dbxout_type): Ditto.
4555
4556 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4557
4558         PR rtl-opt/37219
4559         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
4560         (fwprop_addr): Check that the loop_father is not the outer loop.
4561
4562 2008-08-26  Paul Brook  <paul@codesourcery.com>
4563
4564         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
4565         Remove documentation entry for fmul type.
4566         Use fmuls to annotate single-precision multiplication patterns,
4567         fmuld to annotate double-precision multiplication patterns,
4568         fmacs to annotate single-precision multiply-accumulate patterns
4569         and fmacd to annotate double-precision multiply-accumulate patterns.
4570         * config/arm/vfp11.md: Update reservations accordingly.
4571         * config/arm/arm.md: Note that certain values of the "type"
4572         attribute are documented in vfp.md.
4573         * config/arm/arm1020e.md: Remove out of date duplicate comment.
4574         (v10_cvt): Use new fmul types.
4575
4576 2008-08-26  Paul Brook  <paul@codesourcery.com>
4577
4578         * config/arm/vfp.md: Move pipeline description for VFP11 to...
4579         * config/arm/vfp11.md: ...here.  New.
4580         * config/arm/arm.md: Include vfp11.md.
4581
4582 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
4583
4584         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
4585         parameter to inform call.
4586
4587 2008-08-26  Jeff Law  <law@redhat.com>
4588
4589         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
4590         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
4591         preferred class when copying a constant into a partial word register.
4592
4593 2008-08-26  Ben Elliston  <bje@au.ibm.com>
4594
4595         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
4596         * cp/typeck.c: Likewise.
4597         * cp/tree.c: Likewise.
4598         * gimple-low.c: Likewise.
4599         * jump.c: Likewise.
4600
4601 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
4602
4603         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
4604         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
4605
4606         * doc/passes.texi: Describe IRA.
4607
4608         * doc/tm.texi (IRA_COVER_CLASSES,
4609         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
4610
4611         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
4612         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
4613         -fira-propagate-cost, -fno-ira-share-save-slots,
4614         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
4615
4616         * flags.h (ira_algorithm): New enumeration.
4617         (flag_ira_algorithm, flag_ira_verbose): New external variable
4618         declarations.
4619
4620         * postreload.c (gate_handle_postreload): Don't do post reload
4621         optimizations unless the reload is completed.
4622
4623         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
4624         IRA.
4625
4626         * tree-pass.h (pass_ira): New external variable declaration.
4627
4628         * reload.h: Add 2008 to the Copyright.
4629
4630         * cfgloopanal.c: Include params.h.
4631         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
4632         mode.
4633
4634         * params.h (IRA_MAX_LOOPS_NUM): New macro.
4635
4636         * toplev.c (ira.h): New include.
4637         (flag_ira_algorithm, flag_ira_verbose): New external variables.
4638         (backend_init_target): Call ira_init.
4639         (backend_init): Call ira_init_once.
4640         (finalize): Call finish_ira_once.
4641
4642         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
4643         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
4644         external variables.
4645
4646         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
4647         may_move_out_cost): New external variable declarations.
4648         (move_table): New typedef.
4649
4650         * caller-save.c: Include headers output.h and ira.h.
4651         (no_caller_save_reg_set): New global variable.
4652         (save_slots_num, save_slots): New variables.
4653         (reg_save_code, reg_restore_code, add_stored_regs): Add
4654         prototypes.
4655         (init_caller_save): Set up no_caller_save_reg_set.
4656         (init_save_areas): Reset save_slots_num.
4657         (saved_hard_reg): New structure.
4658         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
4659         (initiate_saved_hard_regs, new_saved_hard_reg,
4660         finish_saved_hard_regs, saved_hard_reg_compare_func): New
4661         functions.
4662         (setup_save_areas): Add code for sharing stack slots.
4663         (all_blocks): New variable.
4664         (save_call_clobbered_regs): Process pseudo-register too.
4665         (mark_set_regs): Process pseudo-register too.
4666         (insert_one_insn): Put the insn after bb note in a empty basic
4667         block.  Add insn check.
4668
4669         * global.c (eliminable_regset): Make it external.
4670         (mark_elimination): Use DF_LR_IN for IRA.
4671         (pseudo_for_reload_consideration_p): New.
4672         (build_insn_chain): Make it external.  Don't ignore spilled
4673         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
4674         (gate_handle_global_alloc): New function.
4675         (pass_global_alloc): Add the gate function.
4676
4677         * opts.c (decode_options): Set up flag_ira.  Print the warning for
4678         -fira.
4679         (common_handle_option): Process -fira-algorithm and -fira-verbose.
4680
4681         * timevar.def (TV_IRA, TV_RELOAD): New passes.
4682
4683         * regmove.c (regmove_optimize): Don't do replacement of output for
4684         IRA.
4685
4686         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
4687         New external variable declarations.
4688
4689         * local-alloc.c (update_equiv_regs): Make it external.  Return
4690         true if jump label rebuilding should be done.  Rescan new_insn for
4691         notes.
4692         (gate_handle_local_alloc): New function.
4693         (pass_local_alloc): Add the gate function.
4694
4695         * alias.c (value_addr_p, stack_addr_p): New functions.
4696         (nonoverlapping_memrefs_p): Use them for IRA.
4697
4698         * common.opt (fira, fira-algorithm, fira-coalesce,
4699         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
4700         fira-verbose): New options.
4701
4702         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
4703         move_cost, may_move_in_cost, may_move_out_cost): Make the
4704         variables external.
4705         (move_table): Remove typedef.
4706         (init_move_cost): Make it external.
4707         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
4708         functions.
4709
4710         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
4711         setup_reg_classes): New function prototypes.
4712         (eliminable_regset): New external variable declaration.
4713         (build_insn_chain, update_equiv_regs): New function prototypes.
4714
4715         * Makefile.in (IRA_INT_H): New definition.
4716         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
4717         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
4718         (reload1.o, toplev.o): Add dependence on ira.h.
4719         (cfgloopanal.o): Add PARAMS_H.
4720         (caller-save.o): Add dependence on output.h and ira.h.
4721         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
4722         ira-emit.o, ira-lives.o): New entries.
4723
4724         * passes.c (pass_ira): New pass.
4725
4726         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
4727
4728         * reload1.c (ira.h): Include the header.
4729         (changed_allocation_pseudos): New bitmap.
4730         (init_reload): Initiate the bitmap.
4731         (compute_use_by_pseudos): Permits spilled registers in FROM.
4732         (temp_pseudo_reg_arr): New variable.
4733         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
4734         IRA.  Call alter_reg with the additional parameter.  Don't clear
4735         spilled_pseudos for IRA.  Restore original insn chain for IRA.
4736         Clear changed_allocation_pseudos at the end of reload.
4737         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
4738         (hard_regno_to_pseudo_regno): New variable.
4739         (count_pseudo): Check spilled pseudos.  Set up
4740         hard_regno_to_pseudo_regno.
4741         (count_spilled_pseudo): Check spilled pseudos. Update
4742         hard_regno_to_pseudo_regno.
4743         (find_reg): Use better_spill_reload_regno_p.  Check
4744         hard_regno_to_pseudo_regno.
4745         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
4746         code for IRA.
4747         (eliminate_regs_1): Use additional parameter for alter_reg.
4748         (finish_spills): Set up pseudo_previous_regs only for spilled
4749         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
4750         more arguments.  Don't clear live_throughout and dead_or_set for
4751         spilled pseudos.  Use additional parameter for alter_reg.  Call
4752         mark_allocation_change.  Set up changed_allocation_pseudos.
4753         Remove sanity check.
4754         (emit_input_reload_insns, delete_output_reload): Use additional
4755         parameter for alter_reg.  Call mark_allocation_change.
4756         (substitute, gen_reload_chain_without_interm_reg_p): New
4757         functions.
4758         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
4759
4760         * testsuite/gcc.dg/20080410-1.c: New file.
4761
4762         * config/s390/s390.h (IRA_COVER_CLASSES,
4763         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
4764
4765         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
4766
4767         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
4768
4769         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
4770
4771         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
4772
4773         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
4774
4775         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
4776
4777         2008-08-24  Jeff Law  <law@redhat.com>
4778         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
4779         when ignoring unavailable registers.
4780
4781         2008-08-24  Jeff Law  <law@redhat.com>
4782         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
4783         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
4784         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
4785         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
4786
4787         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
4788         * ira-build.c (allocno_range_compare_func): Stabilize sort.
4789
4790         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
4791         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
4792         * reload1.c (find_reg): Process registers in register allocation order.
4793
4794         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
4795         * toplev.c (backend_init_target): Move ira_init call from
4796         here...
4797         (lang_dependent_init_target): ...to here.
4798
4799         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
4800         * ira.c (setup_class_subset_and_memory_move_costs): Don't
4801         calculate memory move costs for NO_REGS.
4802
4803         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
4804         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
4805         STACK_REGS is defined.
4806
4807         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
4808         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
4809
4810         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
4811         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
4812
4813         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
4814         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
4815         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
4816         barrier.
4817
4818 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
4819             Dorit Nuzman  <dorit@il.ibm.com>
4820
4821         * gcc/config/spu/spu.md (vec_extract_evenv4si,
4822         vec_extract_evenv4sf, vec_extract_evenv8hi,
4823         vec_extract_evenv16qi, vec_extract_oddv4si,
4824         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
4825         vec_interleave_highv4sf, vec_interleave_lowv4sf,
4826         vec_interleave_highv4si, vec_interleave_lowv4si,
4827         vec_interleave_highv8hi, vec_interleave_lowv8hi,
4828         vec_interleave_highv16qi, vec_interleave_lowv16qi,
4829         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
4830
4831 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
4832
4833         PR target/36756
4834         * config/rs6000/rs6000.c (optimization_options): Don't default to
4835         section anchors without toplevel reorder.
4836
4837 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4838
4839         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
4840         (mfc_end_critical_section): Likewise.
4841
4842 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
4843
4844         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
4845         all type qualifiers from element type to vector type.
4846
4847 2008-08-25  David Daney  <ddaney@avtrex.com>
4848
4849         * config/mips/mips.md (immediate_insn): Move up in file, fix
4850         comment typo, reformat.
4851         (fetchop_bit, atomic_hiqi_op memory_barrier,
4852         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
4853         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
4854         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
4855         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
4856         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
4857         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
4858         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
4859         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
4860         sync_old_nand<mode>, sync_new_nand<mode>,
4861         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
4862         test_and_set_12): Moved to sync.md.
4863         (sync.md): Include.
4864         * config/mips/sync.md: New file.
4865
4866 2008-08-25  Richard Henderson  <rth@redhat.com>
4867
4868         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
4869         (regsave): Likewise.
4870         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
4871         (output_cfi_directive): Likewise.
4872         (div_data_align): New.
4873         (output_cfi): Use it.
4874
4875 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
4876
4877         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
4878         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
4879         (TARGET_OCTEON): New macro.
4880         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
4881         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
4882         (ISA_HAS_POP): New macro.
4883         * config/mips/driver-native.c (host_detect_local_cpu): Handle
4884         Octeon.
4885         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
4886         Handle Octeon.
4887         * config/mips/mips.md (cpu): Add octeon.
4888         (type): Add pop attribute value.
4889         (popcount<mode>2): New pattern.
4890         * doc/invoke.texi (-march=@var{arch}): Add octeon.
4891
4892 2008-08-24  Jan Hubicka  <jh@suse.cz>
4893
4894         * doc/invoke.texi (-fipa-cp-clone): New option.
4895         (-fipa-cp): Update docs.
4896         (--param ipcp-unit-growth):New.
4897         * ipa-cp.c: Include fibheap.h, params.h
4898         (ipcp_initialize_node_lattices): When not cloning, all externally
4899         visible functions are bottom.
4900         (ipcp_need_redirect_p): Accept clones.
4901         (ipcp_insert_stage): Use cost driven heuristics.
4902         (max_count, dead_nodes): New static vars.
4903         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
4904         ipcp_const_param_count): New functions.
4905         * common.opt (ipa-cp-clone): New command line option.
4906         * params.def (ipcp-unit-growth): New.
4907
4908 2008-08-24  Jan Hubicka  <jh@suse.cz>
4909
4910         * tree-inline.c (tree_function_versioning): Look harder
4911         for referenced vars.
4912
4913 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
4914
4915         PR tree-optimization/37185
4916         * matrix-reorg.c (transform_access_sites): Update changed stmt.
4917
4918 2008-08-23  Jan Hubicka  <jh@suse.cz>
4919
4920         * ipa-cp.c (ipcp_analyze_node): New function.
4921         (ipcp_update_cloned_node): Use it.
4922         (ipcp_init_stage): Likewise.
4923         * ipa-inline.c (function_insertion_hook_holder): New static var.
4924         (analyze_function): Break out from ....
4925         (inline_generate_summary): Here; register insertion hook.
4926         (cgraph_decide_inlining): Remove hook.
4927         (add_new_function): New function.
4928
4929 2008-08-23  Jan Hubicka  <jh@suse.cz>
4930
4931         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
4932
4933 2008-08-23  Jan Hubicka  <jh@suse.cz>
4934
4935         * ipa-cp.c (constant_val_insert): Remove.
4936         (ipcp_propagate_one_const): Remove.
4937         (ipcp_create_replace_map): Always insert replacements to the map.
4938         (ipcp_insert_stage): Do not try to insert statements by hand.
4939         * tree-inline.c (insert_init_stmt): Break out from ...
4940         (setup_one_parameter): ... here; allow NULL BB pointer.
4941         (tree_function_versioning): Use setup_one_parameter to process
4942         replacement map.
4943
4944 2008-08-23  Jan Hubicka  <jh@suse.cz>
4945
4946         * tree.c (decl_address_ip_invariant_p): New function.
4947         * tree.h (decl_address_ip_invariant_p): Declare.
4948         * gimple.c (strip_invariant_refs): Break out from ...
4949         (is_gimple_invariant_address): ... here
4950         (is_gimple_ip_invariant_address): New function.
4951         (is_gimple_ip_invariant): New function.
4952         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
4953         Declare.
4954
4955         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
4956         (ipcp_lat_is_insertable): All constants are insertable.
4957         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
4958         IPA_CONST_VALUE_REF.
4959         (ipcp_initialize_node_lattices): Propagate all types of operands.
4960         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
4961         (ipcp_create_replace_map): Reformat.
4962         (ipcp_need_redirect_p): Simplify.
4963         (ipcp_insert_stage): Check that argument is used before clonning.
4964         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
4965         IPA_CONST_REF.
4966         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
4967         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
4968         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
4969         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
4970         (jump_func_type): Remove IPA_CONST_VALUE_REF.
4971         * tree-inline.c (tree_function_versioning): Add variables referenced
4972         by replacing trees.
4973
4974 2008-08-23  Jan Hubicka  <jh@suse.cz>
4975
4976         PR target/37094
4977         * i386.c (standard_80387_constant_p): Use optimize_size.
4978
4979 2008-08-23  Ira Rosen  <irar@il.ibm.com>
4980
4981         PR tree-optimization/37161
4982         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
4983         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
4984         (vect_determine_vectorization_factor): Move the scalar type
4985         retrieval to vect_get_smallest_scalar_type.
4986         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
4987         scalar type. Remove redundant computation.
4988         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
4989         (vect_get_slp_defs): Take the type of RHS into account if
4990         necessary by calling vect_get_smallest_scalar_type. Call
4991         vect_get_constant_vectors with additional argument.
4992
4993 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4994
4995         PR 35648
4996         * doc/invoke.texi (Wwrite-strings): Clarify description.
4997
4998 2008-08-23  Ira Rosen  <irar@il.ibm.com>
4999
5000         PR tree-optimization/37174
5001         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
5002         def stmt is a part of the loop before accessing its stmt_vec_info.
5003
5004 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
5005
5006         PR target/11259
5007         * config/avr/avr.md (UNSPEC_SWAP): New constants.
5008         (*swap): New insn pattern.
5009         (*ashlqi3): Rename from ashlqi3 insn pattern.
5010         (ashlqi3): New expanders.
5011         (*lshrqi3): Rename from lshrqi3 insn pattern.
5012         (lshrqi3): New expanders.
5013         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
5014         lshrqi3_const5, lshrqi3_const6): New splitters.
5015         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
5016         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
5017         peephole2 patterns.
5018
5019 2008-08-22  Richard Guenther  <rguenther@suse.de>
5020
5021         PR tree-optimization/37078
5022         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
5023         [+INF, +INF] ranges.
5024
5025 2008-08-22  Richard Guenther  <rguenther@suse.de>
5026
5027         PR tree-optimization/37143
5028         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
5029         a conversion statement instead of a copy.
5030
5031 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
5032
5033         PR target/37184
5034         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
5035         CCCmode, CCOmode and CCSmode destination modes.
5036
5037         PR target/37191
5038         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
5039         from different units in a single alternative.
5040         (*vec_extractv2sf_1): Ditto.
5041         (*vec_extractv2si_0): Ditto.
5042         (*vec_extractv2si_1): Ditto.
5043         * config/i386/sse.md (sse2_storehpd): Ditto.
5044         (sse2_storelpd): Ditto.
5045         (sse2_loadhpd): Ditto.
5046         (sse2_loadlpd): Ditto.
5047
5048         PR target/37197
5049         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
5050         (popcountsi2): Ditto.
5051         (clzdi2_abm): Ditto.
5052         (popcountdi2): Ditto.
5053         (clzhi2_abm): Ditto.
5054         (popcounthi2): Ditto.
5055
5056 2008-08-22  Richard Guenther  <rguenther@suse.de>
5057
5058         PR middle-end/36548
5059         PR middle-end/37125
5060         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
5061         if the multiplication does not overflow.
5062
5063 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
5064
5065         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
5066
5067 2008-08-21  Richard Henderson  <rth@redhat.com>
5068
5069         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
5070         spurrious comma from test.
5071         * configure: Rebuild.
5072
5073 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5074
5075         PR 30457
5076         * builtins.c (fold_builtin_next_arg): Add warning about undefined
5077         behaviour.
5078
5079 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
5080
5081         * c-tree.h (grokfield): New argument.
5082         * c-decl.c (grokfield): Handle new location argument.
5083         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
5084
5085 2008-08-21  Richard Guenther  <rguenther@suse.de>
5086
5087         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
5088
5089 2008-08-21  Jan Hubicka  <jh@suse.cz>
5090
5091         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
5092         (cgraph_add_function_insertion_hook,
5093         cgraph_remove_function_insertion_hook,
5094         cgraph_call_function_insertion_hooks): New functions.
5095         * cgraph.h (cgraph_add_function_insertion_hook,
5096         cgraph_remove_function_insertion_hook,
5097         cgraph_call_function_insertion_hooks): Declare.
5098         * ipa-reference.c (function_insertion_hook_holder): New variable.
5099         (check_operand, look_for_address_of): When checking late, do not care
5100         about module bitmaps.
5101         (add_new_function): New function.
5102         (generate_summary): Register hooks; zero module bitmaps.
5103         (propagate): Unregister hooks.
5104         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
5105         (add_new_function): New function.
5106         (generate_summary): Register hook.
5107         (propagate): Remove hook.
5108
5109         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
5110
5111         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
5112         * ipa-cp.c (ipcp_update_cloned_node): New function.
5113         (build_const_val): Handle functions correctly; bring type logic
5114         into sync with tree-inline.c
5115         (ipcp_init_stage):  Take care of computing stuff needed by
5116         indirect inlining; update clones.
5117         (ipcp_generate_summary): Break out of ipcp_driver.
5118         (ipcp_driver): Do only execution and transformation.
5119         (pass_ipa_cp): Make IPA_PASS.
5120         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
5121         offset to address.
5122         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
5123         ipcp, some info is already available.
5124         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
5125         * tree-inline.c (remap_ssa_name): Unshare expression.
5126
5127 2008-08-21  Richard Guenther  <rguenther@suse.de>
5128
5129         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
5130         a PHI ask VN if it is already available.
5131         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
5132         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
5133
5134 2008-08-21  Richard Guenther  <rguenther@suse.de>
5135
5136         PR middle-end/36817
5137         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
5138         makes sure to produce a result of the correct type.
5139
5140 2008-08-21  Jan Hubicka  <jh@suse.cz>
5141         Backport from LTO branch:
5142
5143         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
5144                     Jan Hubicka  <jh@suse.cz>
5145
5146         * ipa-pure-const.c
5147         (init_state, finish_state, set_function_state, generate_summary):
5148         New functions.
5149         (scan_stmt): Renamed from scan_function.  Changed to keep state in
5150         local static vars rather than cgraph aux field.
5151         (propagate): Renamed from static_execute. Changed to keep state in
5152         local static vars rather than cgraph aux field.
5153         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
5154         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
5155
5156         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
5157
5158         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
5159         * ipa-reference.c (init_function_info, generate_summary,
5160         propagate): New functions.
5161         (analyze_function):  Call init_function_info.
5162         (static_execute): Stripped into generate_summary and propagate.
5163         (pass_ipa_reference): Made into ipa_opt_pass.
5164
5165 2008-08-21  Richard Guenther  <rguenther@suse.de>
5166
5167         PR tree-optimization/37181
5168         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
5169         folding result.
5170         (extract_range_from_unary_expr): Likewise.
5171
5172 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5173
5174         * diagnostic.c (pedwarn_at): Rename as pedwarn.
5175         (pedwarn): Delete.
5176         * toplev.h (pedwarn_at): Likewise.
5177         * builtins.c: Update all calls to pedwarn.
5178         * c-lex.c: Likewise.
5179         * toplev.c: Likewise.
5180         * c-tree.h: Likewise.
5181         * c-decl.c: Likewise.
5182         * c-errors.c: Likewise.
5183         * c-typeck.c: Likewise.
5184         * c-common.c: Likewise.
5185         * c-parser.c: Likewise.
5186
5187 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
5188
5189         PR target/31070
5190         * config/sparc/sparc.c (function_arg_slotno): Handle structure
5191         with MODE_VECTOR_INT mode.
5192
5193 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5194
5195         PR middle-end/179
5196         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
5197         initialized outside the current module.
5198         (warn_uninitialized_var): Ignore left-hand side when walking the
5199         trees. Ignore address expressions. Examine VUSE operands in gimple
5200         statements with a variable declaration on the right-hand side.
5201
5202 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
5203
5204         PR bootstrap/37155
5205         * rtlanal.c (subreg_offset_representable_p): Revert last change.
5206
5207 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5208
5209         PR 35701
5210         * c-common.c (conversion_warning): Do not warn if applying bit-and
5211         operator to unsigned constant that fits in the target type.
5212
5213 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5214
5215         PR c++/35602
5216         * c-common.c (conversion_warning): Do not warn for artificial
5217         expressions.
5218
5219 2008-08-20  Richard Guenther  <rguenther@suse.de>
5220
5221         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
5222         (extract_range_from_binary_expr): Fall back to constant propagation.
5223         (extract_range_from_unary_expr): Likewise.
5224
5225 2008-08-20  Richard Guenther  <rguenther@suse.de>
5226
5227         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
5228         with TREE_THIS_VOLATILE on shared nodes.
5229         (fold_stmt_r): Likewise.
5230
5231 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
5232
5233         PR c/37171
5234         * c-parser.c (c_parser_attributes): For keywords use canonical
5235         spelling for attr_name.
5236
5237 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5238
5239         * value-prof.c (check_counter): Revert wrong call to error.
5240
5241 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5242
5243         * profile.c: Update calls to inform.
5244         * value-prof.c: Update calls to inform.
5245
5246 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5247
5248         * diagnostic.c (inform): Add an explicit location_t parameter.
5249         * toplev.h (inform): Update declaration.
5250         * builtins.c: Update all calls to inform.
5251         * c-common.c: Likewise.
5252         * c-decl.c: Likewise.
5253         * c-opts.c: Likewise.
5254         * c-pch.c: Likewise.
5255         * c-pragma.c: Likewise.
5256         * c-typeck.c: Likewise.
5257         * coverage.c: Likewise.
5258         * opts.c: Likewise.
5259         * toplev.c: Likewise.
5260         * tree-cfg.c: Likewise.
5261         * tree-ssa.c: Likewise.
5262
5263 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
5264
5265         PR target/37169
5266         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
5267         V2DI mode, for SSE4.1, use movq instead of vector set if the
5268         second element is zero and inter-unit moves are OK.
5269
5270 2008-08-20  Richard Guenther  <rguenther@suse.de>
5271
5272         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
5273         properly handle conversion/copy chains after tuplification.
5274
5275 2008-08-20  Richard Guenther  <rguenther@suse.de>
5276
5277         * passes.c (init_optimization_passes): Move the second
5278         forwprop pass before alias computation.  Remove the second
5279         DCE pass.  Remove the first dominator and phi copy/const
5280         prop passes.
5281
5282 2008-08-20  Nick Clifton  <nickc@redhat.com>
5283
5284         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
5285         support of this feature.  Do not assume that a sufficiently new
5286         assembler will support the feature regardless of the target type.
5287         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
5288         * configure: Regenerate.
5289
5290 2008-08-20  Richard Guenther  <rguenther@suse.de>
5291
5292         * tree-vrp.c (found_in_subgraph): Remove.
5293         (live): New global static.
5294         (live_on_edge): New function.
5295         (blocks_visited): Remove.
5296         (register_edge_assert_for_2): Use live_on_edge.
5297         (find_conditional_asserts): Remove code dealing with
5298         found_in_subgraph.  Do not walk the CFG.
5299         (find_switch_asserts): Likewise.
5300         (find_assert_locations_1): Renamed from find_assert_locations.
5301         Move finding assert locations for conditional and switch
5302         statements first.  Update live bitmap.  Do not walk the CFG.
5303         (find_assert_locations): New function.
5304         (insert_range_assertions): Remove entry of CFG walk.
5305         Adjust call to find_assert_locations.
5306         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
5307         that only can appear because of fake exit edges but assert we
5308         never try to insert on those.
5309         (fini_pre): Do not remove fake exit edges here...
5310         (execute_pre): ...but here, before committing edge inserts.
5311
5312 2008-08-19  Richard Guenther  <rguenther@suse.de>
5313
5314         * passes.c (init_optimization_passes): Exchange store-ccp
5315         with a ccp pass.
5316
5317 2008-08-19  Rafael Espíndola  <espindola@google.com>
5318
5319         * varasm.c (weak_decls): Move earlier in the file.
5320         (assemble_external): Add weak decls to the weak_decls list.
5321         (declare_weak): Don't add decls to the weak_decls list.
5322
5323 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
5324
5325         PR target/37157
5326         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
5327         before (sse2_shufpd_<mode>).
5328
5329 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
5330
5331         PR debug/37156
5332         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
5333         * tree.c (block_nonartificial_location): Likewise.
5334
5335 2008-08-19  Richard Guenther  <rguenther@suse.de>
5336
5337         PR tree-optimization/35972
5338         PR tree-optimization/23094
5339         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
5340         parameter.
5341         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
5342         handle MISALIGNED_INDIRECT_REF.
5343         (get_ref_from_reference_ops): New helper.
5344         (vn_reference_lookup_pieces): Walk the use-def chain using the
5345         alias-oracle if requested.
5346         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
5347         walking the use-def chain.
5348         (compute_avail): But not here.
5349         (create_component_ref_by_pieces_1): Properly handle
5350         MISALIGNED_INDIRECT_REF.
5351         (do_regular_insertion): Handle fully redundant
5352         expressions after PHI-translation also for SSA_NAME values, not
5353         only constants.  Correctly use edoubleprime for that.
5354
5355 2008-08-19  Ira Rosen  <irar@il.ibm.com>
5356
5357         * tree-vectorizer.c (supportable_widening_operation): Support
5358         multi-step conversion, return the number of steps in such conversion
5359         and the required intermediate types.
5360         (supportable_narrowing_operation): Likewise.
5361         * tree-vectorizer.h (vect_pow2): New function.
5362         (supportable_widening_operation): Change argument types.
5363         (supportable_narrowing_operation): Likewise.
5364         (vectorizable_type_promotion): Add an argument.
5365         (vectorizable_type_demotion): Likewise.
5366         * tree-vect-analyze.c (vect_analyze_operations): Call
5367         vectorizable_type_promotion and vectorizable_type_demotion with
5368         additional argument.
5369         (vect_get_and_check_slp_defs): Detect patterns.
5370         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
5371         types.
5372         (vect_analyze_slp_instance): Don't fail in case of multiple types.
5373         Call vect_build_slp_tree with correct arguments. Calculate unrolling
5374         factor according to the smallest type in the loop.
5375         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
5376         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
5377         supportable_widening_operation with correct arguments.
5378         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
5379         operands lists according to the number of vector statements in left
5380         or right node, if exists.
5381         (vect_gen_widened_results_half): Remove unused argument.
5382         (vectorizable_conversion): Call supportable_widening_operation,
5383         supportable_narrowing_operation, and vect_gen_widened_results_half
5384         with correct arguments.
5385         (vectorizable_assignment): Change documentation, support multiple
5386         types in SLP.
5387         (vectorizable_operation): Likewise.
5388         (vect_get_loop_based_defs): New function.
5389         (vect_create_vectorized_demotion_stmts): Likewise.
5390         (vectorizable_type_demotion): Support loop-aware SLP and general
5391         multi-step conversion. Call vect_get_loop_based_defs and
5392         vect_create_vectorized_demotion_stmts for transformation.
5393         (vect_create_vectorized_promotion_stmts): New function.
5394         (vectorizable_type_promotion): Support loop-aware SLP and general
5395         multi-step conversion. Call vect_create_vectorized_promotion_stmts
5396         for transformation.
5397         (vectorizable_store): Change documentation, support multiple
5398         types in SLP.
5399         (vectorizable_load): Likewise.
5400         (vect_transform_stmt): Pass SLP_NODE to
5401         vectorizable_type_promotion and vectorizable_type_demotion.
5402         (vect_schedule_slp_instance): Move here the calculation of number
5403         of vectorized statements for each node from...
5404         (vect_schedule_slp): ... here.
5405         (vect_transform_loop): Call vect_schedule_slp without the last
5406         argument.
5407
5408 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
5409
5410         PR bootstrap/37152
5411         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
5412         to == in assert statement.
5413         (vectorizable_reduction): Fix typo.
5414
5415 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5416
5417         PR bootstrap/37153
5418         * value-prof.c (check_counter): Dereference pointer to overall
5419         count when printing it.
5420
5421 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5422
5423         * profile.h: Really add it.
5424
5425 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5426
5427         * mcf.c: Really add it.
5428
5429 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
5430             Vinodha Ramasamy  <vinodha@google.com>
5431
5432         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
5433         count_scale.
5434         * value-prof.c (check_counter): Fix the counter if
5435         flag_profile_correction is true.
5436         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
5437         tree_mod_subtract_transform):
5438         Follow check_counter parameter change.
5439         * common.opt (fprofile-correction): New option.
5440         * mcf.c: New file.
5441         * profile.h: Likewise.
5442         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
5443         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
5444         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
5445         functions.
5446         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
5447         flag_profile_correction is set.
5448
5449 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
5450
5451         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
5452
5453 2008-08-18  Tomas Bily  <tbily@suse.cz>
5454
5455         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
5456         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
5457         CONVERT_EXPR_P.
5458         * tree-data-ref.c (split_constant_offset_1): Likewise.
5459         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
5460         * tree-sra.c (sra_walk_expr): Likewise.
5461         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
5462         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
5463         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
5464         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
5465         Likewise.
5466         * gimple.c (gimple_assign_unary_nop_p): Likewise.
5467         * tree-vect-transform.c (vectorizable_type_demotion)
5468         (vectorizable_type_promotion): Likewise.
5469         * tree-inline.c (expand_call_inline):
5470         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
5471         (forward_propagate_addr_expr_1, forward_propagate_comparison)
5472         (tree_ssa_forward_propagate_single_use_vars): Likewise.
5473         * expr.c (expand_expr_real_1): Likewise.
5474         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
5475         (gimple_assign_unary_useless_conversion_p): Likewise.
5476         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
5477         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
5478         * fold-const.c (fold_unary): Likewise.
5479         * tree.h (CONVERT_EXPR_P): Likewise.
5480         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
5481         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
5482         * tree-vrp.c:
5483         (register_edge_assert_for_2, extract_range_from_unary_expr)
5484         (register_edge_assert_for_1): Likewise.
5485
5486 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5487
5488         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
5489         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
5490         (enum real_value_const): Delete.
5491         (get_real_const): Delete.
5492         * real.c (get_real_const): Delete.
5493         (dconst_e_ptr): Define.
5494         (dconst_third_ptr): Define.
5495         (dconst_sqrt2_ptr): Define.
5496         * builtins.c: Update all callers.
5497
5498 2008-08-18  Richard Guenther  <rguenther@suse.de>
5499
5500         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
5501         statement iterator after statement removal.
5502
5503 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
5504
5505         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
5506         (detect_processor_freebsd): Likewise.
5507         (host_detect_local_cpu): Call newly added functions for FreeBSD.
5508
5509 2008-08-18  Richard Guenther  <rguenther@suse.de>
5510
5511         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
5512         and loads have the correct types.
5513
5514 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5515
5516         PR cpp/7263
5517         * c-opts.c (cpp_opts): Remove static.
5518         * c-parser.c (cpp_opts): Declare it extern.
5519         (disable_extension_diagnostics): Handle cpp options.
5520         (enable_extension_diagnostics): Likewise.
5521
5522 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5523
5524         * diagnostics.c (permerror_at): Rename as permerror.
5525         (permerror): Delete.
5526         * toplev.h: Likewise.
5527
5528 2008-08-18  Richard Guenther  <rguenther@suse.de>
5529
5530         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
5531         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
5532         Move call_cdce before build_alias.  Move copyrename2,
5533         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
5534         right after final inlining.
5535         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
5536         (pass_build_cfg): But instead via TODO_dump_func.
5537
5538 2008-08-18  Richard Guenther  <rguenther@suse.de>
5539
5540         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
5541         element index.
5542         (scalarize_init): If we failed to generate some initializers
5543         do not generate zeros for not instantiated members.  Instead
5544         rely on the copy out.
5545         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
5546         about missing flow-sensitive alias info only if we have
5547         aliases computed.
5548
5549 2008-08-17  Nick Clifton  <nickc@redhat.com>
5550
5551         * doc/extend.texi (Function Attributes): Fix typo in description
5552         if hot function attribute.
5553
5554 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
5555             Richard Sandiford  <rdsandiford@googlemail.com>
5556
5557         * doc/install.texi (--with-mips-plt): Document.
5558         * doc/invoke.texi (-mplt, -mno-plt): Document.
5559         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
5560         and handle ${with_mips_plt}.
5561         * config/mips/mips.opt (mplt): New option.
5562         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
5563         (TARGET_ABICALLS_PIC2): Likewise.
5564         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
5565         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
5566         (ASM_SPEC): Use !mabi=* instead of !mabi*.
5567         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
5568         to decide whether to output ".option picX" directives.
5569         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
5570         Pass -call_nonpic rather than -KPIC for -mplt.
5571         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
5572         on the command line.  Also remove it when -mabi=64 is used without
5573         -msym32.
5574         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
5575         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
5576         TARGET_ABICALLS_PIC0.
5577         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
5578         TARGET_ABICALLS.
5579         (mips16_build_function_stub): Only output ".option pic" directives
5580         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
5581         (mips16_build_call_stub): Fix comment and remove redundant
5582         ".set at"/"set .noat" directives.
5583         (mips_function_rodata_section): Use the default behaviour for
5584         TARGET_ABSOLUTE_ABICALLS.
5585         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
5586         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
5587         (mips_restore_gp): Do nothing if the current function doesn't use
5588         a global pointer.
5589         (mips_expand_prologue): Only save $gp if the current function uses it.
5590         Use a normal move for TARGET_ABICALLS_PIC0.
5591         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
5592
5593 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
5594
5595         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
5596         of function when handling GLOBAL_POINTER_REGNUM.
5597
5598 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
5599
5600         PR ada/20548
5601         * common.opt (-fstack-check): Do not declare the variable here.
5602         (-fstack-check=): New option variant.
5603         * doc/invoke.texi (Code Gen Options): Document it.
5604         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
5605         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
5606         (STACK_CHECK_STATIC_BUILTIN): New macro.
5607         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
5608         * opts.c: Include expr.h.
5609         (common_handle_option) <OPT_fold_stack_check_>: New case.
5610         <OPT_fstack_check>: Likewise.
5611         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
5612         consistently in the test for variable-sized types.  Adjust for
5613         new behaviour of flag_stack_check.
5614         * explow.c: Include except.h.
5615         (allocate_dynamic_stack_space): Do not take into account
5616         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
5617         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
5618         for variable-sized parameters.  Treat all parameters whose size is
5619         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
5620         stack checking is enabled.
5621         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
5622         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
5623         if generic stack checking is enabled.
5624         (expand_function_end): Adjust for new behaviour of flag_stack_check.
5625         * reload1.c (reload): Likewise.
5626         * stmt.c (expand_decl): Assert that all automatic variables have
5627         fixed size at this point and remove dead code.
5628         * flags.h (stack_check_type): New enumeration type.
5629         (flag_stack_check): Declare.
5630         * toplev.c (flag_stack_check): New global variable.
5631         * Makefile.in (opts.o): Add dependency on EXPR_H.
5632         (explow.o): Add dependency on except.h.
5633
5634 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
5635
5636         * config/avr/avr.c (avr_override_options): Reduce value of
5637         PARAM_INLINE_CALL_COST.
5638
5639 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
5640
5641         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
5642         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
5643         lieu of TYPE_MODE (type) throughout.
5644
5645 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
5646
5647         * config/arm/arm.c (add_minipool_backward_ref): Check for
5648         8-byte-aligned entries in second case of forcing insertion after a
5649         particular entry.  Change third case to avoid inserting
5650         non-8-byte-aligned entries before 8-byte-aligned ones.
5651
5652 2008-08-15  Richard Guenther  <rguenther@suse.de>
5653
5654         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
5655         strip components for unknown size accesses.
5656
5657 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
5658
5659         * config/s390/2097.md New file.
5660         * config/s390/s390.md ("z10prop" attribute): Define none,
5661         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
5662         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
5663         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
5664         possible values and apply them to insns as appropriate.
5665         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
5666         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
5667         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
5668         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
5669         ("bfp" mode attribute): Removed.  Every occurence replaced
5670         with <mode>.
5671         * config/s390/s390.c (struct "z10_cost"): Updated entries.
5672         * config/s390/2084.md (insn_reservation "x_itof"): Updated
5673         type attribute.
5674
5675 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5676
5677         PR c/28152
5678         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
5679         for keywords.
5680
5681 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
5682
5683         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
5684         additional argument. Support reduction when duplication is needed due
5685         to data-types of different sizes in the loop.
5686         (get_initial_def_for_induction): Fix printout.
5687         (vect_get_vec_def_for_stmt_copy): Support case where the
5688         vec_stmt_for_operand is a phi node.
5689         (vectorizable_reduction): Support reduction when duplication is needed
5690         due to data-types of different sizes in the loop.
5691         (vectorizable_call): Remove restriction to not vectorize in case we
5692         have data-types of different sizes in the loop.
5693         (vectorizable_conversion): Likewise.
5694         (vectorizable_operation): Likewise.
5695         (vectorizable_type_demotion): Likewise.
5696         (vectorizable_type_promotion): Likewise.
5697         (vectorizable_induction): Add restriction to not vectorize in case
5698         we have data-types of different sizes in the loop.
5699
5700 2008-08-14  Christophe Saout  <christophe@saout.de>
5701             Uros Bizjak  <ubizjak@gmail.com>
5702
5703         PR target/37101
5704         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
5705         (*vec_concatv2di_rex64_sse4_1): Ditto.
5706         (*vec_concatv2di_rex64_sse): Ditto.
5707
5708 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
5709
5710         PR middle-end/37103
5711         * fold-const.c (fold_widened_comparison): Do not allow
5712         sign changes that change the result even if shorter type
5713         is wider than arg1_unw's type.
5714
5715 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
5716
5717         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
5718         Skip if the multilib testing specifies -march that does not
5719         agree with the one specified in the testcase.
5720
5721 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
5722
5723         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
5724         zero extend SImode values being converted to TFmode before passing
5725         to libcalls.
5726
5727 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5728
5729         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
5730         __PPU__ when targeting the Cell/B.E. PPU processor.
5731
5732 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
5733
5734         * gimple.h (gimple_call_set_chain): Accept SSA variables.
5735         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
5736         Rematerialize the static chain, if any.
5737         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
5738         static chain.
5739
5740 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
5741
5742         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
5743         (new_loc_descr): Likewise.
5744         (add_loc_descr): Likewise.
5745         (size_of_loc_descr): Likewise.
5746         (size_of_locs): Likewise.
5747         (output_loc_operands): Likewise.
5748         (output_loc_sequence): Likewise.
5749         (new_reg_loc_descr): New.
5750         (build_cfa_loc): Use it.
5751         (build_cfa_aligned_loc): Likewise.
5752         (one_reg_loc_descriptor): Likewise.
5753         (based_loc_descr): Likewise.
5754
5755 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5756
5757         PR 30551
5758         * doc/invoke.texi (Wmain): Update.
5759         * c-decl.c (start_decl): warn_main is only 0 or 1.
5760         (start_function): Likewise. Fix formatting.
5761         (finish_function): Delete redundant warning.
5762         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
5763         * c-opts (c_common_handle_option): -Wall only has effect if
5764         warn_main is uninitialized. OPT_Wmain is automatically
5765         handled. -pedantic also enables Wmain.
5766         (c_common_post_options): Handle all logic for Wmain here.
5767         * c-common.c (warn_main): Delete.
5768         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
5769         * c-common.h (warn_main): Delete.
5770
5771 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
5772
5773         PR middle-end/36701
5774         * expr.c (emit_group_store): Allocate stack temp with the
5775         largest alignment when copying from register to stack.
5776
5777 2008-08-13  Richard Guenther  <rguenther@suse.de>
5778
5779         * tree.h (maybe_fold_offset_to_address): Declare.
5780         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
5781         (ccp_fold): Handle pointer conversions the same as fold_stmt.
5782         Likewise for POINTER_PLUS_EXPR.
5783         (maybe_fold_offset_to_reference): Enable disabled code.
5784         (maybe_fold_offset_to_address): New function.
5785         (fold_stmt_r): Use it.
5786         (fold_gimple_assign): Likewise.
5787         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
5788         (gimplify_expr): Likewise.
5789
5790 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5791
5792         * toplev.h (pedwarn_at): Fix declaration.
5793
5794 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
5795
5796         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
5797         LINK_SPEC): Use %R in -Y P argument.
5798
5799 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5800
5801         PR c/15236
5802         * diagnostic.c (pedwarn_at): New.
5803         * toplev.h (pedwarn_at): Declare.
5804         * c-tree.h (build_enumerator): Update declaration.
5805         * c-decl.c (finish_enum): Update comment.
5806         (build_enumerator): Take a location parameter. Give a pedwarn but do
5807         not perform any conversion.
5808         * c-parser.c (c_parser_enum_specifier): Set correct location for
5809         enumerator.
5810
5811 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5812
5813         PR 35635
5814         * c-common.c (conversion_warning): Use a switch. Ignore boolean
5815         expressions except for conversions to signed:1 bitfields. Handle
5816         COND_EXPR with constant operands.
5817
5818 2008-08-13  Richard Guenther  <rguenther@suse.de>
5819
5820         PR tree-optimization/15255
5821         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
5822         (struct oecount_s): New struct and VEC types.
5823         (cvec): New global.
5824         (oecount_hash): New function.
5825         (oecount_eq): Likewise.
5826         (oecount_cmp): Likewise.
5827         (zero_one_operation): New function.
5828         (build_and_add_sum): Likewise.
5829         (undistribute_ops_list): Perform un-distribution of multiplication
5830         and division on the chain of summands.
5831         (should_break_up_subtract): Also break up subtracts for factors.
5832         (reassociate_bb): Delete dead visited statements.
5833         Call undistribute_ops_list.  Re-sort and optimize if it did something.
5834         * passes.c (init_optimization_passes): Move DSE before
5835         reassociation.
5836         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
5837         PHI nodes.
5838
5839 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
5840
5841         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
5842
5843         * doc/invoke.texi: Revert unintended checkin.
5844
5845 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
5846
5847         PR libgomp/26165
5848         * gcc.c (include_spec_function): Tweak call to find_a_file.
5849
5850 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
5851
5852         PR middle-end/37014
5853         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
5854         and TRUTH_ORIF_EXPR.
5855         * dojump.c (do_jump): Likewise.
5856
5857         PR tree-optimization/37084
5858         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
5859         if id->regimplify, don't assume stmt is a cast assignment.
5860
5861 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
5862
5863         * final.c (final_scan_insn): Use app_enable/app_disable functions.
5864
5865 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5866
5867         PR bootstrap/37097
5868         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
5869         by last change.
5870
5871 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5872
5873         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
5874         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
5875
5876         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
5877         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
5878         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
5879         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
5880         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
5881
5882         * doc/tm.texi (Storage Layout): Remove documentation for
5883         TARGET_FLOAT_FORMAT.
5884
5885         * simplify-rtx.c (simplify_binary_operation_1): Replace
5886         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
5887
5888 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5889
5890         * real.h (struct real_format): New member has_sign_dependent_rounding.
5891         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
5892         spu_single_format, ieee_double_format, mips_double_format,
5893         motorola_double_format, ieee_extended_motorola_format,
5894         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
5895         ieee_extended_intel_96_round_53_format, ibm_extended_format,
5896         mips_extended_format, ieee_quad_format, mips_quad_format,
5897         vax_f_format, vax_d_format, vax_g_format): Initialize it.
5898         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
5899
5900         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
5901         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
5902         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
5903         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
5904         (ROUND_TOWARDS_ZERO): Likewise.
5905
5906         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
5907         (FLOAT_MODE_FORMAT): New macro.
5908         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
5909         (MODE_COMPOSITE_P): ... this new macro.
5910         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
5911         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
5912         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
5913
5914         * flags.h: Include "real.h".
5915
5916         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
5917         REAL_MODE_FORMAT_COMPOSITE_P.
5918         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
5919
5920         * doc/tm.texi (Storage Layout): Remove documentation of
5921         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
5922         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
5923         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
5924         they only apply to libgcc2.a.
5925
5926 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5927
5928         * config/spu/float_disf.c: New file.
5929         * config/spu/float_unsdisf.c: New file.
5930         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
5931         (LIB2FUNCS_EXCLUDE): Define.
5932
5933 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5934             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5935
5936         * real.h (struct real_format): New member round_towards_zero.
5937         * real.c (round_for_format): Respect fmt->round_towards_zero.
5938         (ieee_single_format, mips_single_format, motorola_single_format,
5939         spu_single_format, ieee_double_format, mips_double_format,
5940         motorola_double_format, ieee_extended_motorola_format,
5941         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
5942         ieee_extended_intel_96_round_53_format, ibm_extended_format,
5943         mips_extended_format, ieee_quad_format, mips_quad_format,
5944         vax_f_format, vax_d_format, vax_g_format): Initialize it.
5945         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
5946
5947         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
5948         real_format to choose rounding mode when calling MPFR functions.
5949         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
5950         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
5951
5952         * real.h (real_to_decimal_for_mode): Add prototype.
5953         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
5954         Respect target rounding mode when generating decimal representation.
5955         (real_to_decimal): New stub for backwards compatibility.
5956         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
5957         real_to_decimal_for_mode instead of real_to_decimal.
5958
5959         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
5960
5961 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5962             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5963
5964         * real.c (spu_single_format): New variable.
5965         * real.h (spu_single_format): Declare.
5966
5967         * config/spu/spu.c (spu_override_options): Install SFmode format.
5968         (spu_split_immediate): Use integer mode to operate on pieces of
5969         floating-point values in all cases.
5970
5971         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
5972         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
5973         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
5974
5975 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5976
5977         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
5978
5979 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5980
5981         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
5982
5983 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
5984
5985         PR c++/36688
5986         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
5987         on the VAR_DECL instead of TYPE_READONLY on its type.
5988
5989 2008-08-12  Ira Rosen  <irar@il.ibm.com>
5990
5991         * tree-vectorizer.c: Depend on langhooks.h.
5992         (supportable_widening_operation): Add two arguments. Support double
5993         type conversions.
5994         (supportable_narrowing_operation): Likewise.
5995         * tree-vectorizer.h (supportable_widening_operation): Add two
5996         arguments.
5997         (supportable_narrowing_operation): Likewise.
5998         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
5999         supportable_widening_operation with correct arguments.
6000         * tree-vect-transform.c (vectorizable_conversion): Likewise.
6001         (vectorizable_type_demotion): Support double type conversions.
6002         (vectorizable_type_promotion): Likewise.
6003         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
6004
6005 2008-08-11  Michael Matz  <matz@suse.de>
6006
6007         * i386/i386.c (override_options): Move initialisation from
6008         flag_schedule_insns_after_reload to here from ...
6009         (optimization_options): ... here.
6010
6011 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
6012
6013         PR rtl-optimization/36998
6014         * dwarf2out.c (compute_barrier_args_size_1,
6015         compute_barrier_args_size): Temporarily remove assertions.
6016
6017 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6018
6019         PR middle-end/20644
6020         * tree-ssa.c (struct walk_data): Add new flag
6021         warn_possibly_uninitialized.
6022         (warn_uninitialized_var): Use it.
6023         (warn_uninitialized_vars): New.
6024         (execute_early_warn_uninitialized): Call it.
6025         (execute_late_warn_uninitialized): Likewise.
6026
6027 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6028
6029         PR middle-end/36238
6030         * reload1.c (gen_reload): Guard calls to get_secondary_mem
6031         for memory subregs.
6032
6033 2008-08-09  Jan Hubicka  <jh@suse.cz>
6034
6035         PR target/37055
6036         * optabs.c (maybe_emit_unop_insn): Remove produced code if
6037         expansion failed.
6038         (expand_fix): Be prepared for expansion to fail.
6039         (expand_sfix_optab): Remove instructions if expansion failed.
6040
6041 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
6042
6043         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
6044         avr31 architecture.
6045         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
6046         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6047
6048 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6049
6050         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
6051         mips/t-libgcc-mips16 to tmake_file.
6052         * config/mips/mips-protos.h (mips_call_type): New enum.
6053         (mips_pic_base_register, mips_got_load): Declare.
6054         (mips_restore_gp): Take an rtx argument.
6055         (mips_use_pic_fn_addr_reg_p): Declare.
6056         (mips_expand_call): Replace the sibcall_p argument with
6057         a mips_call_type argument.  Add a lazy_p parameter.
6058         (mips_split_call): Declare.
6059         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
6060         (MIPS16_PIC_TEMP): Likewise.
6061         (reg_class): Delete M16_NA_REGS.
6062         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
6063         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
6064         (mips_split_hi_p): Declare.
6065         * config/mips/mips.c (mips_split_hi_p): New array.
6066         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
6067         (mips_got_symbol_type_p): New function.
6068         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
6069         (mips16_stub_function_p): New function.
6070         (mips16_local_function_p): Likewise.
6071         (mips_use_pic_fn_addr_reg_p): Likewise.
6072         (mips_cannot_force_const_mem): Return false for HIGHs.
6073         Extend CONST_INT and symbolic handling to MIPS16, using
6074         mips_symbol_insns to check that the base symbol type is a
6075         legitimate constant.  Reject GOT-based constants if
6076         TARGET_MIPS16_PCREL_LOADS.
6077         (mips_const_insns): Check targetm.cannot_force_const_mem when
6078         decomposing a symbolic base and a large offset.
6079         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
6080         When calling a function that needs $25 from MIPS16 code,
6081         move the target address into $25 separately and add a USE
6082         to the call insn.
6083         (mips16_gp_pseudo_reg): Insert the initializer immediately
6084         before the first real insn.
6085         (mips_pic_base_register, mips_got_load): New functions.
6086         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
6087         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
6088         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
6089         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
6090         (mips_call_tls_get_addr): Update the call to mips_expand_call,
6091         also passing NULL_RTX rather than const0_rtx as the aux argument.
6092         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
6093         instead of TARGET_EXPLICIT_RELOCS.
6094         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
6095         (mips_load_call_address): Replace the sibcall_p argument with
6096         a mips_call_type argument.  Use mips_got_load.
6097         (mips16_local_alias): New structure.
6098         (mips16_local_aliases): New variable.
6099         (mips16_local_aliases_hash): New function.
6100         (mips16_local_aliases_eq): Likewise.
6101         (mips16_local_alias): Likewise.
6102         (mips16_stub_function): Likewise.
6103         (mips16_build_function_stub): Create a local alias for the target
6104         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
6105         .cpload directive and an R_MIPS_NONE relocation for the target
6106         function, then load the alias rather than the function itself.
6107         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
6108         (mips16_copy_fpr_return_value): Use mips16_stub_function and
6109         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
6110         (mips16_build_call_stub): Replace the FN parameter with an
6111         FN_PTR parameter.  Force the address into a register if it
6112         isn't a call_insn_operand; don't rely on the caller to do this.
6113         If a call to a locally-defined and locally-binding MIPS16
6114         function must be made indirectly, redirect the call to the
6115         function's local alias.  Use mips16_stub_function_p,
6116         mips16_stub_function, mips_expand_call and use_reg.
6117         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
6118         Use explicit %hi and %lo accesses where possible.
6119         Use MIPS_CALL to generate the correct code form of a
6120         jal instruction.  Add clobbers of $18 instead of uses.
6121         Update the call to mips_emit_call_insn.
6122         (mips_expand_call): Replace the SIBCALL_P argument with a
6123         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
6124         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
6125         allowing it to modify the call address.  Update the calls to
6126         mips_load_call_address and mips_emit_call_insn.
6127         (mips_split_call): New function.
6128         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
6129         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
6130         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
6131         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
6132         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
6133         if TARGET_MIPS16.
6134         (mips_cprestore_slot): New function.
6135         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
6136         and use mips_cprestore_slot.
6137         (mips_output_function_prologue): Handle TARGET_MIPS16 for
6138         LOADGP_OLDABI.
6139         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
6140         then use a copygp_mips16 instruction to set up $28.
6141         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
6142         (mips16_lay_out_constants): Call split_all_insns_noflow.
6143         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
6144         false if TARGET_MIPS16.
6145         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
6146         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
6147         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
6148         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
6149         MIPS16 code.  Allow MIPS16 o32 PIC.
6150         (mips_override_options): Allow MIPS16 o32 PIC.
6151         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
6152         after reload if TARGET_USE_GOT.
6153         (UNSPEC_COPYGP): New constant.
6154         (length): Use a default length of 8 for MIPS16 GOT loads.
6155         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
6156         (*got_page<mode>): Check mips_split_hi_p.
6157         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
6158         (unspec_got<mode>, unspec_call<mode>): New expanders.
6159         (load_got<mode>, load_call<mode>): Remove the length attributes.
6160         Use a got attribute instead of a type attribute.
6161         (copygp_mips16): New insn.
6162         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
6163         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
6164         (sibcall, sibcall_value, call, call_value): Update the calls
6165         to mips_expand_call.
6166         (call_internal, call_value_internal): Use mips_split_call.
6167         (call_value_multiple_internal): Likewise.
6168         (call_split): Move after call_internal (the insn it is split from).
6169         (call_internal_direct, call_value_internal_direct): Turn into
6170         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
6171         (call_direct_split, call_value_direct_split): New patterns.
6172         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
6173         and use M16_REGS instead of M16_NA_REGS.
6174         * config/mips/predicates.md (const_call_insn_operand): Replace
6175         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
6176         mips_use_pic_fn_addr_reg_p check.
6177         (move_operand): Reject HIGHs if mips_split_hi_p.
6178         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
6179         (__mips16_floatunsisf): Inline __mips16_floatsisf.
6180         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
6181         * config/mips/libgcc-mips16.ver: New file.
6182         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
6183         $(srcdir)/config/mips/libgcc-mips16.ver.
6184
6185 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6186
6187         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
6188         in file.
6189         (mips_unspec_address, mips_unspec_offset_high): Likewise.
6190         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
6191         (mips16_cfun_returns_in_fpr_p): Likewise.
6192
6193 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6194
6195         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
6196         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
6197         rather than 4 to PC.
6198
6199 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6200
6201         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
6202         (FUNCTION_PROFILER): Save the static chain pointer into $2
6203         beforehand and restore it aftewards.
6204         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
6205         address directly into $25 and call the function through $25;
6206         do not clobber $3.  Pad the DImode version to cover the space
6207         left by the deleted $25 <- $3 move.
6208         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
6209         the removal of the $25 <- $3 move.
6210         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
6211         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
6212
6213 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6214             Daniel Jacobowitz  <dan@codesourcery.com>
6215
6216         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
6217         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
6218         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
6219         * config/mips/mips.c (mips_start_function_definition): New function.
6220         (mips_end_function_definition): Likewise.
6221         (mips_output_function_prologue): Use mips_start_function_definition.
6222         (mips_output_function_epilogue): Use mips_end_function_definition.
6223         (build_mips16_function_stub): Use mips_start_function_definition
6224         and mips_end_function_definition.
6225         (build_mips16_call_stub): Likewise.
6226
6227 2008-08-09  Richard Guenther  <rguenther@suse.de>
6228
6229         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
6230         * gimple.h (gimple_call_fn): Adjust comment.
6231         (gimple_call_set_fndecl): New function.
6232         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
6233         longer having bare FUNCTION_DECL operand.
6234         (gimple_call_return_type): Likewise.
6235         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
6236
6237         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
6238         (gimple_mod_pow2): Likewise.
6239         (gimple_mod_subtract): Likewise.
6240         (gimple_ic): Likewise.
6241         (gimple_stringop_fixed_value): Likewise.
6242         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
6243         longer having bare FUNCTION_DECL operand.
6244         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
6245         * omp-low.c (optimize_omp_library_calls): Likewise.
6246         * cgraphunit.c (update_call_expr): Likewise.
6247         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
6248         (execute_convert_to_rsqrt): Likewise.
6249         * cfgexpand.c (gimple_to_tree): Simplify.
6250         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
6251         bare FUNCTION_DECL operand.
6252         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
6253         (convert_gimple_call): Use gimple_call_fndecl.
6254         * c-common.c (c_warn_unused_result): Likewise.
6255
6256 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6257
6258         PR c/17880
6259         * c-typeck.c (digest_init): Call verify_sequence_points from here.
6260         (c_finish_return): Likewise.
6261         (c_start_case): Likewise.
6262         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
6263         * c-parser.c (c_parser_condition): New. Call
6264         verify_sequence_points.
6265         (c_parser_paren_condition): Call c_parser_condition.
6266         (c_parser_for_statement): Call c_parser_condition.
6267
6268 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6269
6270         PR 36901
6271         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
6272         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
6273         Moved from diagnostic.h
6274         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
6275         DK_PERMERROR.
6276         (emit_diagnostic): New.
6277         (warning0, pedwarn0): Delete.
6278         (warning, warning_at, pedwarn, permerror): Return bool.
6279         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
6280         Moved to diagnostic.c.
6281         (struct diagnostic_context): Use correct type for
6282         classify_diagnostic.
6283         (diagnostic_report_diagnostic): Update declaration.
6284         (emit_diagnostic): Declare.
6285         * errors.c (warning): Return bool.
6286         * errors.h (warning): Update declaration.
6287         * toplev.h (warning0, pedwarn0): Delete.
6288         (warning, warning_at, pedwarn, permerror): Return bool.
6289         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
6290         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
6291         inform. Update all calls.
6292         (diagnose_mismatched_decls): Check return value of warning/pedwarn
6293         before giving informative note.
6294         (implicit_decl_warning): Likewise.
6295         * c-typeck.c (build_function_call): Likewise.
6296         * tree-sssa.c (warn_uninit): Likewise.
6297         * builtins.c (gimplify_va_arg_expr): Likewise.
6298
6299 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6300
6301         PR 7651
6302         * doc/invoke.texi (-Wextra): Move warning from here...
6303         (-Wuninitialized): ... to here.
6304
6305 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6306
6307         PR 28875
6308         * flags.h (set_Wunused): Delete
6309         * toplev.c (process_options): Handle Wunused flags here.
6310         * opts.c (maybe_warn_unused_parameter): Delete.
6311         (common_handle_option): Replace set_Wunused by warn_unused.
6312         (set_Wextra): Do not handle Wunused-parameter here.
6313         (set_Wunused): Delete.
6314         * c-opts.c (c_common_handle_option): Replace set_Wunused by
6315         warn_unused.
6316         * common.opt (Wunused): Add Var and Init.
6317         (Wunused-function): Likewise.
6318         (Wunused-label): Likewise.
6319         (Wunused-parameter): Likewise.
6320         (Wunused-value): Likewise.
6321         (Wunused-variable): Likewise.
6322
6323 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
6324
6325         * doc/invoke.texi: Add cpu_type power7.
6326         * config.in (HAVE_AS_VSX): New.
6327         * config.gcc: Add cpu_type power7.
6328         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
6329         VSX instructions.
6330         * configure: Regenerate.
6331         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
6332         power5.
6333         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
6334         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
6335         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
6336
6337 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
6338
6339         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
6340         type to vectorize.builtin_conversion.
6341         (vectorizable_conversion): Likewise.
6342         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
6343         integral type as input.
6344         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
6345         FIX_TRUNC_EXPR.
6346         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
6347         and ALTIVEC_BUILTIN_VCTSXS.
6348         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
6349         formatting.
6350
6351 2008-08-08  Richard Guenther  <rguenther@suse.de>
6352
6353         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
6354         (surely_varying_stmt_p): Calls are varying only if they are
6355         non-builtin and not indirect or have no result.
6356         (ccp_fold): Re-instantiate code before the tuples merge.
6357
6358 2008-08-08  Richard Guenther  <rguenther@suse.de>
6359
6360         PR tree-optimization/37056
6361         * gimple.h (gimple_assign_rhs_class): New helper function.
6362         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
6363         unary operations properly.
6364
6365 2008-08-07  Jan Hubicka  <jh@suse.cz>
6366
6367         * i386.h (ix86_size_cost): Declare.
6368         (ix86_cur_cost): New function macro.
6369         * i386.md (peepholes expanding size and splitters): Predicate by
6370         optimize_insn_for_speed_p.
6371         (peepholes reduce size and splitters): Predicate by
6372         optimize_insn_for_size_p.
6373         * i386.c (ix86_size_cost): Rename from ...
6374         (size_cost): This one.
6375         (override_options): Update.
6376         (decide_alg): Likewise.
6377         (ix86_expand_clear): Use RTL profile.
6378         (ix86_pad_returns): Use RTL profile.
6379
6380 2008-08-07  Jan Hubicka  <jh@suse.cz>
6381
6382         * recog.c (split_all_insns): Set RTL profile
6383         (peephole2_optimize): Likewise.
6384         * function.c (thread_prologue_and_epilogue_insns): Likewise.
6385         * combine.c (combine_instructions): Likewise.
6386
6387 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6388
6389         * c-common.c (c_common_reswords): Also warn about keyword "bool".
6390
6391 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
6392
6393         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
6394         value in a6 after the set_frame_ptr insn.
6395
6396 2008-08-07  Richard Henderson  <rth@redhat.com>
6397
6398         PR debug/37033
6399         * gcc.c (cpp_options): Pass along -g*.
6400
6401 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
6402
6403         * config/arm/arm.c (output_move_neon): Update comment describing
6404         big-endian vector layout.
6405         (arm_assemble_integer): Do not handle big-endian NEON vectors
6406         specially.
6407         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
6408         neon_vget_lane<mode>_sext_internal,
6409         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
6410         element indices for big-endian.
6411
6412 2008-08-07  Richard Henderson  <rth@redhat.com>
6413
6414         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
6415         * configure, config.in: Rebuild.
6416         * debug.h (dwarf2out_do_cfi_asm): Declare.
6417         * c-cppbuiltin.c (c_cpp_builtins): Use it.
6418         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
6419         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
6420         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
6421
6422 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
6423
6424         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
6425         movv2si_internal): Combine into mov<mode>_internal.
6426         (movv2si_internal_2): Remove.
6427
6428 2008-08-07  Jan Hubicka  <jh@suse.cz>
6429
6430         PR target/37048
6431         * i386.md (single stringop patterns): Enable unconditionally.
6432
6433 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
6434
6435         PR target/36992
6436         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
6437
6438         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
6439         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
6440
6441         * config/i386/sse.md (sse2_movq128): New.
6442
6443         * doc/extend.texi: Document __builtin_ia32_movq128.
6444
6445 2008-08-07  Richard Guenther  <rguenther@suse.de>
6446
6447         PR middle-end/37042
6448         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
6449         pointers can access anything.
6450
6451 2008-08-06  Jan Hubicka  <jh@suse.cz>
6452
6453         * optabs.c (emit_unop_insn): Break out to ...
6454         (maybe_emit_unop_insn): ... this one.
6455         (expand_sfix_optab): Use maybe variant.
6456         * optabs.h (maybe_emit_unop_insn): Declare.
6457
6458         * i386.md (mov0 patterns): Enable by default.
6459         (FP conversion expanders): Disable expansion of code expanding
6460         sequences when instruction should be optimized for size.
6461         (single strinop patterns): Enable when optimizing for size.
6462         (string expanders): Disable expanding of code expanding sequences
6463         when optimizning instruction for size.
6464         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
6465         per BB basis.
6466         (ix86_fp_comparison_sahf_cost): Likewise.
6467         (ix86_expand_branch): Likewise.
6468         (ix86_expand_ashl_const): Likewise.
6469         (ix86_split_ashl): Likewise.
6470         (ix86_expand_strlen): Likewise.
6471         (ix86_emit_fp_unordered_jump): Likewie.
6472
6473 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6474
6475         * c-common.c: Fix typo.
6476         (c_common_reswords): Activate more C++ keyword warnings.
6477
6478         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
6479
6480 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6481
6482         PR 26785
6483         * diagnostic.c (permerror_at): New.
6484         * toplev.h (permerror_at): Declare.
6485
6486 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
6487             Ira Rosen  <irar@il.ibm.com>
6488
6489         * tree-vect-transform.c (vect_model_simple_cost): Return
6490         immediately if stmt is pure SLP.
6491         (vect_model_store_cost): Ditto.
6492         (vect_model_load_cost): Ditto.
6493         (vectorizable_store): Remove PURE_SLP check before call
6494         to vect_model_store_cost.
6495         (vect_model_store_cost): When checking whether stmt describe
6496         strided access, add a check that it is not slp_node.
6497
6498 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6499
6500         PR 8715
6501         * c-common.c (warn_for_sign_compare): New. Handle separately the
6502         case that 'constant' is zero.
6503         * c-typeck.c (build_binary_op): Move code to c-common.c
6504
6505 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6506
6507         * config/alpha/alpha.c (alpha_preferred_reload_class,
6508         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
6509         alpha_output_mi_thunk_osf): Avoid C++ keywords.
6510         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
6511         * config/arm/arm.md: Likewise.
6512         * config/avr/avr-protos.h (preferred_reload_class,
6513         test_hard_reg_class, avr_simplify_comparison_p,
6514         out_shift_with_cnt, class_max_nregs): Likewise.
6515         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
6516         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
6517         preferred_reload_class, test_hard_reg_class): Likewise.
6518         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
6519         bfin_memory_move_cost, bfin_secondary_reload,
6520         bfin_output_mi_thunk): Likewise.
6521         * config/crx/crx.c (crx_secondary_reload_class,
6522         crx_memory_move_cost): Likewise.
6523         * config/frv/frv-protos.h (frv_secondary_reload_class,
6524         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
6525         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
6526         frv_secondary_reload_class, frv_class_likely_spilled_p,
6527         frv_class_max_nregs): Likewise.
6528         * config/h8300/h8300.c (h8300_classify_operand,
6529         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
6530         Likewise.
6531         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
6532         * config/ia64/ia64.c (ia64_preferred_reload_class,
6533         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
6534         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
6535         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
6536         Likewise.
6537         * config/m68hc11/m68hc11.c (preferred_reload_class,
6538         m68hc11_memory_move_cost): Likewise.
6539         * config/mcore/mcore.c (mcore_secondary_reload_class,
6540         mcore_reload_class): Likewise.
6541         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
6542         mips_class_max_nregs, mips_cannot_change_mode_class,
6543         mips_preferred_reload_class, mips_secondary_reload_class,
6544         mips_output_mi_thunk): Likewise.
6545         * config/mmix/mmix.c (mmix_preferred_reload_class,
6546         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
6547         Likewise.
6548         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
6549         Likewise.
6550         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
6551         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
6552         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
6553         * config/rs6000/rs6000.c (paired_expand_vector_init,
6554         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
6555         compare_section_name, rs6000_memory_move_cost): Likewise.
6556         * config/s390/s390.c (s390_emit_compare_and_swap,
6557         s390_preferred_reload_class, s390_secondary_reload,
6558         legitimize_pic_address, legitimize_tls_address,
6559         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
6560         s390_class_max_nregs): Likewise.
6561         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
6562         * config/s390/s390.md: Likewise.
6563         * config/score/score-protos.h (score_secondary_reload_class,
6564         score_preferred_reload_class): Likewise.
6565         * config/score/score.c (score_preferred_reload_class,
6566         score_secondary_reload_class): Likewise.
6567         * config/score/score3.c (score3_output_mi_thunk,
6568         score3_preferred_reload_class, score3_secondary_reload_class,
6569         score3_hard_regno_mode_ok): Likewise.
6570         * config/score/score3.h (score3_preferred_reload_class,
6571         score3_secondary_reload_class): Likewise.
6572         * config/score/score7.c (score7_output_mi_thunk,
6573         score7_preferred_reload_class, score7_secondary_reload_class,
6574         score7_hard_regno_mode_ok): Likewise.
6575         * config/score/score7.h (score7_preferred_reload_class,
6576         score7_secondary_reload_class): Likewise.
6577         * config/sh/sh.c (prepare_move_operands, output_far_jump,
6578         output_branchy_insn, add_constant, gen_block_redirect,
6579         sh_insn_length_adjustment, sh_cannot_change_mode_class,
6580         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
6581         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6582         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
6583         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
6584         xstormy16_preferred_reload_class): Likewise.
6585         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
6586         xtensa_expand_atomic, override_options,
6587         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
6588         Likewise.
6589         * reorg.c (try_merge_delay_insns): Likewise.
6590         * tree.c (merge_dllimport_decl_attributes): Likewise.
6591
6592         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
6593
6594 2008-08-06  Michael Matz  <matz@suse.de>
6595
6596         * Makefile.in (write_entries_to_file): Quote words.
6597         * gengtype.c: (read_input_line): Skip over leading white-space.
6598
6599 2008-08-06  Marc Gauthier  <marc@tensilica.com>
6600
6601         * config.gcc: Match more processor names for Xtensa.
6602         * configure.ac: Likewise.
6603         * doc/install.texi (Specific): Likewise.
6604         * configure: Regenerate.
6605
6606 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6607
6608         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
6609         * calls.c (avoid_likely_spilled_reg): Likewise.
6610         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
6611         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
6612         * config/i386/i386.c (ix86_expand_special_args_builtin,
6613         ix86_secondary_reload): Likewise.
6614         * except.c (struct eh_region, gen_eh_region_catch,
6615         remove_unreachable_regions, duplicate_eh_regions,
6616         assign_filter_values, build_post_landing_pads,
6617         sjlj_find_directly_reachable_regions, remove_eh_handler,
6618         reachable_next_level, foreach_reachable_handler,
6619         can_throw_internal_1, can_throw_external_1,
6620         collect_one_action_chain): Likewise.
6621         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
6622         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
6623         * function.c (update_temp_slot_address, instantiate_new_reg,
6624         instantiate_virtual_regs_in_rtx,
6625         instantiate_virtual_regs_in_insn): Likewise.
6626         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
6627         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
6628         gimplify_cleanup_point_expr): Likewise.
6629         * ipa-cp.c (ipcp_lattice_changed): Likewise.
6630         * passes.c (next_pass_1): Likewise.
6631         * print-tree.c (print_node_brief, print_node): Likewise.
6632         * profile.c (branch_prob): Likewise.
6633         * tree-dump.c (dump_register): Likewise.
6634         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
6635         Likewise.
6636         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
6637         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
6638         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
6639         copy_arguments_for_versioning, copy_static_chain): Likewise.
6640         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
6641         add_new_name_mapping, register_new_name_mapping): Likewise.
6642         * tree-mudflap.c (mf_xform_derefs): Likewise.
6643         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
6644         get_init_expr, combine_chains): Likewise.
6645         * tree-pretty-print.c (dump_generic_node): Likewise.
6646         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
6647         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
6648         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
6649         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
6650
6651 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
6652
6653         PR middle-end/37010
6654         * calls.c (expand_call): Use the biggest preferred stack
6655         boundary.
6656
6657 2008-08-06  Michael Matz  <matz@suse.de>
6658
6659         PR target/36613
6660         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
6661         for reused reload, instead of overwriting them.
6662
6663 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
6664
6665         PR middle-end/37009
6666         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
6667         for incoming stack boundary.
6668
6669         * function.c (assign_parm_find_entry_rtl): Update
6670         parm_stack_boundary.
6671
6672         * function.h (rtl_data): Add parm_stack_boundary.
6673
6674         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
6675         parm_stack_boundary for incoming stack boundary.
6676
6677 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
6678
6679         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
6680         for unrepresentable subregs or treat them as equal to other regs
6681         or subregs with the same register number.
6682
6683 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
6684
6685         PR middle-end/35432
6686         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
6687         if want_value.
6688
6689 2008-08-06  Jan Hubicka  <jh@suse.cz>
6690
6691         * predict.c (maybe_hot_frequency_p): When profile is absent, all
6692         frequencies might be hot.
6693
6694 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6695
6696         * reload.c (find_reloads): Force constants into literal pool
6697         also if they are wrapped in a SUBREG.
6698
6699 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6700
6701         PR target/35659
6702         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
6703         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
6704         Don't allow predicated instructions for data speculation.
6705         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
6706         declaration.
6707
6708 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6709
6710         * haifa-sched.c (extend_global): Split to extend_global_data and
6711         extend_region_data.  Update all uses.
6712         (extend_all): Rename to extend_block_data.
6713
6714 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6715
6716         * sched-rgn.c (new_ready): Check if instruction can be
6717         speculatively scheduled before attempting speculation.
6718         (debug_rgn_dependencies): Remove wrongful assert.
6719
6720 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
6721
6722         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
6723
6724 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
6725
6726         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
6727         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
6728         va_size, and type_size.
6729
6730 2008-08-04  Jason Merrill  <jason@redhat.com>
6731
6732         PR c++/37016
6733         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
6734         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
6735
6736 2008-08-05  Richard Henderson  <rth@redhat.com>
6737
6738         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
6739         * configure: Rebuild.
6740
6741 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6742
6743         PR tree-opt/37024
6744         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
6745         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
6746         is a conversion.
6747
6748 2008-08-05  Richard Henderson  <rth@redhat.com>
6749
6750         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
6751         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
6752         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
6753         * common.opt (fdwarf2-cfi-asm): New.
6754         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
6755         * config.in, configure: Rebuild.
6756         * dwarf2asm.c (dw2_asm_output_data_raw): New.
6757         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
6758         New.
6759         (dw2_force_const_mem): Externalize.
6760         * dwarf2asm.h: Update.
6761         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
6762         generate a real label.
6763         (output_cfi_directive): New.
6764         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
6765         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
6766         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
6767         and .cfi_lsda.
6768         (dwarf2out_end_epilogue): Emit .cfi_endproc.
6769         (output_loc_operands_raw, output_loc_sequence_raw): New.
6770         (output_cfa_loc_raw): New.
6771
6772 2008-08-05  Paul Brook  <paul@codesourcery.com>
6773
6774         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
6775         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
6776         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
6777         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
6778         * config/arm/arm.h (TARGET_VFPD32): Define.
6779         (TARGET_VFP3): Use TARGET_VFPD32.
6780         (fputype): Add FPUTYPE_VFP3D16.
6781         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
6782         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
6783         * config/arm/arm-cores.def: Add cortex-r4f.
6784         * config/arm/arm-tune.md: Regenerate.
6785
6786 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6787
6788         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
6789         Reword some comments throughout the file.
6790
6791         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
6792         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
6793         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
6794         MFC_MIN_DMA_LIST_ELEMENTS.
6795         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
6796         MFC_MAX_DMA_LIST_ELEMENTS.
6797
6798         (MFC_START_ENABLE): Remove PPU-only define.
6799         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
6800         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
6801
6802         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
6803         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
6804         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
6805         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
6806         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
6807         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
6808         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
6809
6810         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
6811         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
6812         (mfc_sdcrt, mfc_sdcrtst): Likewise.
6813         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
6814
6815         (spu_read_machine_status): Fix typo.
6816
6817 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6818
6819         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
6820         SUBREG of multi-word hard register.
6821         * config/spu/spu.c (valid_subreg): Likewise.
6822         (adjust_operand): Handle SUBREGs of multi-word hard registers.
6823
6824 2008-08-04  Richard Guenther  <rguenther@suse.de>
6825
6826         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
6827         the candidate with the stripped base if that base is different
6828         from the original base even for offset zero.
6829
6830 2008-08-04  Richard Guenther  <rguenther@suse.de>
6831
6832         PR middle-end/36691
6833         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
6834         check for no_overflow.
6835
6836 2008-08-04  Richard Guenther  <rguenther@suse.de>
6837
6838         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
6839
6840 2008-08-04  Paul Brook  <paul@codesourcery.com>
6841
6842         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
6843         (arm_order_regs_for_local_alloc): New function.
6844         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
6845         prototype.
6846         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
6847
6848 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
6849
6850         PR target/37012
6851         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
6852         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
6853         (ix86_expand_epilogue): Likewise.
6854
6855 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
6856
6857         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
6858         in comments.
6859
6860 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
6861
6862         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
6863         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
6864         (*movv2sf_internal_rex64): Ditto.
6865
6866 2008-08-03  Jan Hubicka  <jh@suse.cz>
6867
6868         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
6869         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
6870         * expmed.c (expand_smod_pow2): Likewise.
6871
6872 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
6873
6874         PR target/36992
6875         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
6876         alternative 0 of operand 1.
6877         (*vec_concatv2di_rex64_sse): Ditto.
6878         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
6879         of operand 1.
6880         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
6881         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
6882         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
6883         (*movv2sf_internal_rex64): Ditto.
6884
6885 2008-08-02  Richard Guenther  <rguenther@suse.de>
6886
6887         PR target/35252
6888         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
6889         (ssedoublesizemode): New mode attribute.
6890         (sse_shufps): Call gen_sse_shufps_v4sf.
6891         (sse_shufps_1): Macroize.
6892         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
6893         (sse2_shufpd_1): Macroize.
6894         (vec_extract_odd, vec_extract_even): New expanders.
6895         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
6896         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
6897         * i386.c (ix86_expand_vector_init_one_nonzero): Call
6898         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
6899         (ix86_expand_vector_set): Likewise.
6900         (ix86_expand_reduc_v4sf): Likewise.
6901
6902 2008-08-01  Doug Kwan  <dougkwan@google.com>
6903
6904         * matrix-reorg.c: Re-enable all code.
6905         (struct malloc_call_data): Change CALL_STMT to gimple type.
6906         (collect_data_for_malloc_call): Tuplify.
6907         (struct access_site_info): Change STMT to gimple type.
6908         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
6909         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
6910         (struct free_info): Change STMT to gimple type.
6911         (struct matrix_access_phi_node):  Change PHI to gimple type.
6912         (get_inner_of_cast_expr): Remove.
6913         (may_flatten_matrices_1): Tuplify.
6914         (may_flatten_matrices): Ditto.
6915         (mark_min_matrix_escape_level): Ditto.
6916         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
6917         (ssa_accessed_in_call_rhs): New
6918         (ssa_accessed_in_assign_rhs): New
6919         (record_access_alloc_site_info): Tuplify.
6920         (add_allocation_site): Ditto.
6921         (analyze_matrix_allocation_site): Ditto.
6922         (analyze_transpose): Ditto.
6923         (get_index_from_offset): Ditto.
6924         (update_type_size): Ditto.
6925         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
6926         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
6927         (analyze_accesses_for_phi_node): Tuplify.
6928         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
6929         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
6930         (analyze_matrix_accesses): Tuplify.
6931         (check_var_data): New call-back type for check_var_notmodified_p.
6932         (check_var_notmodified_p): Tuplify and use call-back struct to
6933         return statement found.
6934         (can_calculate_expr_before_stmt): Factor out statement related code
6935         into ...
6936         (can_calculate_stmt_before_stmt): New.
6937         (check_allocation_function): Tuplify.
6938         (find_sites_in_func): Ditto.
6939         (record_all_accesses_in_func): Ditto.
6940         (transform_access_sites): Ditto.
6941         (transform_allocation_sites): Ditto.
6942         (matrix_reorg): Re-enable.
6943         (gate_matrix_reorg): Re-enable.
6944
6945 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
6946
6947         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
6948         for labels for which it hasn't been set yet.  If it has been set,
6949         stop walking insns and continue with next worklist item.
6950         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
6951         if the only BARRIER is at the very end of a function.
6952
6953 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
6954
6955         * cfgexpand.c (expand_stack_alignment): Assert that
6956         stack_realign_drap and drap_rtx must match.
6957
6958         * function.c (instantiate_new_reg): If DRAP is used to realign
6959         stack, replace virtual_incoming_args_rtx with internal arg
6960         pointer.
6961
6962 2008-08-01  Richard Guenther  <rguenther@suse.de>
6963
6964         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
6965         loop information only if we initialized it.
6966         (execute_pre): Call fini_pre with in_fre.
6967         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
6968         if we do not unroll because we hit max-completely-peeled-insns.
6969         Use our estimation for consistency, do allow shrinking.
6970
6971 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
6972
6973         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
6974         with MIN_STACK_BOUNDARY.
6975         (ix86_update_stack_boundary): Likewise.
6976         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
6977         STACK_BOUNDARY.
6978
6979         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
6980         (MIN_STACK_BOUNDARY): This.
6981
6982 2008-08-01  Richard Guenther  <rguenther@suse.de>
6983
6984         PR middle-end/36997
6985         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
6986
6987 2008-08-01  Richard Guenther  <rguenther@suse.de>
6988
6989         PR tree-optimization/36988
6990         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
6991         do not matter if that doesn't change volatile qualification.
6992
6993 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
6994
6995         * configure.ac: Do not generate libada-mk.  Do not subst
6996         host_cc_for_libada.
6997         * libada-mk.in: Remove.
6998         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
6999         * configure: Regenerate.
7000
7001 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
7002
7003         * tree-pass.h: Added comment about not dumping passes with name
7004         starting with star in struct opt_pass.
7005         * passes.c (register_dump_files_1): Don't do dump for a pass with
7006         name starting with star.
7007         * doc/passes.texi (Pass manager): Mention pass names and special
7008         meaning of star prefix to avoid dump.
7009
7010 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
7011
7012         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
7013         to MIPS64r2.
7014         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
7015         (ISA_MIPS64R2): New macro.
7016         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
7017         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
7018         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
7019         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
7020         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
7021         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
7022         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
7023         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
7024         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
7025         Move up to keep list alphabetically sorted.
7026         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
7027         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
7028         processor.
7029         * doc/invoke.texi (MIPS Options): Add -mips64r2.
7030         (-march=@var{arch}): Add mips64r2.
7031
7032 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7033
7034         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
7035
7036 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
7037
7038         * expr.c (expand_assignment): Check for complete type.
7039
7040 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7041
7042         PR debug/36977
7043         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
7044
7045         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
7046         for stack alignment.
7047
7048         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
7049
7050 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
7051
7052         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
7053         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
7054
7055 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
7056
7057         PR rtl-optimization/36419
7058         * dwarf2out.c (barrier_args_size): New variable.
7059         (compute_barrier_args_size, compute_barrier_args_size_1): New
7060         functions.
7061         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
7062         if not called yet in the current function, use barrier_args_size
7063         array to find the new args_size value.
7064         (dwarf2out_frame_debug): Free and clear barrier_args_size.
7065
7066 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7067
7068         PR debug/36980
7069         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
7070         rule 19.
7071
7072 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7073
7074         PR debug/36976
7075         * dwarf2out.c (dwarf2out_args_size_adjust): New.
7076         (dwarf2out_stack_adjust): Use it.
7077         (dwarf2out_frame_debug_expr): Likewise.
7078
7079 2008-07-31  Richard Guenther  <rguenther@suse.de>
7080
7081         PR tree-optimization/36978
7082         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
7083         the generated condition.
7084
7085 2008-07-31  Richard Guenther  <rguenther@suse.de>
7086
7087         * passes.c (init_optimization_passes): Always call
7088         pass_early_warn_uninitialized.
7089         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
7090         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
7091         * doc/passes.texi (Warn for uninitialized variables): Adjust.
7092
7093 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
7094
7095         PR c/36970
7096         * builtins.c (maybe_emit_free_warning): New function.
7097         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
7098         maybe_emit_free_warning for BUILT_IN_FREE.
7099
7100         PR debug/36278
7101         * dwarf2out.c (get_context_die): New function.
7102         (force_decl_die, force_type_die): Use it.
7103         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
7104         returns NULL, force generation of DW_TAG_typedef and put that into
7105         DW_AT_import.
7106
7107         PR preprocessor/36649
7108         * c-pch.c (c_common_read_pch): Save and restore
7109         line_table->trace_includes across PCH restore.
7110
7111 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
7112
7113         PR ada/36554
7114         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
7115
7116 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
7117
7118         PR 36974
7119         * final.c (call_from_call_insn): Handle COND_EXEC.
7120
7121 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
7122
7123         * builtins.c (std_gimplify_va_arg_expr): Replace
7124         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
7125         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7126
7127 2008-07-30  Joey Ye  <joey.ye@intel.com>
7128             H.J. Lu  <hongjiu.lu@intel.com>
7129
7130         * builtins.c (expand_builtin_setjmp_receiver): Replace
7131         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
7132         (expand_builtin_apply_args_1): Likewise.
7133         (expand_builtin_longjmp): Need DRAP for stack alignment.
7134         (expand_builtin_apply): Likewise.
7135
7136         * caller-save.c (setup_save_areas): Call assign_stack_local_1
7137         instead of assign_stack_local to allow alignment reduction.
7138
7139         * calls.c (emit_call_1): Need DRAP for stack alignment if
7140         return pops.
7141         (expand_call): Replace virtual_incoming_args_rtx with
7142         crtl->args.internal_arg_pointer.
7143         * stmt.c (expand_nl_goto_receiver): Likewise.
7144
7145         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
7146         alignment and store to stack_alignment_estimated and
7147         max_used_stack_slot_alignment.
7148         (expand_one_var): Likewise.
7149         (expand_stack_alignment): New function.
7150         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
7151         and stack_alignment_estimated fields in rtl_data.  Call
7152         expand_stack_alignment at end.
7153
7154         * defaults.h (INCOMING_STACK_BOUNDARY): New.
7155         (MAX_STACK_ALIGNMENT): Likewise.
7156         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
7157         (SUPPORTS_STACK_ALIGNMENT): Likewise.
7158
7159         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
7160         stack alignment when generating virtual registers.
7161
7162         * function.c (assign_stack_local): Renamed to ...
7163         (assign_stack_local_1): This.  Add a parameter to indicate
7164         if it is OK to reduce alignment.
7165         (assign_stack_local): Use it.
7166         (instantiate_new_reg): Instantiate virtual incoming args rtx
7167         to vDRAP if stack realignment and DRAP is needed.
7168         (assign_parms): Collect parameter/return type alignment and
7169         contribute to stack_alignment_estimated.
7170         (locate_and_pad_parm): Likewise.
7171         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
7172         with crtl->args.internal_arg_pointer.
7173
7174         * function.h (rtl_data): Add new field drap_reg,
7175         max_used_stack_slot_alignment, stack_alignment_estimated,
7176         stack_realign_needed, need_drap, stack_realign_processed and
7177         stack_realign_finalized.
7178         (stack_realign_fp): New macro.
7179         (stack_realign_drap): Likewise.
7180
7181         * global.c (compute_regsets): Frame pointer is needed when
7182         stack is realigned.  Can eliminate frame pointer when stack is
7183         realigned and dynamic realigned argument pointer isn't used.
7184
7185         * reload1.c (update_eliminables):  Frame pointer is needed
7186         when stack is realigned.
7187         (init_elim_table): Can eliminate frame pointer when stack is
7188         realigned and dynamic realigned argument pointer isn't used.
7189
7190         * rtl.h (assign_stack_local_1): Declare new funtion.
7191
7192         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
7193         (TARGET_GET_DRAP_RTX): Likewise.
7194         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
7195         TARGET_GET_DRAP_RTX.
7196
7197         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
7198
7199         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
7200         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
7201
7202 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
7203             H.J. Lu  <hongjiu.lu@intel.com>
7204
7205         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
7206         vdrap_reg, stack_realign and drap_reg_saved.
7207         (add_cfi): Don't allow redefining CFA when DRAP is used.
7208         (reg_save): Handle stack alignment.
7209         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
7210         alignment.  Don't generate DWARF information for (set fp sp)
7211         when DRAP is used.
7212         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
7213         to INVALID_REGNUM.
7214         (int_loc_descriptor): Move prototype forward.  Also define if
7215         DWARF2_UNWIND_INFO is true.
7216         (output_cfa_loc): Handle DW_CFA_expression.
7217         (build_cfa_aligned_loc): New.
7218         (based_loc_descr): Update assert for stack realign.  For local
7219         variables, use sp+offset when stack is aligned without drap and
7220         fp+offset when stack is aligned with drap.  For arguments, use
7221         cfa+offset when drap is used to align stack.
7222
7223 2008-07-30  Joey Ye  <joey.ye@intel.com>
7224             H.J. Lu  <hongjiu.lu@intel.com>
7225
7226         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
7227         Break long line.
7228         (ix86_gen_andsp): New.
7229         (ix86_user_incoming_stack_boundary): Likewise.
7230         (ix86_default_incoming_stack_boundary): Likewise.
7231         (ix86_incoming_stack_boundary): Likewise.
7232         (ix86_can_eliminate): Likewise.
7233         (find_drap_reg): Likewise.
7234         (ix86_update_stack_boundary): Likewise.
7235         (ix86_get_drap_rtx): Likewise.
7236         (ix86_finalize_stack_realign_flags): Likewise.
7237         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
7238         (TARGET_GET_DRAP_RTX): Likewise.
7239         (override_options): Overide option value for new options.
7240         (ix86_function_ok_for_sibcall): Remove check for
7241         force_align_arg_pointer.
7242         (ix86_handle_cconv_attribute): Likewise.
7243         (ix86_function_regparm): Likewise.
7244         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
7245         (ix86_va_start): Replace virtual_incoming_args_rtx with
7246         crtl->args.internal_arg_pointer.
7247         (ix86_select_alt_pic_regnum): Check DRAP register.
7248         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
7249         (ix86_compute_frame_layout): Compute frame layout wrt stack
7250         realignment.
7251         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
7252         (ix86_expand_prologue): Decide if stack realignment is needed
7253         and generate prologue code accordingly.
7254         (ix86_expand_epilogue): Generate epilogue code wrt stack
7255         realignment is really needed or not.
7256
7257         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
7258         (ABI_STACK_BOUNDARY): Likewise.
7259         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
7260         (STACK_REALIGN_DEFAULT): Likewise.
7261         (INCOMING_STACK_BOUNDARY): Likewise.
7262         (MAX_STACK_ALIGNMENT): Likewise.
7263         (ix86_incoming_stack_boundary): Likewise.
7264         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
7265         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
7266         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
7267         (machine_function): Remove force_align_arg_pointer.
7268
7269         * config/i386/i386.md (BX_REG): New.
7270         (R13_REG): Likewise.
7271
7272         * config/i386/i386.opt (mforce_drap): New.
7273         (mincoming-stack-boundary): Likewise.
7274         (mstackrealign): Add Init(-1).
7275
7276         * config/i386/i386-protos.h (ix86_can_eliminate): New
7277
7278 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
7279
7280         * doc/extend.texi: Update force_align_arg_pointer.
7281
7282         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
7283         -mstackrealign.
7284
7285         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
7286         (INCOMING_STACK_BOUNDARY): Likewise.
7287         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
7288         (TARGET_GET_DRAP_RTX): Likewise.
7289
7290 2008-07-30  Andreas Schwab  <schwab@suse.de>
7291
7292         PR rtl-optimization/36929
7293         * dse.c (replace_inc_dec): Use emit_insn_before instead of
7294         add_insn_before and fix argument order.
7295         (replace_inc_dec_mem): Handle NULL rtx.
7296
7297 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
7298
7299         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
7300         function.
7301         (arm_compute_initial_elimination_offset): Use it.
7302         (arm_compute_save_reg_mask): Include static chain save slot when
7303         calculating alignment.
7304         (arm_get_frame_offsets): Ditto.
7305         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
7306         that we can use to decrement the stack when the stack decrement
7307         could be too big for an immediate value in a single insn.
7308         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
7309
7310 2008-07-30  Richard Guenther  <rguenther@suse.de>
7311
7312         PR tree-optimization/36967
7313         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
7314         Release defs of statements we remove.
7315
7316 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
7317
7318         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
7319         instead of NULL_RTVEC.
7320
7321 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
7322
7323         PR target/35866
7324
7325         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
7326         vector modes.
7327
7328 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
7329
7330         * final.c (call_from_call_insn): New.
7331         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
7332
7333 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
7334
7335         * configure.ac: Substitute ADA_CFLAGS.
7336         * configure: Regenerate.
7337         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
7338         * Makefile.in: Remove mention of X_* variables.
7339         * config/pa/x-ada-hpux10: Remove.
7340         * config/pa/x-ada: Remove.
7341
7342         * doc/fragments.texi: Update.
7343
7344 2008-07-30  Olivier Hainque  <hainque@adacore.com>
7345
7346         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
7347         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
7348         __dso_handle explicitly here.
7349
7350 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7351
7352         PR 34389
7353         * c-typeck.c (build_binary_op): Encapsulate code into...
7354         * c-common.c (shorten_binary_op): ...this new function.
7355         (conversion_warning): Use the new function. Handle non-negative
7356         constant in bitwise-and.
7357         * c-common.h (shorten_binary_op): Declare.
7358
7359 2008-07-30  Olivier Hainque  <hainque@adacore.com>
7360
7361         * scan.c (make_sstring_space): Add explicit conversions of
7362         allocator's return value.
7363         * fix-header.c (recognized_function): Likewise.
7364
7365 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7366
7367         * doc/cpp.texi: Update to GFDL 1.2.
7368         * doc/gcc.texi: Do not list GPL as Invariant Section.
7369         * doc/gccint.texi: Likewise.  Update copyright years.
7370         * doc/install.texi: Update copyright years.
7371
7372 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
7373
7374         PR target/36955
7375         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
7376         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
7377
7378 2008-07-29  Jan Hubicka  <jh@suse.cz>
7379
7380         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
7381         (grokdeclarator): Likewise.
7382         * langhooks.c (lhd_warn_unused_global_decl): Use
7383         DECL_DECLARED_INLINE_P.
7384         * print-tree.c (print_node): Remove DECL_INLINE check.
7385
7386 2008-07-29  Richard Guenther  <rguenther@suse.de>
7387
7388         PR tree-optimization/36945
7389         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
7390         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
7391         Record invariant addresses un-decomposed.
7392         (copy_reference_ops_from_call): Record reference call
7393         arguments properly.  Simplify.
7394         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
7395         helper split out from ...
7396         (create_component_ref_by_pieces): ... here.  Simplify.
7397         Prepare for recursive invocation for call arguments.
7398         (create_expression_by_pieces): Adjust call to
7399         create_component_ref_by_pieces.
7400         (compute_avail): Process operand 2 of reference ops.
7401
7402 2008-07-29  Richard Guenther  <rguenther@suse.de>
7403
7404         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
7405
7406 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
7407
7408         * c-format.c (check_format_types): Revert unwanted checkin.
7409
7410 2008-07-29  Jan Hubicka  <jh@suse.cz>
7411
7412         * flags.h (flag_really_no_inline): Remove.
7413         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
7414         * toplev.c (flag_really_no_inline): Remove.
7415         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
7416         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
7417         (cgraph_decide_inlining_incrementally): Likewise.
7418         (compute_inline_parameters): Likewise.
7419         * opts.c (decode_options): Simplify.
7420         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
7421         * common.opt (finline): Initialize to 1.
7422         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
7423
7424 2008-07-29  Jan Hubicka  <jh@suse.cz>
7425
7426         * predict.c (always_optimize_for_size_p): New function.
7427         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
7428         optimize_edge_for_size_p, optimize_edge_for_speed_p,
7429         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
7430         functions.
7431         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
7432         * function.c (prepare_function_start): Set default profile.
7433         * function.h (rtl_data): Add maybe_hot_insn_p.
7434         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
7435         (construct_exit_block): Likewise.
7436         (tree_expand_cfg): Likewise.
7437         * basic-block.h
7438         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
7439         optimize_edge_for_size_p, optimize_edge_for_speed_p,
7440         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
7441         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
7442         Declare.
7443
7444 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7445
7446         PR 34985
7447         * c-decl.c (merge_decls): Merge USED flags.
7448
7449 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
7450
7451         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
7452         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
7453         next_stack, lab_false and lab_over trees.
7454
7455 2008-07-28  Richard Guenther  <rguenther@suse.de>
7456
7457         PR tree-optimization/36957
7458         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
7459         (useless_type_conversion_p): Remove.
7460         (types_compatible_p): Remove.
7461         * gimple.h (tree_ssa_useless_type_conversion): Declare.
7462         (useless_type_conversion_p): Declare.
7463         (types_compatible_p): Declare.
7464         (gimple_expr_type): Return the base type only if it is
7465         trivially convertible to the subtype.
7466
7467 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
7468
7469         * configure.ac: Use the m4_do macro to concatenate the warnings into
7470         one string in ACX_PROG_CC_WARNING_OPTS,
7471         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
7472         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
7473         * configure: Regenerate.
7474
7475 2008-07-28  Richard Guenther  <rguenther@suse.de>
7476
7477         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
7478         (insert_fake_stores): Remove.
7479         (realify_fake_stores): Likewise.
7480         (execute_pre): Remove dead code.
7481         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
7482         (find_func_aliases): Deal with it here instead.
7483         Re-enable gcc_unreachable call.
7484
7485 2008-07-28  Richard Guenther  <rguenther@suse.de>
7486
7487         Merge from gimple-tuples-branch.
7488
7489         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
7490         * gimple.def: New file.
7491         * gsstruct.def: Likewise.
7492         * gimple-iterator.c: Likewise.
7493         * gimple-pretty-print.c: Likewise.
7494         * tree-gimple.c: Removed.  Merged into ...
7495         * gimple.c: ... here.  New file.
7496         * tree-gimple.h: Removed.  Merged into ...
7497         * gimple.h: ... here.  New file.
7498
7499         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
7500         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
7501         --enable-checking=gimple flag.
7502         * config.in: Likewise.
7503         * configure: Regenerated.
7504
7505         * tree-ssa-operands.h: Tuplified.
7506         * tree-vrp.c: Likewise.
7507         * tree-loop-linear.c: Likewise.
7508         * tree-into-ssa.c: Likewise.
7509         * tree-ssa-loop-im.c: Likewise.
7510         * tree-dump.c: Likewise.
7511         * tree-complex.c: Likewise.
7512         * cgraphbuild.c: Likewise.
7513         * tree-ssa-threadupdate.c: Likewise.
7514         * tree-ssa-loop-niter.c: Likewise.
7515         * tree-pretty-print.c: Likewise.
7516         * tracer.c: Likewise.
7517         * gengtype.c: Likewise.
7518         * tree-loop-distribution.c: Likewise.
7519         * tree-ssa-loop-unswitch.c: Likewise.
7520         * cgraph.c: Likewise.
7521         * cgraph.h: Likewise.
7522         * tree-ssa-loop-manip.c: Likewise.
7523         * value-prof.c: Likewise.
7524         * tree-ssa-loop-ch.c: Likewise.
7525         * tree-tailcall.c: Likewise.
7526         * value-prof.h: Likewise.
7527         * tree.c: Likewise.
7528         * tree.h: Likewise.
7529         * tree-pass.h: Likewise.
7530         * ipa-cp.c: Likewise.
7531         * tree-scalar-evolution.c: Likewise.
7532         * tree-scalar-evolution.h: Likewise.
7533         * target.h: Likewise.
7534         * lambda-mat.c: Likewise.
7535         * tree-phinodes.c: Likewise.
7536         * diagnostic.h: Likewise.
7537         * builtins.c: Likewise.
7538         * tree-ssa-alias-warnings.c: Likewise.
7539         * cfghooks.c: Likewise.
7540         * fold-const.c: Likewise.
7541         * cfghooks.h: Likewise.
7542         * omp-low.c: Likewise.
7543         * tree-ssa-dse.c: Likewise.
7544         * ipa-reference.c: Likewise.
7545         * tree-ssa-uncprop.c: Likewise.
7546         * toplev.c: Likewise.
7547         * tree-gimple.c: Likewise.
7548         * tree-gimple.h: Likewise.
7549         * tree-chrec.c: Likewise.
7550         * tree-chrec.h: Likewise.
7551         * tree-ssa-sccvn.c: Likewise.
7552         * tree-ssa-sccvn.h: Likewise.
7553         * cgraphunit.c: Likewise.
7554         * tree-ssa-copyrename.c: Likewise.
7555         * tree-ssa-ccp.c: Likewise.
7556         * tree-ssa-loop-ivopts.c: Likewise.
7557         * tree-nomudflap.c: Likewise.
7558         * tree-call-cdce.c: Likewise.
7559         * ipa-pure-const.c: Likewise.
7560         * c-format.c: Likewise.
7561         * tree-stdarg.c: Likewise.
7562         * tree-ssa-math-opts.c: Likewise.
7563         * tree-ssa-dom.c: Likewise.
7564         * tree-nrv.c: Likewise.
7565         * tree-ssa-propagate.c: Likewise.
7566         * ipa-utils.c: Likewise.
7567         * tree-ssa-propagate.h: Likewise.
7568         * tree-ssa-alias.c: Likewise.
7569         * gimple-low.c: Likewise.
7570         * tree-ssa-sink.c: Likewise.
7571         * ipa-inline.c: Likewise.
7572         * c-semantics.c: Likewise.
7573         * dwarf2out.c: Likewise.
7574         * expr.c: Likewise.
7575         * tree-ssa-loop-ivcanon.c: Likewise.
7576         * predict.c: Likewise.
7577         * tree-ssa-loop.c: Likewise.
7578         * tree-parloops.c: Likewise.
7579         * tree-ssa-address.c: Likewise.
7580         * tree-ssa-ifcombine.c: Likewise.
7581         * matrix-reorg.c: Likewise.
7582         * c-decl.c: Likewise.
7583         * tree-eh.c: Likewise.
7584         * c-pretty-print.c: Likewise.
7585         * lambda-trans.c: Likewise.
7586         * function.c: Likewise.
7587         * langhooks.c: Likewise.
7588         * ebitmap.h: Likewise.
7589         * tree-vectorizer.c: Likewise.
7590         * function.h: Likewise.
7591         * langhooks.h: Likewise.
7592         * tree-vectorizer.h: Likewise.
7593         * ipa-type-escape.c: Likewise.
7594         * ipa-type-escape.h: Likewise.
7595         * domwalk.c: Likewise.
7596         * tree-if-conv.c: Likewise.
7597         * profile.c: Likewise.
7598         * domwalk.h: Likewise.
7599         * tree-data-ref.c: Likewise.
7600         * tree-data-ref.h: Likewise.
7601         * tree-flow-inline.h: Likewise.
7602         * tree-affine.c: Likewise.
7603         * tree-vect-analyze.c: Likewise.
7604         * c-typeck.c: Likewise.
7605         * gimplify.c: Likewise.
7606         * coretypes.h: Likewise.
7607         * tree-ssa-phiopt.c: Likewise.
7608         * calls.c: Likewise.
7609         * tree-ssa-coalesce.c: Likewise.
7610         * tree.def: Likewise.
7611         * tree-dfa.c: Likewise.
7612         * except.c: Likewise.
7613         * except.h: Likewise.
7614         * cfgexpand.c: Likewise.
7615         * tree-cfgcleanup.c: Likewise.
7616         * tree-ssa-pre.c: Likewise.
7617         * tree-ssa-live.c: Likewise.
7618         * tree-sra.c: Likewise.
7619         * tree-ssa-live.h: Likewise.
7620         * tree-predcom.c: Likewise.
7621         * lambda.h: Likewise.
7622         * tree-mudflap.c: Likewise.
7623         * ipa-prop.c: Likewise.
7624         * print-tree.c: Likewise.
7625         * tree-ssa-copy.c: Likewise.
7626         * ipa-prop.h: Likewise.
7627         * tree-ssa-forwprop.c: Likewise.
7628         * ggc-page.c: Likewise.
7629         * c-omp.c: Likewise.
7630         * tree-ssa-dce.c: Likewise.
7631         * tree-vect-patterns.c: Likewise.
7632         * tree-ssa-ter.c: Likewise.
7633         * tree-nested.c: Likewise.
7634         * tree-ssa.c: Likewise.
7635         * lambda-code.c: Likewise.
7636         * tree-ssa-loop-prefetch.c: Likewise.
7637         * tree-inline.c: Likewise.
7638         * tree-inline.h: Likewise.
7639         * tree-iterator.c: Likewise.
7640         * tree-optimize.c: Likewise.
7641         * tree-ssa-phiprop.c: Likewise.
7642         * tree-vect-transform.c: Likewise.
7643         * tree-object-size.c: Likewise.
7644         * tree-outof-ssa.c: Likewise.
7645         * cfgloop.c: Likewise.
7646         * system.h: Likewise.
7647         * tree-profile.c: Likewise.
7648         * cfgloop.h: Likewise.
7649         * c-gimplify.c: Likewise.
7650         * c-common.c: Likewise.
7651         * tree-vect-generic.c: Likewise.
7652         * tree-flow.h: Likewise.
7653         * c-common.h: Likewise.
7654         * basic-block.h: Likewise.
7655         * tree-ssa-structalias.c: Likewise.
7656         * tree-switch-conversion.c: Likewise.
7657         * tree-ssa-structalias.h: Likewise.
7658         * tree-cfg.c: Likewise.
7659         * passes.c: Likewise.
7660         * ipa-struct-reorg.c: Likewise.
7661         * ipa-struct-reorg.h: Likewise.
7662         * tree-ssa-reassoc.c: Likewise.
7663         * cfgrtl.c: Likewise.
7664         * varpool.c: Likewise.
7665         * stmt.c: Likewise.
7666         * tree-ssanames.c: Likewise.
7667         * tree-ssa-threadedge.c: Likewise.
7668         * langhooks-def.h: Likewise.
7669         * tree-ssa-operands.c: Likewise.
7670         * config/alpha/alpha.c: Likewise.
7671         * config/frv/frv.c: Likewise.
7672         * config/s390/s390.c: Likewise.
7673         * config/m32c/m32c.c: Likewise.
7674         * config/m32c/m32c-protos.h: Likewise.
7675         * config/spu/spu.c: Likewise.
7676         * config/sparc/sparc.c: Likewise.
7677         * config/i386/i386.c: Likewise.
7678         * config/sh/sh.c: Likewise.
7679         * config/xtensa/xtensa.c: Likewise.
7680         * config/stormy16/stormy16.c: Likewise.
7681         * config/ia64/ia64.c: Likewise.
7682         * config/rs6000/rs6000.c: Likewise.
7683         * config/pa/pa.c: Likewise.
7684         * config/mips/mips.c: Likewise.
7685
7686 2008-07-28  Simon Baldwin  <simonb@google.com>
7687
7688         * c-pragma.c (handle_pragma_message): New function.
7689         (init_pragma): Register handle_pragma_message.
7690         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
7691         documentation.
7692
7693 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
7694
7695         PR tree-optimization/35252
7696         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
7697         REALPART_EXPR to be considered as same load operation.
7698
7699 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
7700
7701         PR tree-optimization/36830
7702         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
7703         (expressions_equal_p): Return false if only one operand is null.
7704
7705 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
7706
7707         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
7708         version requirements.
7709
7710 2008-07-26  Olivier Hainque  <hainque@adacore.com>
7711
7712         * collect2.c (symkind): New enum.  Symbol kinds we care about.
7713         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
7714         code and head comment accordingly.
7715         (scan_prog_file): Use symkind names instead of bare integers.
7716
7717 2008-07-25  Jan Hubicka  <jh@suse.cz>
7718
7719         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
7720         DECL_INLINE.
7721         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
7722         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
7723         * dojump.c (clear_pending_stack_adjust): Likewise.
7724         * print-tree.c (print_node): Ignore DECL_INLINE.
7725         * tree-inline.c (inlinable_function_p): Likewise.
7726
7727 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
7728
7729         * doc/extend.texi (hot attribute): Document that the hot attribute
7730         turns on -O3 for some ports.
7731         (cold attribute): Document that the cold attribute turns on -Os
7732         for some ports
7733
7734         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
7735         reflect function specific option support.
7736
7737         * target.h (struct target_option_hooks): Add fields to say whether
7738         the cold attribute implies -Os and the hot attribute implies -O3.
7739
7740         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
7741         By default, do not turn on -Os for cold functions.
7742         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
7743         not turn on -O3 for hot functions.
7744
7745         * c-common.c (handle_hot_attribute): Use target hook to determine
7746         if hot functions should enable -O3.
7747         (handle_cold_attribute): Use target hook to determine if cold
7748         functions should enable -Os.
7749
7750         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
7751         (override_options): Move disable scheduling to
7752         optimization_options.
7753         (optimization_options): Disable scheduling here, not
7754         override_options.
7755         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
7756         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
7757
7758         * config/ia64/ia64.c (ia64_override_options): Move setting
7759         scheduling flags to ia64_optimization_options.
7760         (ia64_optimization_options): Disable scheduling options here, and
7761         not in ia64_override_options.
7762         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
7763         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
7764
7765 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
7766
7767         PR target/36936
7768         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
7769
7770 2008-07-25  Martin Jambor  <mjambor@suse.cz>
7771
7772         PR tree-optimization/36926
7773         * ipa-prop.c (ipa_analyze_call_uses): Call
7774         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
7775
7776 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
7777
7778         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
7779         movv2si_internal): Add mem = reg alternative.
7780
7781 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
7782
7783         PR bootstrap/36918
7784         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
7785         DEFAULT_PCC_STRUCT_RETURN to 127.
7786
7787 2008-07-24  Jan Hubicka  <jh@suse.cz>
7788
7789         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
7790         (build_cgraph_edges): Likewise.
7791         * cgraph.c (cgraph_node): Do not update assembler hash.
7792         (cgraph_remove_node): Drop non-unit-at-a-time code.
7793         * tree-pass.h (pass_O0_always_inline): Remove.
7794         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
7795         * toplev.c (process_options): Flag unit-at-a-time does not imply
7796         no section anchors.
7797         * cgraphunit.c: Update comments.
7798         (decide_is_function_needed): Drop non-unit-at-a-time mode.
7799         (cgraph_assemble_pending_functions): Remove.
7800         (cgraph_reset_node): Drop non-unit-at-a-time code.
7801         (cgraph_finalize_function): Likewise.
7802         (cgraph_analyze_function): Likewise.
7803         (cgraph_finalize_compilation_unit): Likewise.
7804         (cgraph_expand_function): Likewise.
7805         (cgraph_optimize): Likesise.
7806         (save_inline_function_body): Likewise.
7807         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
7808         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
7809         * ipa-inline.c: Update comments.
7810         (enum inlining_mode): remove INLINE_SPEED.
7811         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
7812         (cgraph_mark_inline_edge): Likewise.
7813         (try_inline): Likewise.
7814         (cgraph_decide_inlining_incrementally): Likewise.
7815         (cgraph_gate_inlining): Remove.
7816         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
7817         (cgraph_gate_early_inlining): Likewise.
7818         (gate_inline_passes): Remove.
7819         (pass_inline_parameters, pass_ipa_inline): Remove gates.
7820         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
7821         pass_O0_always_inline): Remove.
7822         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
7823         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
7824         * opts.c (no_unit_at_a_time_default): Remove.
7825         (decode_options): Remove flag_unit_at_a_time reset and warning.
7826         * opts.h (no_unit_at_a_time_default): Remove.
7827         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
7828         early in GNU dialect.
7829         (merge_decls): Update comment; drop unit-at-a-time check.
7830         (finish_decl): Likewise.
7831         (grok_declaration): Remove flag_inline_trees code.
7832         (finish_functions): Return on function returning non-void on all
7833         statics.
7834         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
7835         * cfgexpand.c (expand_one_static_var): Remove.
7836         (expand_one_var): Remove expand_one_static_var call.
7837         (expand_used_vars_for_block): Remove flag_unit_a_time check.
7838         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
7839         and flag_unit_at_a-time compatibility checks.
7840         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
7841         * tree-inline.c (flag_inline_trees): Remove.
7842         (inlinable_function_p): Don't check it.
7843         (expand_call_inline): Remove non-unit-at-a-time code.
7844         * tree-inline.h (flag_inline_trees): Remove.
7845         * tree-optimize.c (execute_early_local_optimizations): Remove
7846         unit-at-a-time checks.
7847         (tree_rest_of_compilation): Likewise.
7848         * combine.c (setup_incoming_promotions): Likewise.
7849         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
7850         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
7851         * passes.c (pass_inline_parameters): Update comments; remove
7852         O0_alwaysinline pass.
7853         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
7854         (execute_one_pass): Likewise.
7855         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
7856         (ix86_function_sseregparm): Likewise.
7857         * arm.c (arm_function_in_section_p): Likewise.
7858         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
7859         * varpool.c: Update comments.
7860         (decide_is_variable_needed): Remove unit-at-a-time checks.
7861         (varpool_finalize_decl): Likewise.
7862
7863 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
7864
7865         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
7866         to 2 instead of -1.
7867         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
7868
7869 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
7870
7871         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
7872         imp symbol extension.
7873
7874         2008-07-23  Ian Lance Taylor  <iant@google.com>
7875
7876         * tree-vrp.c (infer_value_range): Ignore asm statements when
7877         looking for memory accesses for -fdelete-null-pointer-checks.
7878
7879 2008-07-24  Ben Elliston  <bje@au.ibm.com>
7880
7881         * config/spu/spu-c.c (__vector_keyword): New variable.
7882         (vector_keyword): Likewise.
7883         (spu_categorize_keyword): New function.
7884         (spu_macro_to_expand): Likewise.
7885         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
7886         compiling an ISO C dialect.
7887
7888 2008-07-24  Ben Elliston  <bje@au.ibm.com>
7889
7890         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
7891         conventional usage.
7892
7893 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7894
7895         * configure: Regenerate.
7896         * configure.ac: Require texinfo 4.7.
7897         * doc/install.texi: Document texinfo 4.7 requirement.
7898
7899 2008-07-23  Martin Jambor  <mjambor@suse.cz>
7900
7901         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
7902         rather than for DECL_SAVED_TREE.
7903         * ipa-prop.c: Include diagnostic.h.
7904         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
7905         thoroughly.
7906         (ipa_detect_param_modifications): Function rewritten from scratch.
7907         (ipa_compute_jump_functions): Changed accesses to modification flags.
7908         (ipa_free_node_params_substructures): Update flags destruction.
7909         (ipa_node_duplication_hook): Update flags duplication.
7910         (ipa_print_all_params_modified): Updated flag access.
7911         * ipa-prop.h (struct ipa_param_flags): New structure.
7912         (struct ipa_node_params): New field modification_analysis_done,
7913         modified_flags changed into param_flags.
7914         (ipa_is_ith_param_modified): Changed to use new flags.
7915         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
7916
7917         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
7918         ipa-cp.c and split into two functions.
7919         (ipa_print_node_jump_functions): New function.
7920         (compute_scalar_jump_functions): New function.
7921         (type_like_member_ptr_p): New function.
7922         (compute_pass_through_member_ptrs): New function.
7923         (fill_member_ptr_cst_jump_function): New function.
7924         (determine_cst_member_ptr): New function.
7925         (compute_cst_member_ptr_arguments): New function.
7926         (ipa_compute_jump_functions): Complete rewrite.
7927         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
7928         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
7929         (struct ipa_member_ptr_cst): New structure.
7930         (union jump_func_value): New field member_cst.
7931         * ipa-cp.c (ipcp_lat_is_insertable): New function.
7932         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
7933         jump function types.
7934         (ipcp_print_all_lattices): Slight fprintf rearrangement.
7935         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
7936         instead of ipcp_print_all_jump_functions.
7937         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
7938         only for replacable scalars.
7939
7940         * doc/invoke.texi (Optimize options): Add description of
7941         -findirect-inlining.
7942         * common.opt (flag_indirect_inlining): New flag.
7943         * opts.c (decode_options): Set flag_indirect_inlining when
7944         optimize >= 3.
7945
7946         * ipa-inline.c: Include ipa-prop.h.
7947         (inline_indirect_intraprocedural_analysis): New function.
7948         (inline_generate_summary): Allocate parameter and argument info
7949         structures, call inline_indirect_intraprocedural_analysis on each
7950         node when doing indirect inlining and deallocate indirect inlining
7951         data structures in the end.
7952         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
7953         (free_all_ipa_structures_after_iinln): New function.
7954         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
7955         done.
7956         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
7957
7958         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
7959         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
7960         of computing the frequency separately.
7961         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
7962         of computing the frequency separately.
7963         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
7964         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
7965         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
7966         (ipa_get_stmt_member_ptr_load_param): New function.
7967         (ipa_is_ssa_with_stmt_def): New function.
7968         (ipa_note_param_call): New function.
7969         (ipa_analyze_call_uses): New function.
7970         (ipa_analyze_stmt_uses): New function.
7971         (ipa_analyze_params_uses): New function.
7972         (ipa_free_node_params_substructures): Also free the param_calls linked
7973         list.
7974         (ipa_node_duplication_hook): Also duplicate the param_calls
7975         linked list.
7976         (ipa_print_node_param_flags): New function.
7977         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
7978         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
7979         * ipa-prop.h (struct ipa_param_flags): New field called.
7980         (struct ipa_param_call_note): New structure.
7981         (struct ipa_node_params): New fields param_calls and
7982         uses_analysis_done.
7983         (ipa_is_ith_param_called): New function.
7984         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
7985         ipa_analyze_params_uses and dump parameter flags.
7986
7987         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
7988         ipa_propagate_indirect_call_infos if performing indirect inlining,
7989         pass a new parameter new_edges to it.
7990         (add_new_edges_to_heap): New fucntion.
7991         (cgraph_decide_inlining_of_small_functions): New vector
7992         new_indirect_edges for newly found indirect edges , call
7993         ipa_propagate_indirect_call_infos after inlining.
7994         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
7995         inlining if performing indirect inlining.  Call
7996         free_all_ipa_structures_after_iinln when doing so too.
7997         (inline_generate_summary): Do not call
7998         free_all_ipa_structures_after_iinln here.
7999         * ipa-prop.c (update_jump_functions_after_inlining): New function.
8000         (print_edge_addition_message): New function.
8001         (update_call_notes_after_inlining): New function.
8002         (propagate_info_to_inlined_callees): New function.
8003         (ipa_propagate_indirect_call_infos): New function.
8004         * ipa-prop.h: Include cgraph.h
8005         (struct ipa_param_call_note): Fields reordered, new field processed.
8006         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
8007         flag indirect_call.
8008         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
8009         rediscovered call statements.
8010         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
8011         (dump_cgraph_node): Dump also the indirect_call flag.
8012         (cgraph_clone_edge): Copy also the indirect_call flag.
8013         * tree-inline.c (copy_bb): Do not check for fndecls from call
8014         expressions, check for edge availability when moving clones.
8015         (get_indirect_callee_fndecl): New function.
8016         (expand_call_inline): If callee declaration is not apprent from
8017         the statement, try calling get_indirect_callee_fndecl.  Do not
8018         issue warnings or call sorry when not inlinings an indirect edge.
8019         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
8020
8021         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
8022         bit more frandly to matching.
8023         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
8024         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
8025         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
8026
8027 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8028
8029         PR 36907
8030         * opth-gen.awk: Suppress function specific features when building
8031         target libraries.
8032         * optc-gen.awk: Ditto.
8033
8034 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8035
8036         PR 35058
8037         * diagnostic.c (pedwarn): Add opt parameter.
8038         (pedwarn0): New.
8039         * c-tree.h (pedwarn_init): Add opt parameter.
8040         (pedwarn_c90): Likewise.
8041         (pedwarn_c99): Likewise.
8042         * c-errors.c (pedwarn_c99): Likewise.
8043         (pedwarn_c90): Likewise.
8044         * toplev.h (pedwarn): Update declaration.
8045         (pedwarn0): Declare.
8046         * c-lex.c: All calls to pedwarn changed.
8047         * builtins.c: All calls to pedwarn changed.
8048         * toplev.c: All calls to pedwarn changed.
8049         * c-decl.c: All calls to pedwarn changed.
8050         * c-typeck.c: All calls to pedwarn changed.
8051         * c-common.c: All calls to pedwarn changed.
8052         * c-parser.c: All calls to pedwarn changed.
8053
8054 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8055             Karthik Kumar  <karthikkumar@gmail.com>
8056
8057         * attribs.c (file scope): Include c-common.h.
8058         (decl_attributes): Add support for #pragma GCC optimize and
8059         #pragma GCC option.
8060
8061         * targhooks.c (default_can_inline_p): New function that is the
8062         default for the TARGET_CAN_INLINE_P target hook.
8063
8064         * targhooks.h (default_can_inline_p): Add declaration.
8065
8066         * tree.c (cl_optimization_node): New static tree for building
8067         OPTIMIZATION_NODE tree.
8068         (cl_target_option_node): New static tree for building
8069         TARGET_OPTION_NODE tree.
8070         (cl_option_hash_table): New hash table for hashing
8071         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8072         (cl_option_hash_hash): New function to provide the hash value for
8073         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8074         (cl_option_hash_eq): New function to provide an equality test for
8075         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8076         (tree_code_size): Add support for OPTIMIZATION_NODE and
8077         TARGET_OPTION_NODE trees.
8078         (tree_code_structure): Add support for OPTIMIZATION_NODE and
8079         TARGET_OPTION_NODE trees.
8080         (build_optimization_node): Build a tree that has all of the
8081         current optimization options.
8082         (build_target_option_node): Build a tree that has the target
8083         options that might be changed on a per function basis.
8084
8085         * tree.h (file scope): Include options.h.
8086         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
8087         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
8088         (TREE_OPTIMIZATION): Ditto.
8089         (TREE_TARGET_SPECIFIC): Ditto.
8090         (struct tree_function_decl): Add fields for remembering the
8091         current optimization options and target specific options.
8092         (struct tree_optimization_option): New tree variant that remembers
8093         the optimization options.
8094         (struct tree_target_option): New tree variant that remembers the
8095         target specific flags that might change for compiling a particular
8096         function.
8097         (union tree_node): Include tree_optimization_option and
8098         tree_target_option fields.
8099         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
8100         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
8101         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
8102         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
8103         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
8104         optimization and target options.
8105         (optimization_default_node): New macro to refer to global_trees
8106         field.
8107         (optimization_current_node): Ditto.
8108         (optimization_cold_node): Ditto.
8109         (optimization_hot_node): Ditto.
8110         (target_option_default_node): Ditto.
8111         (target_option_current_node): Ditto.
8112         (current_option_pragma): Ditto.
8113         (current_optimize_pragma): Ditto.
8114
8115         * target.h (struct gcc_target): Add valid_option_attribute_p,
8116         target_option_save, target_option_restore, target_option_print,
8117         target_option_pragma_parse, and can_inline_p hooks.
8118
8119         * toplev.h (parse_optimize_options): Add declaration.
8120         (fast_math_flags_struct_set_p): Ditto.
8121
8122         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
8123         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
8124         optimize is used.
8125
8126         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
8127         tree_can_inline_p hook to see if one function can inline another.
8128         (cgraph_decide_inlining): Ditto.
8129         (cgraph_decide_inlining_incrementally): Ditto.
8130
8131         * opts.c (decode_options): Add support for running multiple times
8132         to allow functions with different target or optimization options
8133         than was specified on the command line.
8134         (fast_math_flags_struct_set_p): New function that is similar to
8135         fast_math_flags_set_p, except it uses the values in the
8136         cl_optimization structure instead of global variables.
8137
8138         * optc-gen.awk: Add support for TargetSave to allow a back end to
8139         declare new fields that need to be saved when using function
8140         specific options.  Include flags.h and target.h in the options.c
8141         source.  Add support for Save to indicate which options can be set
8142         for individual functions.  Generate cl_optimize_save,
8143         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
8144         cl_target_option_restore, cl_target_option_print functions to
8145         allow functions to use different optimization or target options.
8146
8147         * opt-functions.awk (var_type_struct): Return the type used for
8148         storing the field in a structure.
8149
8150         * opth-gen.awk: Add support for TargetSave to allow a back end to
8151         declare new fields that need to be saved when using function
8152         specific options.  Add support for Save to indicate which options
8153         can be set for individual functions.  Only generate one extern for
8154         Mask fields.  Generate cl_optimization and cl_target_option
8155         structures to remember optimization and target options.
8156
8157         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
8158         collecting new tree nodes.
8159         (TS_TARGET_OPTION): Ditto.
8160
8161         * c-decl.c (merge_decls): Merge function specific target and
8162         optimization options.
8163
8164         * function.c (invoke_set_current_function_hook): If the function
8165         uses different optimization options, change the global variables
8166         to reflect this.
8167
8168         * coretypes.h (struct cl_optimization): Add forward reference.
8169         (struct cl_target_option): Ditto.
8170
8171         * c-pragma.c (option_stack): New static vector to remember the
8172         current #pragma GCC option stack.
8173         (handle_pragma_option): New function to support #pragma GCC option
8174         to change target options.
8175         (optimize_stack): New static vector to remember the current
8176         #pragma GCC optimize stack.
8177         (handle_pragma_optimize): New function to support #pragma GCC
8178         optimize to change optimization options.
8179         (init_pragma): Add support for #pragma GCC optimize and #pragma
8180         GCC option.
8181
8182         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
8183         optimization options.
8184         (TARGET_OPTION_NODE): New tree code for remembering certain target
8185         options.
8186
8187         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
8188         TARGET_OPTION_NODE trees.
8189
8190         * common.opt (-O): Add Optimization flag.
8191         (-Os): Ditto.
8192         (-fmath-errno): Ditto.
8193         (-falign-functions): Add UInteger flag to make sure flag gets full
8194         int in cl_optimization structure.
8195         (-falign-jumps): Ditto.
8196         (-falign-labels): Ditto.
8197         (-falign-loops): Ditto.
8198         (-fsched-stalled-insns): Ditto.
8199         (-fsched-stalled-insns-dep): Ditto.
8200
8201         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
8202         definition.
8203         (TARGET_OPTION_SAVE): Ditto.
8204         (TARGET_OPTION_RESTORE): Ditto.
8205         (TARGET_OPTION_PRINT): Ditto.
8206         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
8207         (TARGET_CAN_INLINE_P): Ditto.
8208         (TARGET_INITIALIZER): Add new hooks.
8209
8210         * tree-inline.c (tree_can_inline_p): New function to determine
8211         whether one function can inline another.  Check if the functions
8212         use compatible optimization options, and also call the backend
8213         can_inline_p hook.
8214
8215         * tree-inline.h (tree_can_inline_p): Add declaration.
8216
8217         * c-common.c (c_common_attribute): Add support for option and
8218         optimize attributes.
8219         (handle_option_attribute): Add support for the option attribute to
8220         allow the user to specify different target options for compiling a
8221         specific function.
8222         (handle_optimize_attribute): Add support for the optimize
8223         attribute to allow the user to specify different optimization
8224         options for compiling a specific function.
8225         (handle_hot_attribute): Turn on -O3 optimization for this one
8226         function if it isn't the default optimization level.
8227         (handle_cold_attribute): Turn on -Os optimization for this one
8228         function if it insn't the default optimization.
8229         (const_char_p): New const char * typedef.
8230         (optimize_args): New static vector to remember the optimization
8231         arguments.
8232         (parse_optimize_options): New function to set up the optimization
8233         arguments from either the optimize attribute or #pragma GCC optimize.
8234
8235         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
8236         (builtin_define_std): Ditto.
8237
8238         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
8239         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
8240         (x86_64-*-*): Ditto.
8241
8242         * Makefile.in (TREE_H): Add options.h.
8243         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
8244
8245         * doc/extend.texi (option attribute): Document new attribute.
8246         (optimize attribute): Ditto.
8247         (hot attribute): Document hot attribute sets -O3.
8248         (cold attribute): Document cold attribute sets -Os.
8249         (#pragma GCC option): Document new pragma.
8250         (#pragma GCC optimize): Ditto.
8251
8252         * doc/options.texi (TargetSave): Document TargetSave syntax.
8253         (UInteger): Document UInteger must be used for certain flags.
8254         (Save): Document Save option to create target specific options
8255         that can be saved/restored on a function specific context.
8256
8257         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
8258         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
8259
8260         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
8261         (TARGET_OPTION_SAVE): Ditto.
8262         (TARGET_OPTION_RESTORE): Ditto.
8263         (TARGET_OPTION_PRINT): Ditto.
8264         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
8265         (TARGET_CAN_INLINE_P): Ditto.
8266
8267         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
8268         -mfpmath=sse,387.
8269         (-mfpmath=both): Ditto.
8270
8271 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8272             Karthik Kumar  <karthikkumar@gmail.com>
8273
8274         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
8275         (TARGET_POPCNT): Ditto.
8276         (TARGET_SAHF): Ditto.
8277         (TARGET_AES): Ditto.
8278         (TARGET_PCLMUL): Ditto.
8279         (TARGET_CMPXCHG16B): Ditto.
8280         (TARGET_RECIP): Move switch into target_flags.
8281         (TARGET_FUSED_MADD): Ditto.
8282         (ix86_arch_features): Make an unsigned char type.
8283         (ix86_tune_features): Ditto.
8284         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
8285         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
8286         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
8287
8288         * config/i386/i386.opt (arch): New TargetSave field to define
8289         fields that need to be saved for function specific option support.
8290         (tune): Ditto.
8291         (fpmath): Ditto.
8292         (branch_cost): Ditto.
8293         (ix86_isa_flags_explicit): Ditto.
8294         (tune_defaulted): Ditto.
8295         (arch_specified): Ditto.
8296         (-m128-long-double): Add Save flag to save option for target
8297         specific option support.
8298         (-m80387): Ditto.
8299         (-maccumulate-outgoing-args): Ditto.
8300         (-malign-double): Ditto.
8301         (-malign-stringops): Ditto.
8302         (-mfancy-math-387): Ditto.
8303         (-mhard-float): Ditto.
8304         (-mieee-fp): Ditto.
8305         (-minline-all-stringops): Ditto.
8306         (-minline-stringops-dynamically): Ditto.
8307         (-mms-bitfields): Ditto.
8308         (-mno-align-stringops): Ditto.
8309         (-mno-fancy-math-387): Ditto.
8310         (-mno-push-args): Ditto.
8311         (-mno-red-zone): Ditto.
8312         (-mpush-args): Ditto.
8313         (-mred-zone): Ditto.
8314         (-mrtd): Ditto.
8315         (-msseregparm): Ditto.
8316         (-mstack-arg-probe): Ditto.
8317         (-m32): Ditto.
8318         (-m64): Ditto.
8319         (-mmmx): Ditto.
8320         (-m3dnow): Ditto.
8321         (-m3dnowa): Ditto.
8322         (-msse): Ditto.
8323         (-msse2): Ditto.
8324         (-msse3): Ditto.
8325         (-msse4.1): Ditto.
8326         (-msse4.2): Ditto.
8327         (-msse4): Ditto.
8328         (-mno-sse4): Ditto.
8329         (-msse4a): Ditto.
8330         (-msse5): Ditto.
8331         (-mrecip): Move flag into target_flags.
8332         (-mcld): Ditto.
8333         (-mno-fused-madd): Ditto.
8334         (-mfused-madd): Ditto.
8335         (-mabm): Move flag into ix86_isa_flags.
8336         (-mcx16): Ditto.
8337         (-mpopcnt): Ditto.
8338         (-msahf): Ditto.
8339         (-maes): Ditto.
8340         (-mpclmul): Ditto.
8341
8342         * config/i386/i386-c.c: New file for #pragma support.
8343         (ix86_target_macros_internal): New function to #define or #undef
8344         target macros based when the user uses the #pragma GCC option to
8345         change target options.
8346         (ix86_pragma_option_parse): New function to add #pragma GCC option
8347         support.
8348         (ix86_target_macros): Move defining the target macros here from
8349         TARGET_CPU_CPP_BUILTINS in i386.h.
8350         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
8351         defined, initialize any subtarget #pragmas.
8352
8353         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
8354         REGISTER_TARGET_PRAGMAS.
8355
8356         * config/i386/t-i386: New file for x86 dependencies.
8357         (i386.o): Make dependencies mirror the include files used.
8358         (i386-c.o): New file, add dependencies.
8359
8360         * config/i386/i386-protos.h (override_options): Add bool argument.
8361         (ix86_valid_option_attribute_tree): Add declaration.
8362         (ix86_target_macros): Ditto.
8363         (ix86_register_macros): Ditto.
8364
8365         * config/i386/i386.c (ix86_tune_features): Move initialization of
8366         the target masks to initial_ix86_tune_features to allow functions
8367         to have different target options.  Make type unsigned char,
8368         instead of unsigned int.
8369         (initial_ix86_tune_features): New static vector to hold processor
8370         masks for the tune variables.
8371         (ix86_arch_features): Move initialization of the target masks to
8372         initial_ix86_arch_features to allow functions to have different
8373         target options.  Make type unsigned char, instead of unsigned int.
8374         (initial_ix86_arch_features): New static vector to hold processor
8375         masks for the arch variables.
8376         (enum ix86_function_specific_strings): New enum to describe the
8377         string options used for attribute((option(...))).
8378         (ix86_target_string): New function to return a string that
8379         describes the target options.
8380         (ix86_debug_options): New function to print the current options in
8381         the debugger.
8382         (ix86_function_specific_save): New function hook to save the
8383         function specific global variables in the cl_target_option structure.
8384         (ix86_function_specific_restore): New function hook to restore the
8385         function specific variables from the cl_target_option structure to
8386         the global variables.
8387         (ix86_function_specific_print): New function hook to print the
8388         target specific options in the cl_target_option structure.
8389         (ix86_valid_option_attribute_p): New function hook to validate
8390         attribute((option(...))) arguments.
8391         (ix86_valid_option_attribute_tree): New function that is common
8392         code between attribute((option(...))) and #pragma GCC option
8393         support that parses the options and returns a tree holding the options.
8394         (ix86_valid_option_attribute_inner_p): New helper function for
8395         ix86_valid_option_attribute_tree.
8396         (ix86_can_inline_p): New function hook to decide if one function
8397         can inline another on a target specific basis.
8398         (ix86_set_current_function); New function hook to switch target
8399         options if the user used attribute((option(...))) or #pragma GCC
8400         option.
8401         (ix86_tune_defaulted): Move to static file scope from
8402         override_options.
8403         (ix86_arch_specified): Ditto.
8404         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
8405         ix86_isa_flags.
8406         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
8407         (OPTION_MASK_ISA_ABM_SET): Ditto.
8408         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
8409         (OPTION_MASK_ISA_CX16_SET): Ditto.
8410         (OPTION_MASK_ISA_SAHF_SET): Ditto.
8411         (OPTION_MASK_ISA_AES_UNSET): Ditto.
8412         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
8413         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
8414         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
8415         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
8416         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
8417         (struct ptt): Move to static file scope from override_options.
8418         (processor_target_table): Ditto.
8419         (cpu_names): Ditto.
8420         (ix86_handle_option): Add support for options that are now isa options.
8421         (override_options): Add support for declaring functions that
8422         support different target options than were specified on the
8423         command line.  Move struct ptt, processor_target_table, cpu_names,
8424         ix86_tune_defaulted, ix86_arch_specified to static file scope.
8425         Add bool argument.  Fix up error messages so the appropriate error
8426         is given for either command line or attribute.
8427         (ix86_previous_fndecl): New static to remember previous function
8428         declaration to see if we need to change target options.
8429         (ix86_builtins_isa): New array to record the ISA of each builtin
8430         function.
8431         (def_builtin): Always create the builtin function, even if the
8432         current ISA doesn't support it.
8433         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
8434         tests for those builtins.
8435         (ix86_init_builtins): Remove TARGET_MMX test for calling
8436         ix86_init_mmx_sse_builtins.
8437         (ix86_expand_builtin): If the current ISA doesn't support a given
8438         builtin, signal an error.
8439         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
8440         (TARGET_SET_CURRENT_FUNCTION): Ditto.
8441         (TARGET_OPTION_SAVE): Ditto.
8442         (TARGET_OPTION_RESTORE): Ditto.
8443         (TARGET_OPTION_PRINT): Ditto.
8444         (TARGET_CAN_INLINE_P): Ditto.
8445
8446 2008-07-22  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8447
8448         * c-typeck.c (build_external_ref): Don't call assemble_external.
8449         * final.c (output_operand): Call assemble_external.
8450
8451 2008-07-21  DJ Delorie  <dj@redhat.com>
8452
8453         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
8454         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
8455
8456 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8457
8458         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
8459         original insn and splitter contents into ...
8460         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
8461         flag_unsafe_math_optimizations.  Add dummy scratch register.
8462         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
8463         !flag_unsafe_math_optimizations.  Returns number with next
8464         highest magnitude if this is still less or equal to the true
8465         quotient in magnitude.
8466
8467 2008-07-21  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8468
8469         * Makefile.in: Replace toplev.h with TOPLEV_H.
8470         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
8471         * c-lex.c (fe_file_change): Don't set in_system_header.
8472         * c-parser.c (c_token): Remove in_system_header.
8473         (c_lex_one_token): Don't set in_system_header.
8474         (c_parser_set_source_position_from_token): Don't set in_system_header.
8475         * diagnostic.c (diagnostic_report_diagnostic): Use location from
8476         diagnostic_info.
8477         (warning_at): New.
8478         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
8479         * flags.h (in_system_header): Remove.
8480         * function.c (saved_in_system_header): Remove.
8481         (push_cfun): Don't set in_system_header.
8482         (pop_cfun): Don't set in_system_header.
8483         (push_struct_function): Don't set in_system_header.
8484         * input.h (expanded_location): Add sysp.
8485         (in_system_header_at): New.
8486         (in_system_header): New.
8487         * toplev.c (in_system_header): Remove.
8488         * toplev.h: Include input.h
8489         (warning_at): New.
8490         * tree-cfg.c (execute_warn_function_return): Call warning_at.
8491         * tree-ssa.c (warn_uninit): Call warning_at.
8492         (warn_uninitialized_var): Update calls to warn_uninit.
8493         (warn_uninitialized_phi): Update calls to warn_uninit.
8494         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
8495         (expand_location): Initialize xloc.sysp.
8496         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
8497         (tree_decl_with_vis): Remove in_system_header_flag.
8498
8499 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
8500
8501         PR target/36822
8502         * recog.c (asm_operand_ok): Change the order of the extra
8503         memory constraint checks.
8504
8505 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8506
8507         PR tree-opt/36879
8508         * tree-switch-conversion.c (build_one_array): Call
8509         varpool_mark_needed_node and varpool_finalize_decl
8510         instead of assemble_variable.
8511
8512 2008-07-19  Jan Hubicka  <jh@suse.cz>
8513
8514         * cgraph.c (cgraph_add_new_function): Do early local passes.
8515         * tree-nrv.c (gate_pass_return_slot): New gate.
8516         (pass_nrv): Add the gate.
8517         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
8518         functions.
8519         (coalesce_ssa_name): Coalesce SSA names.
8520         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
8521         not optimizing so unused user vars remains visible.
8522         * common.opt (flag_tree_ter): Always enable by default.
8523         * tree-ssa-ter.c: Include flags.h
8524         (is_replaceable_p): Check that locations match; when aliasing
8525         is missing be conservative about loads.
8526         * tree-optimize.c (gate_init_datastructures): Remove.
8527         (pass_init_datastructures): New.
8528         * passes.c: Reorder passes so we always go into SSA.
8529
8530 2008-07-19  Jan Hubicka  <jh@suse.cz>
8531
8532         * doc/extend.texi (flatten attribute): Remove note about
8533         unit-at-a-time.
8534         * doc/invoke.texi (--combine): Likewise.
8535         (-finline-functions-called-once): Update levels when enabled.
8536         (-funit-at-a-time): Document new behaviour.
8537         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
8538         -fno-section-anchors when disabled explicitly.
8539         (inline params): They are not ignored now.
8540         (precompiled headers): Remove unit-at-a-time as being incompatible.
8541         * opts.c (decode_options): Handle unit-at-a-time as alias;
8542         imply -fno-section-anchors when toplevel reorder is disabled
8543         explicitly.
8544         * common.opt (ftoplevel-reorder): Set default value to 2.
8545         (funit-at-a-time): Set default value to 1.
8546         * config/rs6000/rs6000.c (optimization_options): Set section anchors
8547         to 2.
8548
8549 2008-07-19  Jan Hubicka  <jh@suse.cz>
8550
8551         * builtins.c (expand_builtin_int_roundingfn,
8552         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
8553         it is not useful.
8554
8555 2008-07-19  Richard Guenther  <rguenther@suse.de>
8556
8557         PR bootstrap/36864
8558         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
8559         * tree-ssa-sccvn.c (get_constant_value_id): New function.
8560         * tree-ssa-pre.c (get_expr_value_id): For newly created
8561         constant value-ids make sure to add the expression to its
8562         expression-set.
8563
8564 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
8565
8566         PR middle-end/36877
8567         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
8568         return value of the builtin is ignored.
8569
8570 2008-07-19  Olivier Hainque  <hainque@adacore.com>
8571
8572         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
8573         bits, a C conformant malloc implementation has to provide.
8574         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
8575
8576 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
8577
8578         PR target/36780
8579         PR target/36827
8580         * reload.c (find_reloads_subreg_address): Only reload address if
8581         reloaded == 0, not for reloaded != 1.
8582
8583         Revert:
8584         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
8585         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
8586         (m32c_legitimate_address_p): Handle "++rii" addresses created by
8587         m32c_legitimize_reload_address.
8588
8589         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
8590         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
8591         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
8592
8593 2008-07-19  Olivier Hainque  <hainque@adacore.com>
8594
8595         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
8596         argument, saying whether nested array are to be collapsed
8597         into a single array type DIE with multiple subscripts.
8598         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
8599         issues, centralize the nested array types collapsing control and
8600         disable the transformation for Ada.
8601
8602 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
8603
8604         PR target/36786
8605         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
8606         x86_64_shift_adj.
8607         (x86_64_shift_adj_2): New expander.
8608         (x86_64_shift_adj_3): Ditto.
8609         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
8610         to split TImode operands.
8611         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
8612         (ix86_split_lshr): Ditto.
8613
8614 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
8615
8616         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
8617         and __CHAR32_TYPE__.
8618         * c-typeck.c (digest_init): Support char16_t and char32_t.
8619         (set_nonincremental_init_from_string): Idem.
8620
8621 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
8622
8623         PR middle-end/36859
8624         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
8625         PREFERRED_STACK_BOUNDARY.
8626         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
8627
8628 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
8629
8630         PR middle-end/36858
8631         * function.c (locate_and_pad_parm): Cap boundary earlier.
8632
8633 2008-07-17  Julian Brown  <julian@codesourcery.com>
8634
8635         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
8636         no-op for targets which don't use DLLs.
8637
8638 2008-07-17  Martin Jambor  <mjambor@suse.cz>
8639
8640         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
8641         that nodes are relevant by examining the node->analyzed flag.
8642         (ipcp_init_stage): Check which nodes are relevant, assert that the
8643         relevant ones are also required.
8644         (ipcp_propagate_stage): Check on the side arrays are properly
8645         allocated.
8646         (ipcp_print_all_jump_functions): Make sure not to touch any node
8647         that is not analyzed or an edge that does not have a corresponding
8648         entry in the on-the-side vectors.
8649         (ipcp_function_scale_print): Likewise.
8650         (ipcp_update_callgraph): Check that the node is relevant.
8651         (ipcp_insert_stage): Check that the node is relevant.  Check there is
8652         an info for every node and edge.
8653         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
8654         (ipa_print_all_tree_maps): Likewise and a new variable info.
8655         (ipa_print_all_params_modified): Likewise.
8656         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
8657
8658 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
8659
8660         PR target/25343
8661         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
8662
8663 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
8664
8665         PR rtl-optimization/36753
8666         * fwprop.c (use_killed_between): Don't shortcut
8667         single-definition global registers.
8668
8669 2008-07-16  Jan Hubicka  <jh@suse.cz>
8670
8671         * cgraph.h (varpool_empty_needed_queue): Declare.
8672         * cgraphunit.c (output_in_order): Mark all variables as needed;
8673         empty the queue.
8674         * varpool.c (varpool_assemble_node): Update debug queue.
8675         (varpool_assemble_pending_decls): Don't do it here.
8676         (varpool_empty_needed_queue):  New function.
8677
8678 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8679
8680         * recog.c (peephole2_optimize): Fix formatting.
8681
8682 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8683
8684         * c-pch.c (get_ident): Avoid C++ keywords.
8685         * combine-stack-adj.c (single_set_for_csa): Likewise.
8686         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
8687         output_asm_insn): Likewise.
8688         * reload.c (push_secondary_reload, find_reusable_reload,
8689         push_reload, combine_reloads, find_reloads,
8690         debug_reload_to_stream): Likewise.
8691         * reload.h (struct reload): Likewise.
8692         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
8693         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
8694         emit_output_reload_insns): Likewise.
8695         * targhooks.c (default_secondary_reload): Likewise.
8696         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
8697
8698 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8699
8700         * recog.c (validate_change_1, validate_change,
8701         validate_unshare_change, validate_replace_rtx_1, struct
8702         funny_match, constrain_operands, peephole2_optimize): Avoid C++
8703         keywords.
8704         * reload.c (push_secondary_reload, secondary_reload_class,
8705         scratch_reload_class, find_valid_class, find_reusable_reload,
8706         push_reload, find_dummy_reload, find_reloads_address_1,
8707         find_reloads_address_part, find_equiv_reg): Likewise.
8708         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
8709         choose_reload_regs): Likewise.
8710         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
8711         Likewise.
8712         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
8713         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
8714         * sched-rgn.c (concat_INSN_LIST): Likewise.
8715         * stor-layout.c (mode_for_size, mode_for_size_tree,
8716         smallest_mode_for_size): Likewise.
8717
8718 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8719
8720         * cfg.c (dump_reg_info): Avoid C++ keywords.
8721         * dwarf2asm.c (dw2_force_const_mem,
8722         dw2_asm_output_encoded_addr_rtx): Likewise.
8723         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
8724         * expmed.c (expand_shift): Likewise.
8725         * global.c (find_reg): Likewise.
8726         * graph.c (draw_edge): Likewise.
8727         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
8728         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
8729         widen_clz, widen_bswap, expand_parity, expand_unop,
8730         emit_cmp_and_jump_insn_1): Likewise.
8731         * postreload.c (reload_cse_simplify_operands): Likewise.
8732         * ra.h (add_neighbor): Likewise.
8733         * reg-stack.c (remove_regno_note, change_stack): Likewise.
8734         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
8735         record_reg_classes, copy_cost, record_address_regs,
8736         invalid_mode_change_p): Likewise.
8737         * regrename.c (regrename_optimize, scan_rtx_reg,
8738         dump_def_use_chain, find_oldest_value_reg,
8739         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
8740
8741 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
8742
8743         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
8744         MASK_POWERPC64 for power4 in previous commit.
8745
8746 2008-07-16  Olivier Hainque  <hainque@adacore.com>
8747
8748         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
8749         instead of bare conversion to cast const-ness away.
8750
8751 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
8752
8753         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
8754         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
8755         * config/xtensa/xtensa.c (xtensa_function_value): New function.
8756         (TARGET_FUNCTION_VALUE): Define.
8757
8758 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
8759
8760         * config/rs6000/rs6000.c (processor_target_table): Add
8761         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
8762
8763 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
8764
8765         PR target/36827
8766         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
8767         (m32c_legitimate_address_p): Handle "++rii" addresses created by
8768         m32c_legitimize_reload_address.
8769
8770 2007-07-16  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8771
8772         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
8773         DECL_IN_SYSTEM_HEADER in sync.
8774
8775 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
8776
8777         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
8778         * tree-ssa-pre.c (pre_expr_eq): Ditto
8779         (get_constant_for_value_id): Take a type as an argument.
8780         (fully_constant_expression): Pass in type.
8781         (find_or_generate_expression): Short circuit constant case.
8782         (create_expression_by_pieces): Remove special casing of
8783         pointer_plus.
8784         (do_regular_insertion): Short circuit constant case.
8785         (do_partial_partial_insertion): Ditto.
8786
8787 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
8788
8789         PR target/36782
8790         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
8791
8792 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
8793
8794         * config/xtensa/libgcc-xtensa.ver: New file.
8795         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
8796
8797 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8798
8799         * df-problems.c (df_set_note): Avoid C++ keywords.
8800         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
8801         * dse.c (record_store, remove_useless_values): Likewise.
8802         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
8803         gen_reg_rtx_offset, operand_subword, change_address_1,
8804         change_address, adjust_address_1, offset_address,
8805         widen_memory_access, emit_copy_of_insn_after): Likewise.
8806         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
8807         * fwprop.c (should_replace_address, propagate_rtx_1,
8808         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
8809         Likewise.
8810         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
8811         gcse_emit_move_after, update_ld_motion_stores): Likewise.
8812         * lcm.c (compute_insert_delete, pre_edge_lcm,
8813         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
8814         * lower-subreg.c (resolve_reg_notes): Likewise.
8815         * mode-switching.c (optimize_mode_switching): Likewise.
8816
8817 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8818
8819         * bt-load.c (add_btr_def, migrate_btr_def,
8820         branch_target_load_optimize): Avoid C++ keywords.
8821         * caller-save.c (insert_restore, insert_save, insert_one_insn):
8822         Likewise.
8823         * combine.c (subst, simplify_set, make_extraction,
8824         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
8825         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
8826         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
8827
8828 2008-07-15  Richard Guenther  <rguenther@suse.de>
8829
8830         PR middle-end/36369
8831         * c-common.c (strict_aliasing_warning): Do not warn for
8832         TYPE_REF_CAN_ALIAS_ALL pointers.
8833         (c_common_get_alias_set): may_alias types are not special.
8834         * tree.c (build_pointer_type_for_mode): Look up the may_alias
8835         attribute and set can_ref_all accordingly.
8836         (build_reference_type_for_mode): Likewise.
8837         * doc/extend.texi (may_alias): Clarify.
8838
8839 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
8840
8841         PR target/36780
8842         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
8843         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
8844
8845 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8846
8847         PR target/31568
8848         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
8849         gcc_assert, instead call output_operand_lossage.
8850
8851 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
8852
8853         * builtins.c (std_canonical_va_list): Treat structure based
8854         va_list types.
8855
8856 2008-07-15  Ben Elliston  <bje@au.ibm.com>
8857
8858         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
8859
8860 2007-07-14  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8861
8862         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
8863         is set.
8864
8865 2008-07-14  Jan Hubicka  <jh@suse.cz>
8866
8867         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
8868         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
8869         fix predicates and constraints.
8870         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
8871         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
8872
8873 2008-07-14  Doug Kwan  <dougkwan@google.com>
8874
8875         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
8876         additional option file arm/eabi.opt.
8877         * config/arm/eabi.h (File): New configuration file for EABI targets.
8878         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
8879         SUBSUBTARGET_EXTRA_SPECS.
8880         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
8881         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
8882         from STARTFILE_SPEC so that it can be referenced in an override.
8883         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
8884         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
8885         can be referenced in an override.
8886         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
8887         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
8888         so that it can be referenced in an override.
8889         (LINK_SPEC): Use BPABI_LINK_SPEC.
8890         * config/arm/eabi.opt (File): New.
8891
8892 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8893
8894         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
8895         (FIXED_VALUE_H): New variable.
8896         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
8897         input.h, fixed-value.h.
8898         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
8899         (BASIC_BLOCK_H): Use $(BITMAP_H).
8900         (FUNCTION_H): Add varray.h.
8901         (IPA_REFERENCE_H): Use $(BITMAP_H).
8902         (CGRAPH_H): Add $(BASIC_BLOCK_H).
8903         (DF_H): Use $(BITMAP_H).
8904         (GGC_H): Add statistics.h.
8905         (INSN_ADDR_H): New.
8906         (INSN_ATTR_H): Use it.
8907         (SYSTEM_H): Add safe-ctype.h, filenames.h.
8908         (INPUT_H): New.
8909         (SYMTAB_H): Add $(OBSTACK_H).
8910         (CPP_INTERNAL_H): New.
8911         (TREE_DUMP_H): Add tree-pass.h.
8912         (TREE_FLOW_H): Use $(BITMAP_H)
8913         (PRETTY_PRINT_H): Use $(INPUT_H).
8914         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
8915         (GSTAB_H): New.
8916         (BITMAP_H): New.
8917         (many object files): Fix lots of header dependencies throughout.
8918
8919 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8920
8921         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
8922         New macros.
8923         (s-gtyp-input): Use them to write tmp-gi.list.
8924         (echo_to_gi.list): Remove.
8925
8926 2008-07-14  Richard Guenther  <rguenther@suse.de>
8927
8928         * tree-ssa-sccvn.c (pre_info): Remove.
8929         (switch_to_PRE_table): Likewise.
8930         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
8931         (set_hashtable_value_ids): Do not create value-ids for the
8932         optimistic tables.
8933         (run_scc_vn): Remove double test.  Remove bogus special-case
8934         in value-number printing.
8935         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
8936         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
8937         SSA_NAME_VALUE.
8938         * tree-flow-inline.h (get_value_handle): Remove.
8939         * tree-flow.h (get_value_handle): Remove.
8940
8941 2008-07-14  Martin Jambor  <mjambor@suse.cz>
8942
8943         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
8944         in which we generate arithmetics is not a subrange.
8945
8946 2008-07-14  Martin Jambor  <mjambor@suse.cz>
8947
8948         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
8949
8950 2008-07-14  Richard Guenther  <rguenther@suse.de>
8951
8952         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
8953
8954 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
8955
8956         PR target/36745
8957         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
8958         reload for symbol refs moved to r0 with -fPIC.
8959         (legitimize_pic_address): Use the target register as temporary
8960         reg if possible.
8961         (emit_symbolic_move): Adjust comment.
8962         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
8963         New expanders.
8964
8965 2008-07-14  Ben Elliston  <bje@au.ibm.com>
8966
8967         * c-common.h (C_CPP_HASHNODE): New macro.
8968         * coretypes.h (struct cpp_token): Forward declare.
8969         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
8970         the context-sensitive keyword method.
8971         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
8972         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
8973         expand_bool_pixel): New.
8974         (altivec_categorize_keyword): New function.
8975         (init_vector_keywords): New function.
8976         (rs6000_macro_to_expand): Likewise.
8977         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
8978         compiling an ISO C dialect.
8979
8980 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
8981
8982         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
8983         (create_expression_by_pieces): Fix typo.
8984         (do_regular_insertion): Use debug counter here too.
8985
8986 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
8987
8988         PR target/35492.
8989         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
8990         CONST_OK_FOR_LETTER_P.  All port-local users changed.
8991         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
8992         implement Kp matching power-of-two.
8993         (CONSTRAINT_LEN): Define to match.
8994         * config/cris/cris.md: Replace all use of constraint K with Kc.
8995         ("*btst*): Use Kp for operand 0 of last alternative.
8996
8997 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8998
8999         PR testsuite/36440
9000         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
9001         and quad formats.
9002
9003 2008-07-13  Jan Hubicka  <jh@suse.cz>
9004
9005         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
9006         to be mangled too.
9007
9008 2008-07-13  Richard Guenther  <rguenther@suse.de>
9009
9010         PR middle-end/36811
9011         * langhooks.c (lhd_print_error_function): Deal with recursive
9012         BLOCK trees.
9013
9014 2008-07-12  Jan Hubicka  <jh@suse.cz>
9015
9016         * cgraph.c (assembler_name_hash): New static var.
9017         (hash_node_by_assembler_name, eq_assembler_name): New.
9018         (cgraph_node_for_asm): Use hashtable.
9019         (cgraph_remove_node): Maintain hashtable.
9020         (change_decl_assembler_name): Sanity check that names are not changing
9021         after aliasing was processed.
9022         * cgraph.h (varpoon_node): Add next GGC marker.
9023         * tree.c (decl_assembler_name_equal): Constify.
9024         (decl_assembler_name_hash): New.
9025         * tree.h (decl_assembler_name_equal): Constify.
9026         (decl_assembler_name_hash): Update.
9027
9028 2008-07-12  David Daney  <ddaney@avtrex.com>
9029
9030         * config/mips/driver-native.c (host_detect_local_cpu): Handle
9031         sb1 and r5000 cpus.
9032
9033 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
9034
9035         * doc/md.texi: Document the MIPS "v" constraint.
9036         * config/mips/mips.h (reg_class): Revert last change.
9037         (REG_CLASS_NAMES): Likewise.
9038         (REG_CLASS_CONTENTS): Likewise.
9039         * config/mips/mips.c (mips_regno_to_class): Likewise.
9040         * config/mips/constraints.md (v): Likewise, but add documentation.
9041         Add a comment to say that this constraint should not be used in
9042         gcc code.
9043
9044 2008-07-11  DJ Delorie  <dj@redhat.com>
9045
9046         * config/h8300/h8300.md (length): Fix branch offset limit.
9047
9048 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
9049
9050         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
9051         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
9052         (avr_hard_regno_scratch_ok): New function.
9053         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
9054         * config/avr/avr.md (all peepholes that request a scratch register):
9055         Remove avr_peep2_scratch_safe use.
9056
9057 2008-07-11  Tom Tromey  <tromey@redhat.com>
9058             Ian Lance Taylor  <iant@google.com>
9059
9060         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
9061         (struct c_common_resword): Define.
9062         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
9063         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
9064         (c_common_reswords, num_c_common_reswords): Declare.
9065         * c-common.c (c_common_reswords): New global const array.
9066         (num_c_common_reswords): New const int.
9067         * c-parser.c (struct resword, reswords): Don't define.
9068         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
9069         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
9070         than reswords.  If warning about C++ keywords, give them a special
9071         RID code.
9072         (c_lex_one_token): Warn about C++ keywords.  Call
9073         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
9074         (c_parser_external_declaration): Look for RID_xxx rather than
9075         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
9076         (c_parser_statement_after_labels): Likewise.
9077         (c_parser_objc_class_instance_variables): Likewise.
9078         (c_parser_objc_class_declaration): Likewise.
9079         (c_parser_objc_try_catch_statement): Likewise.
9080         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
9081         (declspecs_add_type): Likewise.
9082
9083 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
9084
9085         * ggc-page.c (alloc_page):
9086         Substituting xmalloc, xcalloc with
9087         XNEWVEC and XCNEWVAR macros which add the
9088         needed casts.
9089
9090 2008-07-11  Richard Guenther  <rguenther@suse.de>
9091
9092         PR tree-optimization/36765
9093         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
9094         aliases from HEAP vars to SMTs.
9095
9096 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9097
9098         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
9099         * configure.ac (loose_warn): Move -Wc++-compat from here...
9100         (strict_warn): ...to here.
9101         * configure: Regenerate.
9102
9103 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
9104
9105         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
9106         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
9107         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
9108         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
9109         excluding more specific h8300-*-* and sh-*-* targets.
9110
9111 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
9112
9113         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
9114         (eliminate): Ditto.
9115         (execute_pre): Call loop_optimizer_finalize in early exit.
9116
9117 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
9118
9119         PR middle-end/36790
9120         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
9121         uids in the bitmap, not just VAR_DECL uids.
9122
9123         PR rtl-optimization/36419
9124         * combine-stack-adj.c (adjust_frame_related_expr): New function.
9125         (combine_stack_adjustments_for_block): Call it if needed.  Delete
9126         correct insn.
9127         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
9128         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
9129         prologue sp adjustment.
9130
9131 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
9132
9133         PR other/28322
9134         * opts.c (print_ignored_options): Report postponed diagnostics for
9135         unknown -Wno-* options as warnings, not errors.
9136         (postpone_unknown_option_error): Renamed to...
9137         (postpone_unknown_option_warning): ... this.
9138
9139 2008-07-09  Doug Kwan  <dougkwan@google.com>
9140
9141         Revert:
9142         2008-07-08  Doug Kwan  <dougkwan@google.com>
9143
9144         * config/arm/arm.opt (mandroid): New option.
9145         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
9146         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
9147         (CC1_SPEC): Same.
9148         (CC1PLUS_SPEC): Same.
9149         (LIB_SPEC): Same.
9150         (STARTFILE_SPEC): Same.
9151         (ENDFILE_SPEC): Same.
9152         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
9153         used.
9154
9155 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
9156
9157         PR target/35802
9158         * config/mips/mips.h (reg_class): Remove V1_REG.
9159         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
9160         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
9161         instead of V1_REGS.
9162         (mips_get_tp): New function.
9163         (mips_legitimize_tls_address): Use it.
9164         * config/mips/constraints.md (v): Delete.
9165         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
9166         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
9167         After reload, split into a move and ...
9168         (*tls_get_tp_<mode>_split): ...this new instruction.
9169
9170 2008-07-09  David Daney  <ddaney@avtrex.com>
9171
9172         * config/mips/driver-native.c: Include coretypes.h and tm.h.
9173
9174 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
9175
9176         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
9177         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
9178         Add c argument.
9179         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
9180         htab_delete should be called.  Don't free c.
9181         (lookup_tmp_var): Create temp_htab lazily.
9182         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
9183         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
9184         callers.
9185         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
9186         lower_omp_ordered, lower_omp_critical, lower_omp_for,
9187         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
9188         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
9189         * tree-sra.c (generate_element_init): Likewise.
9190         * tree-mudflap.c (execute_mudflap_function_ops,
9191         execute_mudflap_function_decls): Likewise.
9192         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
9193         * tree-gimple.h (struct gimplify_ctx): New type.
9194         (push_gimplify_context): Adjust prototype.
9195
9196 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
9197
9198         * tree-ssa-pre.c (phi_translate_1): Update placement of
9199         add_to_value calls.
9200
9201 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
9202
9203         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
9204         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
9205         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
9206         * targhooks.c (default_hard_regno_scratch_ok): New function.
9207         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
9208         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
9209         * recog.c:  Include "target.h".
9210         (peep2_find_free_register): Add check for global regs. Add target
9211         specific check.
9212         * Makefile.in (recog.o): Depend on target.h.
9213
9214 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
9215
9216         * config/sh/sh.c (sh_canonical_va_list_type): New.
9217         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
9218
9219 2008-07-09  Raksit Ashok <raksit@google.com>
9220
9221         * doc/invoke.texi (Option Summary): Mention new option
9222         -Wdisallowed-function-list=...
9223         (Warning Options): Document -Wdisallowed-function-list=...
9224         * common.opt (Wdisallowed-function-list=): New flag.
9225         * flags.h (warn_disallowed_functions): External definition of new
9226         boolean warning flag.
9227         (warn_if_disallowed_function_p): Declare new function.
9228         * opts.c (warning_disallowed_functions): New static variable.
9229         (warn_disallowed_functions): New boolean warning flag.
9230         (warn_if_disallowed_function_p): New function.
9231         (add_comma_separated_to_vector): Rename
9232         add_instrument_functions_exclude_list to this.
9233         (common_handle_option): Handle new option. Rename calls to
9234         add_instrument_functions_exclude_list into calls to
9235         add_comma_separated_to_vector.
9236         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
9237         based on flag warn_disallowed_functions.
9238
9239 2008-07-09  Christian Bruel  <christian.bruel@st.com>
9240
9241         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
9242          instead of get_attr_length.
9243
9244 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9245
9246         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
9247         keywords.
9248         * genemit.c (gen_insn): Likewise.
9249         * gengtype.c (note_def_vec): Likewise.
9250         * gengtype.h (note_def_vec): Likewise.
9251         * genoutput.c (struct data, output_insn_data, process_template,
9252         gen_expand, gen_split, note_constraint): Likewise.
9253         * genrecog.c (new_decision, add_to_sequence, factor_tests,
9254         make_insn_sequence): Likewise.
9255         * gensupport.c (record_insn_name): Likewise.
9256
9257 2008-07-08  Doug Kwan  <dougkwan@google.com>
9258
9259         * config/arm/arm.opt (mandroid): New option.
9260         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
9261         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
9262         (CC1_SPEC): Same.
9263         (CC1PLUS_SPEC): Same.
9264         (LIB_SPEC): Same.
9265         (STARTFILE_SPEC): Same.
9266         (ENDFILE_SPEC): Same.
9267         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
9268         used.
9269
9270 2008-07-08  Raksit Ashok  <raksit@google.com>
9271
9272         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
9273         (set_storage_via_setmem): Fix expected_align parameter.
9274         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
9275         missing from the list.
9276         * doc/md.texi (movmem): Explicitly state that expected alignment is
9277         to be expressed in bytes.
9278         (setmem): Explicitly state that expected alignment is to be expressed
9279         in bytes.
9280
9281 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
9282
9283         * reload.c (find_reloads_subreg_address): Do not require validity
9284         of address in original mode before reloading address.
9285
9286 2008-07-07  Tianwei Sheng  <tianweis@google.com>
9287
9288         * df-core.c (df_remove_problem): Adjust the access to avoid out of
9289         bounds array access.
9290
9291 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
9292
9293         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
9294
9295 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
9296
9297         Fix PR tree-optimization/23455
9298         Fix PR tree-optimization/35286
9299         Fix PR tree-optimization/35287
9300         * Makefile.in (OBJS-common): Remove tree-vn.o.
9301         (tree-vn.o): Remove.
9302         * dbgcnt.def: Add treepre_insert debug counter.
9303         * gcc/tree-flow.h (add_to_value): Updated for other changes.
9304         (debug_value_expressions): Ditto.
9305         (print_value_expressions): Ditto.
9306         * tree-pretty-print.c (dump_generic_node): Updated for
9307         VALUE_HANDLE removal.
9308         * tree-ssa-dom.c (record_equality): Ditto.
9309         (cprop_operand): Ditto.
9310         (lookup_avail_expr): Ditto.
9311         * tree-ssa-threadedge.c
9312         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
9313         (simplify_control_stmt_condition): Ditto.
9314         * tree.c (tree_code_size): Ditto.
9315         (tree_node_structure): Ditto.
9316         (iterative_hash_expr): Ditto.
9317         * tree.def: Ditto.
9318         * tree.h (VALUE_HANDLE_ID): Ditto.
9319         (VALUE_HANDLE_EXPR_SET): Ditto.
9320         (struct tree_value_handle): Ditto.
9321         (union tree_node): Ditto.
9322         * treestruct.def: Ditto.
9323         * tree-vn.c: Removed.
9324         * tree-ssa-pre.c: Rewritten entirely.
9325         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
9326         (constant_value_ids): Ditto.
9327         (vn_nary_op_t): Moved to header.
9328         (vn_phi_t): Ditto.
9329         (vn_reference_op_t): Ditto
9330         (vn_reference_t): Ditto.
9331         (next_value_id): New variable.
9332         (VN_INFO): Add an assert.
9333         (vn_constant_eq): New function.
9334         (vn_constant_hash): Ditto.
9335         (get_or_alloc_constant_value_id): Ditto.
9336         (value_id_constant_p): Ditto.
9337         (vn_reference_compute_hash): De-staticify.
9338         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
9339         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
9340         (valueize_refs): Update opcode if it changes from ssa name to constant.
9341         (vn_reference_lookup_1): Add new argument.
9342         (vn_reference_lookup):  Ditto.
9343         (vn_reference_lookup_pieces): New function.
9344         (vn_reference_insert): Add return type. Modify to deal with value ids.
9345         (vn_reference_insert_pieces):  New function.
9346         (vn_nary_op_compute_hash): De-staticify.
9347         (vn_nary_op_eq): Ditto.
9348         (vn_nary_op_lookup_pieces): New function.
9349         (vn_nary_op_lookup): Add new argument.
9350         (vn_nary_op_insert_pieces): New function.
9351         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
9352         (vn_phi_insert): Ditto.
9353         (visit_unary_op): Update for callee changes.
9354         (visit_binary_op): Ditto.
9355         (visit_reference_op_load): Ditto.
9356         (visit_reference_op_store): Ditto.
9357         (init_scc_vn): Init next_value_id, constant_to_value_id and
9358         constant_value_ids.
9359         (free_scc_vn): Free them.
9360         (set_hashtable_value_ids): New function.
9361         (run_scc_vn): Use it.
9362         (get_max_value_id): New function.
9363         (get_next_value_id): Ditto.
9364         (expressions_equal_p): Moved from tree-vn.c
9365         (sort_vuses): Ditto.
9366         (sort_vuses_heap): Ditto.
9367         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
9368         above).
9369         * tree.c (iterative_hash_hashval_t): Made non-static
9370         * tree.h (iterative_hash_hashval_t): Declare it.
9371
9372 2008-07-08  Martin Jambor  <mjambor@suse.cz>
9373
9374         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
9375         instead of ipa_create_node_params.
9376         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
9377         ipa_check_create_edge_args, free them with
9378         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
9379
9380         * ipa-prop.c: Include flags.h and tree-inline.h.
9381         (ipa_node_params_vector): New variable.
9382         (ipa_edge_args_vector): New variable.
9383         (edge_removal_hook_holder): New variable.
9384         (node_removal_hook_holder): New variable.
9385         (edge_duplication_hook_holder): New variable.
9386         (node_duplication_hook_holder): New variable.
9387         (ipa_detect_param_modifications): Check for presence of modified flags.
9388         (ipa_compute_jump_functions): Check for presence of jump functions.
9389         (ipa_free_edge_args_substructures): New function.
9390         (ipa_create_node_params): Removed.
9391         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
9392         (ipa_free_node_params_substructures): New function.
9393         (ipa_free_all_node_params): Changed to deallocate the on-the-side
9394         vector.
9395         (ipa_edge_removal_hook): New function.
9396         (ipa_node_removal_hook): New function.
9397         (duplicate_array): New function.
9398         (ipa_edge_duplication_hook): New function.
9399         (ipa_node_duplication_hook): New function.
9400         (ipa_register_cgraph_hooks): New function.
9401         (ipa_unregister_cgraph_hooks): New function.
9402         (free_all_ipa_structures_after_ipa_cp): New function.
9403
9404         * ipa-prop.h: Include vec.h.
9405         (ipa_node_params_t): New typedef with vector types for it.
9406         (ipa_edge_args_t):  New typedef with vector types for it.
9407         (IPA_NODE_REF): Changed to access an on-the-side vector.
9408         (IPA_EDGE_REF): Changed to access an on-the-side vector.
9409         (ipa_check_create_node_params): New function.
9410         (ipa_check_create_edge_args): New function.
9411
9412         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
9413         all users.
9414
9415 2008-07-07  Tom Tromey  <tromey@redhat.com>
9416
9417         * configure, config.in: Rebuilt.
9418         * configure.ac: Don't check for scandir or alphasort.
9419
9420 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
9421
9422         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
9423         types immediately after creating them.
9424
9425 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
9426
9427         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
9428
9429 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
9430
9431         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
9432         dump_constraint_graph.
9433         (dump_constraint_edge): New function.
9434         (dump_constraint_graph): New function.
9435         (debug_constraint_graph): New function.
9436         (dump_constraint): Removed useless comparison.
9437         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
9438         (dump_constraint_graph): Declare.
9439         (debug_constraint_graph): Declare.
9440         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
9441
9442 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
9443
9444         * config/i386/i386.c (is_va_list_char_pointer): New.
9445         (ix86_va_start): Replace compare with ms_va_list_type_node
9446         by is_va_list_char_pointer.
9447         (ix86_gimplify_va_arg): Likewise.
9448
9449 2008-07-07  Martin Jambor  <mjambor@suse.cz>
9450
9451         * cgraph.c (cgraph_edge_max_uid): New variable.
9452         (struct cgraph_edge_hook_list): New type.
9453         (struct cgraph_node_hook_list): New type.
9454         (struct cgraph_2edge_hook_list): New type.
9455         (struct cgraph_2node_hook_list): New type.
9456         (first_cgraph_edge_removal_hook): New variable.
9457         (first_cgraph_node_removal_hook): New variable.
9458         (first_cgraph_edge_duplicated_hook): New variable.
9459         (first_cgraph_node_duplicated_hook): New variable.
9460         (cgraph_add_edge_removal_hook): New function.
9461         (cgraph_remove_edge_removal_hook): New function.
9462         (cgraph_call_edge_removal_hooks):  New function.
9463         (cgraph_add_node_removal_hook):  New function.
9464         (cgraph_remove_node_removal_hook):  New function.
9465         (cgraph_call_node_removal_hooks):  New function.
9466         (cgraph_add_edge_duplication_hook):  New function.
9467         (cgraph_remove_edge_duplication_hook):  New function.
9468         (cgraph_call_edge_duplication_hooks):  New function.
9469         (cgraph_add_node_duplication_hook):  New function.
9470         (cgraph_remove_node_duplication_hook):  New function.
9471         (cgraph_call_node_duplication_hooks):  New function.
9472         (cgraph_create_edge): Assign to edge uid.
9473         (cgraph_remove_edge): Call edge removal hooks.
9474         (cgraph_node_remove_callees): Call edge removal hooks.
9475         (cgraph_node_remove_callers): Call edge removal hooks.
9476         (cgraph_remove_node): Call node removal hooks.
9477         (cgraph_clone_edge): Call edge duplication hooks.
9478         (cgraph_clone_node): Call node duplication hooks.
9479
9480         * cgraph.h (cgraph_edge): New field uid.
9481         (cgraph_edge_hook): New type.
9482         (cgraph_node_hook): New type.
9483         (cgraph_2edge_hook): New type.
9484         (cgraph_2node_hook): New type.
9485
9486 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
9487
9488         * config.in: Regenerate.
9489
9490 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
9491
9492         * gcc.c (print_sysroot): New.
9493         (option_map, display_help, process_command): Handle the
9494         -print-sysroot option.
9495         (main): Print the sysroot if requested.
9496         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
9497
9498 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9499
9500         PR target/34780
9501         * unwind-pe.h (size_of_encoded_value): add attribute unused.
9502
9503 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
9504
9505         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
9506         (assign_parm_setup_block_p): Also check mode of entry_parm.
9507
9508 2008-07-07  Richard Guenther  <rguenther@suse.de>
9509
9510         * tree-ssa-structalias.h (set_used_smts): Remove.
9511         * tree-ssa-structalias.c (used_smts): Likewise.
9512         (set_used_smts): Likewise.
9513         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
9514         call to set_used_smts.
9515
9516 2008-07-07  Richard Guenther  <rguenther@suse.de>
9517
9518         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
9519         (new_var_info): Set it to false.
9520         (solution_set_add): Correctly handle pointers outside a var and
9521         inside a field.
9522         (type_safe): Treat variables with is_full_var properly.
9523         (do_sd_constraint): Likewise.
9524         (do_ds_constraint): Likewise.
9525         (process_constraint): Remove zeroing offset for !use_field_sensitive.
9526         (get_constraint_for_ptr_offset): New function.
9527         (get_constraint_for_component_ref): For addresses at least include
9528         the last field of the variable.  Handle is_full_vars properly.
9529         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
9530         (handle_ptr_arith): Remove.
9531         (find_func_aliases): Simplify assignment handling.
9532         (create_function_info_for): For parameter and result varinfos set
9533         is_full_var flag.
9534         (create_variable_info_for): Set is_full_var flag whenever we
9535         just created a single varinfo for a decl.
9536         (init_alias_vars): Initialize use_field_sensitive from
9537         max-fields-for-field-sensitive parameter.
9538
9539 2008-07-07  Richard Guenther  <rguenther@suse.de>
9540
9541         PR tree-optimization/36713
9542         * tree-flow-inline.h (is_call_used): New function.
9543         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
9544         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
9545         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
9546
9547 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
9548
9549         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
9550
9551 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
9552
9553         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
9554
9555 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
9556             Nathan Sidwell  <nathan@codesourcery.com>
9557
9558         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
9559         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
9560         tmake_file.
9561         * config/m68k/t-linux: New.
9562         * doc/install.texi: Document m68k-*-linux is now multilibbed by
9563         default.
9564
9565 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
9566
9567         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
9568         * config/m68k/m68k-devices.def: Remove multilibs that only differ
9569         by MAC/EMAC.
9570
9571 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9572
9573         * gcc.c (execute): Fix -Wc++-compat warning.
9574
9575 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
9576
9577         PR target/36720
9578         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
9579         constant for little endian.
9580
9581 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
9582
9583         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
9584         mips_base_mips16 instead of TARGET_MIPS16.
9585         (mips_base_mips16): Declare.
9586         * config/mips/mips.c (mips_base_mips16): Make global.
9587         (was_mips16_p): Remove GTY marker.
9588         (was_mips16_pch_p): New variable.
9589         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
9590         (mips_override_options): Force to non-MIPS16 mode initially.
9591         Do not complain about MIPS16 PIC incompatibilities here.
9592         Only allow -mgpopt if -mexplicit-relocs is in force for
9593         non-MIPS16 code.
9594
9595 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
9596
9597         * configure.ac: Check for caddr_t, define to char * if not defined.
9598         * configure: Regenerate.
9599         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
9600         (mmap_gt_pch_use_address): Likewise.
9601         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
9602
9603 2008-07-06  Richard Guenther  <rguenther@suse.de>
9604
9605         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
9606         (new_var_info): Deal with it.
9607         (solution_set_add): Likewise.
9608         (bitpos_of_field): Make signed, fix.
9609         (struct fieldoff): Remove type and decl fields.  Make size field
9610         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
9611         flags.
9612         (fieldoff_compare): Deal with it.
9613         (push_fields_onto_fieldstack): Remove has_union argument, glob
9614         adjacent non-pointer fields together.
9615         (create_function_info_for): Do not set has_union.
9616         (create_variable_info_for): Simplify.
9617
9618 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
9619
9620         * config.gcc (extra_headers): Add cross-stdarg.h for target
9621         x86_64-*-* and i?86-*-*.
9622         * config/i386/cross-stdarg.h: New.
9623         * builtins.c (std_fn_abi_va_list): New.
9624         (std_canonical_va_list_type): New.
9625         (stabilize_va_list): Replace va_list_type_node use by
9626         mtarget.canonical_va_list_type.
9627         (gimplify_va_arg_expr): Likewise.
9628         (expand_builtin_va_copy): Replace va_list_type_node use by
9629         mtarget.fn_abi_va_list.
9630         * tree-sra.c (is_va_list_type): New helper.
9631         (decl_can_be_decomposed_p): Replace
9632         va_list_type_node use by is_va_list_type.
9633         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
9634         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9635         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
9636         * config/i386/i386-protos.h (ix86_get_valist_type): New.
9637         (ix86_enum_va_list): New.
9638         * config/i386/i386.c (sysv_va_list_type_node): New.
9639         (ms_va_list_type_node): New.
9640         (ix86_function_type_abi): Remove sorry.
9641         (ix86_build_builtin_va_list_abi): New.
9642         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
9643         for 64-bit targets.
9644         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
9645         (ix86_init_builtins_va_builtins_abi): New.
9646         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
9647         for 64-bit targets.
9648         (ix86_handle_abi_attribute): New.
9649         (attribute_spec): Add sysv_abi and ms_abi.
9650         (ix86_fn_abi_va_list): New.
9651         (ix86_canonical_va_list_type): New.
9652         (ix86_enum_va_list): New.
9653         (TARGET_FN_ABI_VA_LIST): New.
9654         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9655         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
9656         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
9657         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9658         (TARGET_ENUM_VA_LIST): New.
9659         * expr.h (std_fn_abi_va_list): New.
9660         (std_canonical_va_list_type): New.
9661         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
9662         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9663         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
9664         TARGET_CANONICAL_VA_LIST_TYPE.
9665         * target.h (struct gcc_target): Add fn_abi_va_list hook
9666         and canonical_va_list_type hook.
9667
9668 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9669
9670         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
9671         integral and pointer types.
9672
9673 2008-07-04  Roger Sayle  <roger@eyesopen.com>
9674
9675         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
9676         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
9677
9678 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
9679
9680         PR target/36684
9681         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
9682
9683 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
9684
9685         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
9686         build_gimple_modify_stmt.
9687         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
9688         gimple operand.  Use fold_build* instead of build*.
9689
9690 2008-07-04  Richard Guenther  <rguenther@suse.de>
9691
9692         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
9693         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
9694         properly to compute the reachability set if we do field-sensitive PTA.
9695         * invoke.texi (max-fields-for-field-sensitive): Document default.
9696         * opts.c (decode_options): Set max-fields-for-field-sensitive to
9697         100 for optimize >= 2.
9698
9699 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9700
9701         * ggc-zone.c (lookup_page_table_if_allocated,
9702         set_page_table_entry, zone_find_object_size, alloc_small_page,
9703         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
9704         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
9705         -Wc++-compat and/or -Wcast-qual warnings.
9706
9707 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
9708
9709         PR target/36634
9710         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
9711         pic_offset_table_rtx to be marked as used here.
9712         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
9713         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
9714         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
9715         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
9716         !TARGET_SECURE_PLT.
9717
9718 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9719
9720         * alloc-pool.c (hash_descriptor, eq_descriptor,
9721         alloc_pool_descriptor): Fix -Wc++-compat warnings.
9722         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
9723         Likewise.
9724         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
9725         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
9726         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
9727         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
9728         Likewise.
9729
9730 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
9731
9732         * tree-flow.h (loop_only_exit_p): Declare.
9733         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
9734         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
9735         the number of iterations if it is constant.  Otherwise, if this is the
9736         only possible exit of the loop, use the conservative estimate on the
9737         number of iterations of the entire loop if available.
9738
9739 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
9740
9741         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
9742         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
9743         Add synchronization functions.
9744         * config/sync.c: New file.
9745         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
9746         (LIBGCC_SYNC_CFLAGS): Likewise.
9747
9748 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
9749
9750         PR target/36710
9751         * config/i386/i386.md (mode): Add TF to "mode" attribute.
9752         (*pushtf_sse): New insn pattern.
9753         (pushtf splitters): New splitters.
9754
9755 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
9756
9757         PR middle-end/35736
9758         * predict.c (build_predict_expr): Use void_type_node for the tree
9759         type, instead of NULL_TREE.
9760
9761 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
9762
9763         * config/i386/i386.c (contains_aligned_value_p): Return true
9764         for TCmode.
9765         (ix86_data_alignment): Align TCmode to 128bits.
9766         (ix86_local_alignment): Likewise.
9767
9768 2008-07-03  Andrew Haley  <aph@redhat.com>
9769
9770         PR bootstrap/33304
9771         * vec.h (VEC_TA): New.
9772         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
9773         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
9774         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
9775         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
9776         (C_COMMON_FIXED_TYPES): Remove first arg.
9777         (C_COMMON_FIXED_MODE_TYPES): Likewise.
9778         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
9779         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
9780         not to use empty macro arguments.
9781
9782 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
9783
9784         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
9785         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
9786         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
9787         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
9788         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
9789         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
9790         config/ia64/crtn.asm, config/m68hc11/larith.asm,
9791         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
9792         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
9793         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
9794         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
9795         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
9796         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
9797         config/rs6000/e500crtres64gpr.asm,
9798         config/rs6000/e500crtres64gprctr.asm,
9799         config/rs6000/e500crtrest32gpr.asm,
9800         config/rs6000/e500crtrest64gpr.asm,
9801         config/rs6000/e500crtresx32gpr.asm,
9802         config/rs6000/e500crtresx64gpr.asm,
9803         config/rs6000/e500crtsav32gpr.asm,
9804         config/rs6000/e500crtsav64gpr.asm,
9805         config/rs6000/e500crtsav64gprctr.asm,
9806         config/rs6000/e500crtsavg32gpr.asm,
9807         config/rs6000/e500crtsavg64gpr.asm,
9808         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
9809         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
9810         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
9811         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
9812         config/sparc/sol2-cn.asm: Remove .file directives.
9813
9814 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
9815
9816         * resource.c (mark_referenced_resources): Look inside
9817         UNSPEC_VOLATILEs and ASM_INPUTs.
9818
9819 2008-07-02  Ian Lance Taylor  <iant@google.com>
9820
9821         * rtlanal.c (add_reg_note): New function.
9822         * rtl.h (add_reg_note): Declare.
9823         * auto-inc-dec.c (attempt_change): Use add_reg_note.
9824         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
9825         * builtins.c (expand_builtin_longjmp): Likewise.
9826         (expand_builtin_nonlocal_goto): Likewise.
9827         * calls.c (emit_call_1, expand_call): Likewise.
9828         * cfgexpand.c (add_reg_br_prob_note): Likewise.
9829         * cfglayout.c (fixup_reorder_chain): Likewise.
9830         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
9831         (commit_one_edge_insertion): Likewise.
9832         * combine.c (move_deaths, distribute_notes): Likewise.
9833         * df-problems.c (df_set_note): Likewise.
9834         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
9835         (set_unique_reg_note): Likewise.
9836         (emit_copy_of_insn_after): Likewise.
9837         * expr.c (expand_expr_real): Likewise.
9838         * gcse.c (add_label_notes): Likewise.
9839         * haifa-sched.c (create_check_block_twin): Likewise.
9840         * jump.c (mark_jump_label_1): Likewise.
9841         * loop-doloop.c (add_test, doloop_modify): Likewise.
9842         * loop-unswitch.c (compare_and_jump_seq): Likewise.
9843         * lower-subreg.c (move_eh_region_note): Likewise.
9844         * optabs.c (emit_libcall_block): Likewise.
9845         * predict.c (predict_insn): Likewise.
9846         (combine_predictions_for_insn): Likewise.
9847         * recog.c (peephole2_optimize): Likewise.
9848         * regmove.c (try_auto_increment): Likewise.
9849         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
9850         * reload.c (find_reloads): Likewise.
9851         * reload1.c (fixup_eh_region_note): Likewise.
9852         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
9853         * reorg.c (delete_prior_computation): Likewise.
9854         (delete_computation, dbr_schedule): Likewise.
9855         * config/pa/pa.c (legitimize_pic_address): Likewise.
9856         * config/sh/sh.c (sh_reorg): Likewise.
9857
9858 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
9859
9860         PR target/36669
9861         * config/libgcc-glibc.ver: Add %exclude.
9862         * config/m32r/libgcc-glibc.ver: Likwise.
9863         * config/s390/libgcc-glibc.ver: Likwise.
9864         * config/sh/libgcc-glibc.ver: Likwise.
9865         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
9866
9867         * config/i386/libgcc-glibc.ver: New.
9868
9869         * config/i386/libgcc-x86_64-glibc.ver: Removed.
9870
9871 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
9872
9873         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
9874         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
9875         i[34567]86-*-linux*, x86_64-*-linux*.  Add
9876         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
9877         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
9878         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
9879         i[34567]86-*-linux*, x86_64-*-linux*.
9880
9881         * libgcc-std.ver: Add empty GCC_4.4.0.
9882
9883         * mkmap-symver.awk: Support multiple versions per symbol.
9884
9885         * config/i386/i386.c (ix86_init_builtins): Always define
9886         __builtin_fabsq and __builtin_copysignq with fallbacks.
9887         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
9888         and __builtin_copysignq if SSE2 isn't available.
9889
9890         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
9891         (LIBGCC2_TF_CEXT): Likwise.
9892         (TF_SIZE): Likwise.
9893
9894         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
9895
9896         * config/i386/sfp-machine.h: Moved to libgcc.
9897
9898         * config/i386/sfp-machine.h: New.
9899         * config/i386/t-linux: Likwise.
9900
9901         * config/i386/t-darwin: Remove softfp_wrap_start and
9902         softfp_wrap_end.
9903         * config/i386/t-darwin64: Likewise.
9904
9905         * config/i386/t-fprules-softfp64: Renamed to ...
9906         * config/i386/t-fprules-softfp: This.
9907
9908         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
9909         and softfp_wrap_end.
9910
9911 2008-07-02  Jason Merrill  <jason@redhat.com>
9912
9913         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
9914
9915         * tree.c (ctor_to_list): New fn.
9916         * tree.h: Declare it.
9917         (CONSTRUCTOR_ELT): New macro.
9918         (CONSTRUCTOR_NELTS): New macro.
9919
9920 2008-07-02  Richard Guenther  <rguenther@suse.de>
9921
9922         * tree-ssa-structalias.c (struct variable_info): Reorder
9923         to fill padding on 64bit hosts.  Make collapsed_to an int.
9924         (get_varinfo_fc): Deal with that.
9925         (new_var_info): Likewise.
9926         (collapse_rest_of_var): Likewise.
9927
9928 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
9929
9930         * doc/install.texi (--enable-java-home): Document.
9931         (--enable-aot-compile-rpm): Likewise.
9932         (--with-arch-directory): Likewise.
9933         (--with-os-directory): Likewise.
9934         (--with-origin-name): Likewise.
9935         (--with-arch-suffix): Likewise.
9936         (--with-jvm-root-dir): Likewise.
9937         (--with-jvm-jar-dir): Likewise.
9938         (--with-python-dir): Likewise.
9939
9940 2008-07-02  Richard Guenther  <rguenther@suse.de>
9941
9942         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
9943         from decls explicitly.  Merge operand checking from tuples.
9944
9945 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9946
9947         * tree-switch-conversion.c: Included timevar.h which I forgot before.
9948
9949 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9950
9951         * tree-switch-conversion.c: Included timevar.h
9952         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
9953
9954         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
9955
9956 2008-07-02  Martin Jambor  <mjambor@suse.cz>
9957
9958         * tree-switch-conversion.c: Corrected various comments and
9959         whitespace issues
9960         (build_constructors): Fixed minor formatting mistakes.
9961
9962         * invoke.texi (Optimize Options): Corrected the
9963         switch-conversion-max-branch-ratio parameter.
9964
9965 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
9966
9967         * final.c (asm_insn_count): Return zero for an empty asm body.
9968
9969 2008-07-02  Richard Guenther  <rguenther@suse.de>
9970
9971         * bitmap.h (bitmap_set_bit): Return bool.
9972         (bitmap_clear_bit): Likewise.
9973         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
9974         write to the bitmap if it would.
9975         (bitmap_clear_bit): Likewise.
9976         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
9977         bitmap_set_bit return value.
9978         (add_pred_graph_edge): Likewise.
9979         (add_graph_edge): Likewise.
9980         (do_sd_constraint): Likewise.
9981         (do_ds_constraint): Likewise.
9982
9983 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9984
9985         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
9986         Fix -Wc++-compat and/or -Wcast-qual warnings.
9987         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
9988         gen_regparm_prefix): Likewise.
9989         * vmsdbgout.c (write_modbeg, lookup_filename,
9990         vmsdbgout_source_line, vmsdbgout_init): Likewise.
9991
9992 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
9993
9994         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
9995         defaults.h definition apply.
9996
9997 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
9998
9999         * function.c (assign_parm_remove_parallels): New.
10000         (assign_parm_setup_block_p): Do not return true for non-BLKmode
10001         PARALLELs.
10002         (assign_parm_setup_block): Do not handle them.
10003         (assign_parm_setup_reg, assign_parm_setup_stack): Call
10004         assign_parm_remove_parallels.
10005
10006 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
10007
10008         * c-typeck.c (convert_for_assignment): Use
10009         vector_targets_convertible_p.
10010         * c-common.c (vector_targets_convertible_p): New.
10011         * c-common.h (vector_targets_convertible_p): New prototype.
10012         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
10013         opaque_p_V2SI_type_node.
10014
10015 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
10016
10017         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
10018         RFmode constants.
10019
10020 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
10021
10022         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
10023         TFmode constants via two element DImode vector for hosts with
10024         HOST_BITS_PER_WIDE_INT < 64.
10025         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
10026         also for HOST_BITS_PER_WIDE_INT < 64.
10027
10028 2008-07-01  Richard Guenther  <rguenther@suse.de>
10029
10030         PR tree-optimization/36666
10031         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
10032         (get_constraint_exp_from_ssa_var): Split into ...
10033         (get_constraint_exp_for_temp): ... this ...
10034         (get_constraint_for_ssa_var): ... and that.
10035         Return constraint expressions for all touched sub-fields
10036         if the results address is not taken.
10037         (process_constraint): Remove assertion that aggregate
10038         assignments do not happen at this place.
10039         (get_constraint_for_component_ref): Add address_p argument.
10040         Return constraint expressions for all touched sub-fields
10041         if the results address is not taken.
10042         (do_deref): Use get_constraint_exp_for_temp.
10043         (get_constraint_for_1): Rename from ...
10044         (get_constraint_for): ... this.  Add the old function as wrapper.
10045         (do_structure_copy): Use get_constraint_for_1.
10046
10047 2008-07-01  Martin Jambor  <mjambor@suse.cz>
10048
10049         * Makefile.in (tree-switch-conversion.o): Add.
10050         (OBJS-common): Add tree-swtch-conversion.o.
10051         * passes.c (init_optimization_passes): Add pass_convert_switch.
10052         * tree-pass.h: (pass_convert_switch): Add.
10053         * tree-switch-conversion.c: New file.
10054         * gcc.dg/tree-ssa/cswtch.c: New testcase.
10055         * common.opt (ftree-cswtch): New option.
10056         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
10057         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
10058         * opts.c (decode_options): Set flag_tree_switch_conversion when
10059         optimization level is >= 2.
10060         * doc/invoke.texi (Optimize Options): Added description of
10061         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
10062
10063 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10064
10065         * config/darwin-driver.c (darwin_default_min_version): Fix
10066         -Wc++-compat warnings.
10067
10068 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
10069
10070         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
10071         of operand 0.
10072
10073 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
10074
10075         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
10076
10077 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
10078
10079         PR rtl-optimization/34744
10080         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
10081         (df_scan_free_internal): Free data structures not
10082         allocated in storage pools.
10083         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
10084         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
10085         df_scan_free_mws_vec.
10086         * dse.c (dse_step6): Free offset_map_p and offset_map_n
10087         unconditionally.
10088
10089 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
10090
10091         * config/i386/i386.c (contains_aligned_value_p): Return true
10092         for __float128.
10093         (ix86_function_arg_boundary): Return its natural boundary
10094         for __float128.
10095         (return_in_memory_32): Don't check TDmode.
10096         (ix86_split_to_parts): Support splitting into 4 parts and
10097         support TFmode for 32bit target.
10098         (ix86_split_long_move): Support splitting into 4 parts.
10099         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
10100         for SSE2.
10101         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
10102         (ix86_init_builtins): Here.
10103         (ix86_scalar_mode_supported_p): Always return true for TFmode.
10104         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
10105         'q' and 'w', respectively.
10106
10107         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
10108         TARGET_64BIT.
10109         (movtf_internal): Likewise.
10110         (<code>tf2): Likewise.
10111         (*absnegtf2_sse): Likewise.
10112         (copysign<mode>3): Likewise.
10113         (copysign<mode>3_const): Likewise.
10114         (copysign<mode>3_var): Likewise.
10115         (define_split UNSPEC_COPYSIGN): Likewise.
10116         * config/i386/sse.md (*nandtf3): Likewise.
10117         (<code>tf3): Likewise.
10118         (*<code>tf3): Likewise.
10119
10120 2008-06-30  Joey Ye  <joey.ye@intel.com>
10121             H.J. Lu  <hongjiu.lu@intel.com>
10122
10123         * global.c (compute_regsets): Set frame_pointer_needed here.
10124         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
10125
10126 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
10127
10128         * doc/install.texi (specific): Expand Windows build notes.
10129
10130 2008-06-30  Ira Rosen  <irar@il.ibm.com>
10131
10132         PR tree-optimization/36648
10133         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
10134         number of prolog iterations by step. Fix the comment.
10135
10136 2008-06-30  Richard Guenther  <rguenther@suse.de>
10137
10138         PR middle-end/36671
10139         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
10140         handle calls from ECF_MALLOC functions.
10141         (handle_pure_call): ECF_MALLOC functions do not return
10142         call-used memory.
10143         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
10144
10145 2008-06-29  Andreas Schwab  <schwab@suse.de>
10146
10147         * config/m68k/m68k.c (print_operand): Always print a float
10148         constant in hex.
10149         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
10150         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
10151         Remove macros.
10152
10153         * config/rs6000/x-linux64: Remove never used file.
10154
10155 2008-06-29  Richard Guenther  <rguenther@suse.de>
10156
10157         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
10158         prototype.
10159         (struct alias_info): Move ...
10160         * tree-ssa-alias.c: ... here.
10161         (update_alias_info): Declare.
10162         (compute_may_aliases): Call it.
10163         (update_alias_info): New function.
10164         * tree-ssa-structalias.c (update_alias_info): Move ...
10165         * tree-ssa-alias.c (update_alias_info_1): ... here.
10166         * tree-ssa-structalias.c (process_constraint_1): Remove
10167         unused from_call argument.  Rename to ...
10168         (process_constraint): ... this.  Delete old wrapper.
10169         (make_constraint_to): Adjust callers.
10170         (handle_const_call): Likewise.
10171         (handle_pure_call): Likewise.
10172         (init_base_vars): Likewise.
10173         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
10174         (find_func_aliases): We don't need structure copies for
10175         complex types.
10176         (make_constraint_from_anything): Remove.
10177         (create_variable_info_for): For globals make constraints
10178         from escaped, not from anything.
10179         (compute_points_to_sets): Do not call update_alias_info.
10180         (ipa_pta_execute): Use make_constraint_from.
10181
10182 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10183
10184         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
10185         (bitmap.o-warn, dominance.o-warn): New.
10186         * configure.ac (cxx_compat_warn): Delete.
10187         (loose_warn): Add -Wcast-qual and -Wc++-compat.
10188         * system.h: Remove #pragma diagnostic for -Wcast-qual and
10189         -Wc++-compat.
10190         * configure: Regenerate.
10191
10192         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
10193         warnings.
10194
10195 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10196
10197         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
10198         * df-scan.c (df_notes_rescan): Likewise.
10199         * ggc-page.c (set_page_table_entry): Likewise.
10200         * intl.c (gcc_gettext_width): Likewise.
10201         * varasm.c (get_unnamed_section, get_noswitch_section,
10202         get_section): Likewise.
10203
10204 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
10205
10206         * regrename.c (build_def_use): Don't copy RTX.
10207
10208 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
10209
10210         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
10211         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
10212         punctuation.  Use @ref instead of @xref.
10213         (Function Names): Remove stray @display/@end display.
10214         (C++ Attributes): Use @ref instead of @xref.
10215         (Deprecated Features): Fix punctuation around @xref.
10216         (Backwards Compatibility): Likewise.
10217         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
10218
10219 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
10220
10221         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
10222         constants for E500 double.
10223
10224 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10225
10226         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
10227         element type of const_vector.
10228
10229 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
10230
10231         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
10232         Remove FLAGS_REG clobber from expander pattern.
10233         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
10234         (anddi3, andsi3, andhi3, andqi3): Ditto.
10235         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
10236         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
10237         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
10238         (ashlsi3, ashlhi3, ashlqi3): Ditto.
10239         (ashrsi3, ashrhi3, ashrqi3): Ditto.
10240         (lshrsi3, lshrhi3, lshrqi3): Ditto.
10241         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
10242         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
10243
10244 2008-06-28  Richard Guenther  <rguenther@suse.de>
10245
10246         * tree-ssa-structalias.c (callused_id, var_callused,
10247         callused_tree): Add.
10248         (handle_pure_call): New function.
10249         (find_func_aliases): Call it.
10250         (find_what_p_points_to): Handle the call-used set.
10251         (clobber_what_escaped): Likewise.
10252         (compute_call_used_vars): New function.
10253         (init_base_vars): Init the call-used variable.
10254         (do_sd_constraint): Do not propagate the solution from CALLUSED
10255         but use CALLUSED as a placeholder.
10256         (solve_graph): Likewise.
10257         * tree-flow-inline.h (gimple_call_used_vars): New function.
10258         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
10259         (compute_call_used_vars): Declare.
10260         * tree-ssa-alias.c (set_initial_properties): Call
10261         compute_call_used_vars.
10262         (reset_alias_info): Clear call-used variables.
10263         (add_call_clobber_ops): Assert we are not called for const/pure
10264         functions.  Remove handling of them.
10265         (add_call_read_ops): Handle pure functions by adding the
10266         call-used set of variables as VUSEs.
10267         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
10268         (delete_tree_ssa): Free it.
10269         * tree-dfa.c (remove_referenced_var): Clear the var from the
10270         call-used bitmap.
10271
10272 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
10273
10274         * tree.c (build_varargs_function_type_list): New.
10275         (build_function_type_list_1): New.
10276         (build_function_type_list): Use build_function_type_list_1.
10277         * tree.h (build_varargs_function_type_list): New.
10278
10279 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10280
10281         PR target/34856
10282         * config/spu/spu.c (spu_builtin_splats): Do not generate
10283         invalid CONST_VECTOR expressions.
10284         (spu_expand_vector_init): Likewise.
10285
10286 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
10287
10288         * optabs.c (libfunc_decls): New variable.
10289         (libfunc_decl_hash, libfunc_decl_eq): New functions.
10290         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
10291         for the same function twice.
10292
10293 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
10294
10295         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
10296         ix86_expand_binary_operator directly.
10297         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
10298         for operand 2.
10299         (*ashrti3_1): Ditto.
10300         (*lshrti3_1): Ditto.
10301         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
10302         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
10303         using only one splitter.  Conditionaly execute splitter before or
10304         after peephole2 pass.
10305         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
10306         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
10307         Use only one alternative in asm template.
10308         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
10309         in asm template.
10310         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
10311         "J" operand constraint for operand 2.
10312         (*ashldi3_cconly_rex64): Ditto.
10313         (*ashrdi3_cmp_rex64): Ditto.
10314         (*ashrdi3_cconly_rex64): Ditto.
10315         (*lshrdi3_cmp_rex64): Ditto.
10316         (*lshrdi3_cconly_rex64): Ditto.
10317         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
10318         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
10319         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
10320         gen_x86_shrd_1.
10321
10322 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
10323
10324         * gimplify.c (omp_is_private): Don't return true if decl is not
10325         already private on #pragma omp for or #pragma omp parallel for.
10326
10327         PR debug/36617
10328         * tree-cfg.c (struct move_stmt_d): Replace block field with
10329         orig_block and new_block fields.
10330         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
10331         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
10332         (move_block_to_fn): Replace vars_map and new_label_map arguments
10333         with struct move_stmt_d pointer.
10334         (replace_block_vars_by_duplicates): New function.
10335         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
10336         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
10337         all subblocks of ORIG_BLOCK to the new function.  Call
10338         replace_block_vars_by_duplicates.
10339         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
10340         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
10341         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
10342         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
10343         (expand_omp): Temporarily set input_location to the location of
10344         region's controlling stmt.
10345         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
10346         BIND_EXPR, push ctx->block_vars and gimplification vars into
10347         the BIND_EXPR and its block's BLOCK_VARS instead of directly
10348         into dest function.
10349         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
10350         there are any BLOCK_VARS.
10351         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
10352         OMP_PARALLEL or OMP_TASK stmt.
10353         (lower_omp): Save and restore input_location around the lower_omp_1
10354         call.
10355
10356 2008-06-27  Richard Guenther  <rguenther@suse.de>
10357
10358         PR tree-optimization/36400
10359         PR tree-optimization/36373
10360         PR tree-optimization/36344
10361         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
10362         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
10363         (update_alias_info): Remove call clobbering code.
10364         (make_constraint_to): New helper function.
10365         (make_escape_constraint): Likewise.
10366         (handle_rhs_call): Use it on all pointer containing arguments.
10367         Also mark the static chain escaped.
10368         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
10369         instead of ANYTHING.
10370         (make_constraint_from): New helper split out from ...
10371         (make_constraint_from_anything): ... here.
10372         (find_func_aliases): Add constraints for escape sites.
10373         (intra_create_variable_infos): Make constraints from NONLOCAL
10374         for parameters.
10375         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
10376         as ANYTHING.
10377         (clobber_what_p_points_to): Remove.
10378         (clobber_what_escaped): New function.
10379         (init_base_vars): Init NONLOCAL and ESCAPED.
10380         (do_sd_constraint): Do not propagate the solution from ESCAPED
10381         but use ESCAPED as a placeholder.
10382         (solve_graph): Likewise.
10383         * tree-flow.h (clobber_what_p_points_to): Remove.
10384         (clobber_what_escaped): Declare.
10385         * tree-ssa-alias.c (set_initial_properties): Call it.
10386         Remove code clobbering escaped pointers.
10387
10388 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
10389
10390         * function.c (allocate_struct_function): Only allocate a unique
10391         funcdef_no if the decl is nonzero.
10392
10393 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
10394
10395         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
10396         * config/mips/mips.c (mips_split_const_insns): New function.
10397         * config/mips/mips.md (move_type): New attribute.
10398         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
10399         (dword_mode): New attribute.
10400         (type): Avoid long line.  Map "move_type"s to "type"s,
10401         choosing "multi" for doubleword moves if appropriate.
10402         Swap MTC/MFC comments to match their declaration order.
10403         (extended_mips16): Default to "yes" if "move_type" is "sll0",
10404         "type" is "branch" or "jal" is "direct".
10405         (length): Handle "extended_mips16" first.  Make the default
10406         "0" for "ghost" instructions.  Set the length from "move_type".
10407         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
10408         of "type", with "sll0" for the register alternative.  Remove the
10409         "extended_mips16" attribute.
10410         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
10411         of "type", with "shift_shift" for the register alternative.
10412         Remove the "length" attribute.
10413         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
10414         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
10415         of "type", with "andi" for the register alternative.
10416         (*zero_extendqihi2): Likewise.
10417         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
10418         of "andi" instead of a "type" of "arith".
10419         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
10420         instead of "type".
10421         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
10422         (mov_<store>r, *mov<mode>_ra): Likewise.
10423         (extendsidi2): Use "move_type" instead of "type", with "move"
10424         for the register alternative.
10425         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
10426         of "type", with "signext" for the register alternative.
10427         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
10428         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
10429         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
10430         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
10431         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
10432         (unnamed branch insn): Likewise.
10433         (*movdi_gp32_fp64): Fold into...
10434         (*movdi_32bit): ...here.
10435         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
10436         (*movdf_hardfloat): ...this new pattern.
10437         (*movdf_softfloat): Remove redundant FPR alternatives.
10438         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
10439         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
10440         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
10441         the "move" attribute.
10442         (*movdi_32bit): Use "move_type" instead of "type" and remove the
10443         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
10444         and "store" for COP loads and stores.
10445         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
10446         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
10447         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
10448         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
10449         (*movtf_mips16, *movv2sf): Likewise.
10450         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
10451         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
10452         (mfhc1<mode>): Use "move_type" instead of "move".
10453         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
10454         (loadgp_blockage): Remove the "length" attribute.
10455         (blockage, set_got_version, update_got_version): Likewise.
10456         (call_internal): Remove the "extended_mips16" attribute.
10457         (call_value_internal, call_value_multiple_internal): Likewise.
10458         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
10459         instead of "move".
10460         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
10461         the "length" attribute.
10462
10463 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10464
10465         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
10466         -Wcast-qual warnings.
10467         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
10468         handle_pragma_pop_macro): Likewise.
10469         * collect2.c (resolve_lib_name): Likewise.
10470         * config/arc/arc.c (arc_init): Likewise.
10471         * config/arm/arm.c (neon_builtin_compare,
10472         locate_neon_builtin_icode): Likewise.
10473         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
10474         * config/bfin/bfin.c (bfin_init_machine_status,
10475         bfin_optimize_loop): Likewise.
10476         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
10477         * config/cris/cris.c (cris_init_expanders): Likewise.
10478         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
10479         * config/darwin.c (machopic_indirection_eq,
10480         machopic_indirection_name, machopic_output_indirection): Likewise.
10481         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
10482         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
10483         frv_optimize_membar): Likewise.
10484         * config/i386/cygwin.h (mingw_scan,
10485         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
10486         * config/i386/cygwin1.c (mingw_scan): Likewise.
10487         * config/i386/i386.c (machopic_output_stub): Likewise.
10488         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
10489         i386_pe_unique_section): Likewise.
10490         * config/ia64/ia64.c (ia64_init_machine_status,
10491         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
10492         Likewise.
10493         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
10494         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
10495         * config/m68k/m68k.c (m68k_handle_option,
10496         m68k_sched_md_init_global): Likewise.
10497         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
10498         mcore_unique_section): Likewise.
10499         * config/mips/mips.c (mips_block_move_straight,
10500         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
10501         Likewise.
10502         * config/mmix/mmix.c (mmix_init_machine_status,
10503         mmix_encode_section_info): Likewise.
10504         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
10505         * config/rs6000/rs6000.c (rs6000_init_machine_status,
10506         print_operand_address, output_toc, redefine_groups,
10507         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
10508         * config/s390/s390.c (s390_init_machine_status): Likewise.
10509         * config/score/score.c (score_block_move_straight,
10510         score_block_move_loop_body): Likewise.
10511         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
10512         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
10513         * emit-rtl.c (find_auto_inc): Likewise.
10514         * gcc.c (translate_options, process_command): Likewise.
10515         * reorg.c (dbr_schedule): Likewise.
10516         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
10517         * xcoffout.c (xcoffout_declare_function): Likewise.
10518
10519 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
10520
10521         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
10522         ipa-pta working again.
10523
10524 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
10525
10526         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
10527         genautomata.
10528
10529 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
10530
10531         * config.gcc (powerpc*-*-*): Add new core e500mc.
10532         * config/rs6000/e500mc.md: New file.
10533         * config/rs6000/rs6000.c (processor_costs): Add new costs for
10534         e500mc.
10535         (rs6000_override_options): Add e500mc case to
10536         processor_target_table. Altivec and Spe options not allowed
10537         with e500mc. Add isel instruction to e500mc by
10538         default. Initialize rs6000_cost for e500mc.
10539         (rs6000_issue_rate): Set issue rate for e500mc.
10540         * config/rs6000/rs6000.h (processor_type): Add
10541         PROCESSOR_PPCE500MC.
10542         (ASM_CPU_SPEC): Add e500mc.
10543         Set TARGET_ISEL to rs6000_isel.
10544         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
10545         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
10546         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
10547         Include e500mc.md.
10548         * doc/invoke.texi: Add e500mc to list of cpus.
10549
10550 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10551
10552         PR c/34867
10553         * c-lex.c (lex_charconst): Initialize unsignedp.
10554
10555 2008-06-27  Olivier Hainque  <hainque@adacore.com>
10556
10557         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
10558         documented assumptions.
10559
10560 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
10561
10562         * dwarf2out.c: Remove trailing white spaces.  Break long line
10563         in comments.
10564
10565 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
10566
10567         * libfuncs.h (LTI_synchronize): New libfunc_index.
10568         (synchronize_libfunc): Declare.
10569         * builtins.c (expand_builtin_synchronize): Consider using
10570         synchronize_libfunc before falling back on an asm blockage.
10571         * config/mips/mips.c: Include libfuncs.h
10572         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
10573
10574 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
10575
10576         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
10577         parameter.  Copy stack_reg to r11 where appropriate.
10578         (no_global_regs_above): Add gpr parameter.
10579         (rs6000_stack_info): Only add padding for SPE save area if we
10580         are saving SPE GPRs and CR.
10581         (saveres_routine_syms): New variable.
10582         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
10583         Define.
10584         (rs6000_savres_routine_sym): New function.
10585         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
10586         split out of...
10587         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
10588         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
10589         Tweak FPR out-of-line saving.
10590         (rs6000_make_savres_rtx): New function.
10591         (rs6000_use_multiple_p): New function.
10592         (rs6000_savres_strategy): New function.
10593         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
10594         out-of-line if appropriate.
10595         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
10596         if we are optimizing for size.
10597         (GP_SAVE_INLINE): Define.
10598         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
10599         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
10600         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
10601         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
10602         (*save_fpregs_<mode>): Add use of r11.
10603         (*restore_gpregs_<mode>): New insn.
10604         (*return_and_restore_gpregs_<mode>): New insn.
10605         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
10606         use r11.
10607         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
10608         (*restore_gpregs_spe): New insn.
10609         (*return_and_restore_gpregs_spe): New insn.
10610         * config/rs6000/predicates.md (save_world_operation): Fix check.
10611
10612 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
10613
10614         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
10615         this point, so assert that.
10616
10617 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
10618
10619         * cfganal.c: Include vec.h and vecprim.h.
10620         (compute_idf): Import from...
10621         * tree-into-ssa (compute_idf): ...here.
10622         * basic-block.h (compute_idf): Export.
10623
10624 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
10625
10626         * c-decl.c (merge_decls): Use !current_function_decl to check for
10627         extern declaration of C99 inline function being at file scope.
10628
10629 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
10630
10631         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
10632
10633 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10634
10635         * alias.c (record_alias_subset, init_alias_analysis): Fix
10636         -Wc++-compat and/or -Wcast-qual warnings.
10637         * attribs.c (lookup_attribute_spec): Likewise.
10638         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
10639         copy_bb, connect_traces,
10640         find_rarely_executed_basic_blocks_and_cr): Likewise.
10641         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
10642         note_btr_set, migrate_btr_defs): Likewise.
10643         * builtins.c (result_vector, expand_builtin_memcpy,
10644         expand_builtin_mempcpy_args, expand_builtin_strncpy,
10645         builtin_memset_read_str, expand_builtin_printf,
10646         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
10647         Likewise.
10648         * caller-save.c (mark_set_regs): Likewise.
10649         * calls.c (expand_call, emit_library_call_value_1): Likewise.
10650         * cgraph.c (cgraph_edge): Likewise.
10651         * combine.c (likely_spilled_retval_1): Likewise.
10652         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
10653         htab_counts_entry_del, get_coverage_counts): Likewise.
10654         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
10655         new_cselib_val): Likewise.
10656         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
10657         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
10658         Likewise.
10659         * df-core.c (df_compact_blocks): Likewise.
10660         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
10661         * df-scan.c (df_grow_reg_info, df_ref_create,
10662         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
10663         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
10664         df_record_entry_block_defs, df_record_exit_block_uses,
10665         df_bb_verify): Likewise.
10666         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
10667         DF_REF_EXTRACT_MODE_CONST): New.
10668         * dominance.c (get_immediate_dominator, get_dominated_by,
10669         nearest_common_dominator, root_of_dom_tree,
10670         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
10671         -Wc++-compat and/or -Wcast-qual warnings.
10672         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
10673         record_store, replace_read, check_mem_read_rtx, scan_insn,
10674         dse_step1, dse_record_singleton_alias_set): Likewise.
10675         * dwarf2asm.c (dw2_force_const_mem): Likewise.
10676
10677 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10678
10679         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
10680         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
10681         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
10682         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
10683         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
10684         add_ranges_num, add_ranges_by_labels, file_info_cmp,
10685         file_name_acquire, output_file_names, add_const_value_attribute,
10686         premark_used_types_helper, file_table_eq, file_table_hash,
10687         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
10688         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
10689         -Wcast-qual warnings.
10690         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
10691         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
10692         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
10693         gen_reg_rtx, start_sequence, init_emit): Likewise.
10694         * et-forest.c (et_new_occ, et_new_tree): Likewise.
10695         * except.c (init_eh_for_function, gen_eh_region,
10696         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
10697         arh_to_landing_pad, arh_to_label, add_action_record,
10698         add_call_site, switch_to_exception_section): Likewise.
10699         * expmed.c (synth_mult): Likewise.
10700         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
10701         store_expr): Likewise.
10702         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
10703         Likewise.
10704         * function.c (assign_stack_temp_for_type,
10705         allocate_struct_function, match_asm_constraints_1): Likewise.
10706         * gcov-io.c (gcov_allocate): Likewise.
10707         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
10708         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
10709         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
10710         record_one_set, insert_expr_in_table, insert_set_in_table,
10711         dump_hash_table, compute_hash_table_work, alloc_hash_table,
10712         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
10713         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
10714         -Wcast-qual warnings.
10715
10716 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10717
10718         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
10719         -Wcast-qual warnings.
10720         * gcc.c (process_command): Likewise.
10721         * genattrtab.c (oballoc): Use XOBNEW.
10722         (oballocvec): Define.
10723         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
10724         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
10725         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
10726         -Wc++-compat and/or -Wcast-qual warnings.
10727         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
10728         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
10729         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
10730         gen_presence_absence_set, gen_automaton, gen_regexp_el,
10731         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
10732         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
10733         add_excls, process_presence_absence_names,
10734         process_presence_absence_patterns, add_presence_absence,
10735         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
10736         get_free_state, add_arc, get_free_automata_list_el,
10737         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
10738         transform_3, cache_presence, create_ainsns, create_automata,
10739         create_state_ainsn_table, dfa_insn_code_enlarge,
10740         output_trans_func, output_min_issue_delay_func,
10741         output_dead_lock_func, output_reset_func,
10742         output_get_cpu_unit_code_func, output_dfa_start_func,
10743         expand_automata): Likewise.
10744         * genextract.c (gen_insn): Likewise.
10745         * gengtype-lex.l: Likewise.
10746         * gengtype.c (read_input_list, adjust_field_type,
10747         process_gc_options): Likewise.
10748         * genoutput.c (note_constraint): Likewise.
10749         * genpreds.c (mangle, add_constraint): Likewise.
10750         * genrecog.c (process_define_predicate, new_decision,
10751         add_to_sequence): Likewise.
10752         * gensupport.c (record_insn_name): Likewise.
10753
10754 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10755
10756         * config/i386/driver-i386.c (detect_caches_amd,
10757         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
10758         and/or -Wcast-qual warnings.
10759         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
10760         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
10761         gt_pch_save): Likewise.
10762         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
10763         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
10764         * global.c (compute_regsets): Likewise.
10765         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
10766         finish_graph_dump_file): Likewise.
10767         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
10768         unlink_bb_notes): Likewise.
10769         * integrate.c (get_hard_reg_initial_val): Likewise.
10770         * ipa-prop.c (ipa_push_func_to_list): Likewise.
10771         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
10772         * local-alloc.c (update_equiv_regs): Likewise.
10773         * loop-invariant.c (check_invariant_table_size,
10774         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
10775         Likewise.
10776         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
10777         altered_reg_used, mark_altered): Likewise.
10778         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
10779         insert_var_expansion_initialization,
10780         combine_var_copies_in_loop_exit, apply_opt_in_copies,
10781         release_var_copies): Likewise.
10782         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
10783         analyze_matrix_decl, add_allocation_site, analyze_transpose,
10784         analyze_accesses_for_phi_node, check_var_notmodified_p,
10785         check_allocation_function, find_sites_in_func,
10786         record_all_accesses_in_func, transform_access_sites,
10787         transform_allocation_sites): Likewise.
10788         * omp-low.c (new_omp_region, create_omp_child_function_name,
10789         check_omp_nesting_restrictions, check_combined_parallel,
10790         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
10791         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
10792         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
10793         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
10794         Likewise.
10795         * opts-common.c (prune_options): Likewise.
10796         * opts.c (add_input_filename, print_filtered_help,
10797         get_option_state): Likewise.
10798         * params.c (add_params): Likewise.
10799         * passes.c (set_pass_for_id, next_pass_1,
10800         do_per_function_toporder, pass_fini_dump_file): Likewise.
10801         * postreload.c (reload_cse_simplify_operands): Likewise.
10802         * predict.c (tree_predicted_by_p, tree_predict_edge,
10803         clear_bb_predictions, combine_predictions_for_bb): Likewise.
10804
10805 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10806
10807         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
10808         warnings.
10809         * recog.c (check_asm_operands, validate_change_1): Likewise.
10810         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
10811         subst_asm_stack_regs): Likewise.
10812         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
10813         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
10814         * regmove.c (reg_is_remote_constant_p): Likewise.
10815         * regrename.c (regrename_optimize, scan_rtx_reg,
10816         kill_clobbered_value, kill_set_value, kill_autoinc_value):
10817         Likewise.
10818         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
10819         regstat_compute_calls_crossed): Likewise.
10820         * reload1.c (init_reload, new_insn_chain,
10821         has_nonexceptional_receiver, reload, copy_reloads,
10822         calculate_needs_all_insns, init_elim_table): Likewise.
10823         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
10824         * rtl.c (shallow_copy_rtx_stat): Likewise.
10825         * rtlanal.c (parms_set): Likewise.
10826         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
10827         sbitmap_resize, sbitmap_vector_alloc): Likewise.
10828         * sched-ebb.c (earliest_block_with_similiar_load,
10829         add_deps_for_risky_insns): Likewise.
10830         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
10831         schedule_region): Likewise.
10832         * see.c (eq_descriptor_pre_extension,
10833         hash_descriptor_pre_extension, hash_del_pre_extension,
10834         eq_descriptor_properties, hash_descriptor_properties,
10835         hash_del_properties, see_seek_pre_extension_expr,
10836         see_initialize_data_structures, see_print_register_properties,
10837         see_print_pre_extension_expr, see_delete_merged_def_extension,
10838         see_delete_unmerged_def_extension, see_emit_use_extension,
10839         see_pre_delete_extension, see_map_extension, see_commit_changes,
10840         see_analyze_merged_def_local_prop,
10841         see_analyze_merged_def_local_prop,
10842         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
10843         see_set_prop_merged_def, see_set_prop_unmerged_def,
10844         see_set_prop_unmerged_use, see_print_one_extension,
10845         see_merge_one_use_extension, see_merge_one_def_extension,
10846         see_store_reference_and_extension, see_update_uses_relevancy,
10847         see_update_defs_relevancy): Likewise.
10848         * statistics.c (hash_statistics_hash, hash_statistics_eq,
10849         hash_statistics_free, curr_statistics_hash): Likewise.
10850         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
10851         expand_asm_operands, expand_return, case_bit_test_cmp,
10852         expand_case): Likewise.
10853         * stor-layout.c (start_record_layout): Likewise.
10854         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
10855         gt_pch_save_stringpool): Likewise.
10856         * tree-data-ref.c (hash_stmt_vertex_info,
10857         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
10858         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
10859
10860 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
10861
10862         PR target/36627
10863         * config/i386/i386.md : Change constraints of HImode and QImode
10864         immediate operands from "i" to "n".  Change SImode "ni" constraint to
10865         "i" and SImode "rmi" constraint to "g".  Remove all constraints
10866         from const0_operand and const1_operand predicated operands.
10867         (i): Change QImode and HImode attribute from "i" to "n".
10868         (*subqi_2): Change HImode operands to QImode.
10869         (*subqi_3): Ditto.
10870
10871 2008-06-25  Olivier Hainque  <hainque@adacore.com>
10872
10873         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
10874         sed substitutions.
10875
10876 2008-06-25  Richard Guenther  <rguenther@suse.de>
10877
10878         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
10879         not overflow the result type.
10880
10881 2008-06-25  Richard Guenther  <rguenther@suse.de>
10882
10883         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
10884         (vn_lookup): Likewise.
10885
10886 2008-06-25  Richard Guenther  <rguenther@suse.de>
10887
10888         PR tree-optimization/35518
10889         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
10890         * tree-sra.c (instantiate_element): Use fold_build3 to build
10891         BIT_FIELD_REFs.
10892         (try_instantiate_multiple_fields): Likewise.
10893
10894 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10895
10896         * config/rs6000/rs6000.md: Change all string instruction's clobber to
10897         be early clobbers.
10898
10899 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10900
10901         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
10902         use_backchain_to_restore_sp to true
10903         if the offset of the link register save area would go over the 32k - 1
10904         offset limit of the load
10905         instructions.
10906
10907 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
10908
10909         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
10910         anchor for the type-punning blurb.  Cross-reference "Structures
10911         unions enumerations and bit-fields implementation".  Provide a
10912         cast-through-pointer example.  Make final sentence self-contained.
10913         * doc/implement-c.texi (Structures unions enumerations and
10914         bit-fields implementation): Cross-reference the type-punning blurb
10915         in the -fstrict-aliasing documentation.
10916
10917 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10918
10919         PR middle-end/36594
10920         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
10921         the memory instead of the memory itself for the save area.
10922
10923 2008-06-24  Olivier Hainque  <hainque@adacore.com>
10924             Nicolas Roche  <roche@adacore.com>
10925
10926         * gengtype.c (srcdir_len): size_t instead of int.
10927         (get_file_realbasename): New function.  For F a filename, the real
10928         basename of F, with all the path components stripped.
10929         (get_file_srcdir_relative_path): New function.  For F a filename, the
10930         relative path to F from $(srcdir).
10931         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
10932         get_file_realbasename.  Adjust the head comment.
10933         (get_prefix_langdir_index): New function. For F a filename, return the
10934         lang_dir_names[] relative index of the language directory that is
10935         a prefix in F.
10936         (get_file_langdir): For F a filename, return the name of the language
10937         directory where F is located.
10938         (get_file_gtfilename): New function. The gt- output file name for an
10939         input filename F.
10940         (get_output_file_with_visibility): Replace in-line computations with
10941         uses of get_file_gtfilename and get_prefix_langdir_index.
10942         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
10943
10944 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
10945
10946         PR tree-optimization/36504
10947         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
10948         references without base address.
10949
10950 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10951
10952         PR middle-end/36584
10953         * calls.c (expand_call): Increase alignment for recursive functions.
10954
10955 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
10956
10957         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
10958         (TARGET_FUNCTION_VALUE): New define.
10959         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
10960         * config/avr/avr.h (FUNCTION_VALUE): Remove.
10961
10962 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10963
10964         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
10965         (fmod<mode>3): Ditto.
10966         (remainderxf3): Ditto.
10967         (remainder<mode>3): Ditto.
10968
10969 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
10970
10971         PR target/36533
10972         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
10973         REG is a hard register.
10974
10975         PR tree-optimization/36508
10976         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
10977         499, don't check it at all in release compilers.
10978
10979 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
10980
10981         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
10982         together with SSE_TARGET_MATH to disable insn pattern.
10983         (*fop_<MODEF:mode>_2_i387): Ditto.
10984         (*fop_<MODEF:mode>_3_i387): Ditto.
10985
10986 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
10987
10988         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
10989
10990 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10991
10992         PR middle-end/34906
10993         * gimplify.c (gimplify_asm_expr): Check the return code of
10994         parse_output_constraint call, set function return and is_inout
10995         value if it failed.
10996
10997 2008-06-22  Ian Lance Taylor  <iant@google.com>
10998
10999         * c-lex.c (narrowest_unsigned_type): Change itk to int.
11000         (narrowest_signed_type): Likewise.
11001         * c-typeck.c (c_common_type): Change local variable mclass to enum
11002         mode_class, twice.
11003         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
11004         tcc_comparison, not the tree code itself.
11005         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
11006         (c_expand_expr): Cast modifier to enum expand_modifier.
11007         * c-common.h (C_RID_CODE): Add casts.
11008         (C_SET_RID_CODE): Define.
11009         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
11010         (c_lex_one_token): Add cast to avoid warning.
11011         (c_parser_objc_type_name): Rename local typename to type_name.
11012         (check_no_duplicate_clause): Change code parameter to enum
11013         omp_clause_code.
11014         (c_parser_omp_var_list_parens): Change kind parameter to enum
11015         omp_clause_code.
11016         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
11017         c_parser_omp_list_var_parens.
11018         (c_parser_omp_threadprivate): Likewise.
11019         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
11020         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
11021         * c-format.c (NO_FMT): Define.
11022         (printf_length_specs): Use NO_FMT.
11023         (asm_fprintf_length_specs): Likewise.
11024         (gcc_diag_length_specs): Likewise.
11025         (scanf_length_specs): Likewise.
11026         (strfmon_length_specs): Likewise.
11027         (gcc_gfc_length_specs): Likewise.
11028         (printf_flag_specs): Change 0 to STD_C89.
11029         (asm_fprintf_flag_specs): Likewise.
11030         (gcc_diag_flag_specs): Likewise.
11031         (gcc_cxxdiag_flag_specs): Likewise.
11032         (scanf_flag_specs): Likewise.
11033         (strftime_flag_specs): Likewise.
11034         (strfmon_flag_specs): Likewise.
11035         (print_char_table): Likewise.
11036         (asm_fprintf_char_table): Likewise.
11037         (gcc_diag_char_table): Likewise.
11038         (gcc_tdiag_char_table): Likewise.
11039         (gcc_cdiag_char_table): Likewise.
11040         (gcc_cxxdiag_char_table): Likewise.
11041         (gcc_gfc_char_table): Likewise.
11042         (scan_char_table): Likewise.
11043         (time_char_table): Likewis.
11044         (monetary_char_table): Likewise.
11045         * c-format.h (BADLEN): Likewise.
11046
11047 2008-06-21  Ian Lance Taylor  <iant@google.com>
11048
11049         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
11050         Define END_OF_BASE_TREE_CODES around inclusion.
11051         * tree.c (tree_code_type): New global array.
11052         (tree_code_length, tree_code_name): Likewise.
11053         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
11054         $(lang_tree_files).
11055         (all-tree.def, s-alltree): New targets.
11056         (gencheck.h, s-gencheck): Remove.
11057         (tree.o): Depend upon all-tree.def.
11058         (build/gencheck.o): Remove gencheck.h dependency.
11059         (mostlyclean): Don't remove gencheck.h.
11060         * c-common.h (enum c_tree_code): Remove.
11061         * c-lang.c (tree_code_type): Remove.
11062         (tree_code_length, tree_code_name): Remove.
11063         * gencheck.c (tree_codes): Include all-tree.def, rather than
11064         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
11065         after it is used.
11066         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
11067         than tree.def.
11068         * cp/cp-tree.h (enum cplus_tree_code): Remove.
11069         (operator_name_info): Size to MAX_TREE_CODES.
11070         (assignment_operator_name_info): Likewise.
11071         * cp/cp-lang.c (tree_code_type): Remove.
11072         (tree_code_length, tree_code_name): Remove.
11073         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
11074         (assignment_operator_name_info): Likewise.
11075         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
11076         MAX_TREE_CODES.
11077         * cp/mangle.c (write_expression): Likewise.
11078         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
11079         * fortran/f95-lang.c (tree_code_type): Remove.
11080         (tree_code_length, tree_code_name): Remove.
11081         * java/java-tree.h (enum java_tree_code): Remove.
11082         * java/lang.c (tree_code_type): Remove.
11083         (tree_code_length, tree_code_name): Remove.
11084         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
11085         * objc/objc-act.h (enum objc_tree_code): Remove.
11086         * objc/objc-lang.c (tree_code_type): Remove.
11087         (tree_code_length, tree_code_name): Remove.
11088         * objcp/objcp-lang.c (tree_code_type): Remove.
11089         (tree_code_length, tree_code_name): Remove.
11090         * ada/ada-tree.h (enum gnat_tree_code): Remove.
11091         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
11092         * ada/misc.c (tree_code_type): Remove.
11093         (tree_code_length, tree_code_name): Remove.
11094
11095 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
11096
11097         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
11098         the grand_bitmap_obstack.
11099
11100 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11101
11102         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
11103         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
11104         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
11105         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
11106         move_stmt_r, new_label_mapper): Likewise.
11107         * tree-complex.c (cvc_lookup): Likewise.
11108         * tree-dfa.c (create_function_ann): Likewise.
11109         * tree-dump.c (dump_register): Likewise.
11110         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
11111         find_phi_replacement_condition): Likewise.
11112         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
11113         tree_function_versioning): Likewise.
11114         * tree-into-ssa.c (cmp_dfsnum): Likewise.
11115         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
11116         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
11117         get_nonlocal_debug_decl, convert_nonlocal_reference,
11118         convert_nonlocal_omp_clauses, get_local_debug_decl,
11119         convert_local_reference, convert_local_omp_clauses,
11120         convert_nl_goto_reference, convert_nl_goto_receiver,
11121         convert_tramp_reference, convert_call_expr): Likewise.
11122         * tree-outof-ssa.c (contains_tree_r): Likewise.
11123         * tree-parloops.c (reduction_phi, initialize_reductions,
11124         eliminate_local_variables_1, add_field_for_reduction,
11125         add_field_for_name, create_phi_for_local_result,
11126         create_call_for_reduction_1, create_loads_for_reductions,
11127         create_stores_for_reduction, create_loads_and_stores_for_name):
11128         Likewise.
11129         * tree-phinodes.c (allocate_phi_node): Likewise.
11130         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
11131         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
11132         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
11133         * tree-ssa-coalesce.c (compare_pairs): Likewise.
11134         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
11135         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
11136         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
11137         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
11138         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
11139         vn_nary_op_insert): Likewise.
11140         * tree-ssa.c (redirect_edge_var_map_add,
11141         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
11142         * tree-vectorizer.c (vectorize_loops): Likewise.
11143         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
11144         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
11145         tree_cons_stat, build1_stat, build_variant_type_copy,
11146         decl_init_priority_lookup, decl_fini_priority_lookup,
11147         decl_priority_info, decl_restrict_base_lookup,
11148         decl_restrict_base_insert, decl_debug_expr_lookup,
11149         decl_debug_expr_insert, decl_value_expr_lookup,
11150         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
11151         type_hash_add, get_file_function_name, tree_check_failed,
11152         tree_not_check_failed, tree_range_check_failed,
11153         omp_clause_range_check_failed, build_omp_clause,
11154         build_vl_exp_stat): Likewise.
11155         * value-prof.c (gimple_histogram_value,
11156         gimple_duplicate_stmt_histograms): Likewise.
11157         * var-tracking.c (attrs_list_insert, attrs_list_copy,
11158         unshare_variable, variable_union_info_cmp_pos, variable_union,
11159         dataflow_set_different_1, dataflow_set_different_2,
11160         vt_find_locations, variable_was_changed, set_variable_part,
11161         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
11162         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
11163         section_entry_hash, object_block_entry_eq,
11164         object_block_entry_hash, create_block_symbol,
11165         initialize_cold_section_name, default_function_rodata_section,
11166         strip_reg_name, set_user_assembler_name, const_desc_eq,
11167         build_constant_desc, output_constant_def, lookup_constant_def,
11168         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
11169         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
11170         default_internal_label): Likewise.
11171         * varray.c (varray_init, varray_grow): Likewise.
11172         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
11173
11174 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
11175
11176         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
11177         operators for "test" insn.  Macroize insn using SWI mode macro.
11178         (*jcc_fused_2): Ditto.
11179         (*jcc_fused_3): Macroize insn using SWI mode macro.
11180         (*jcc_fused_4): Ditto.
11181
11182 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
11183
11184         * tree-ssa-pre.c: Fix typo in comment.
11185         (init_antic, fini_antic): Add explicit funtions for
11186         initializing and deinitializing ANTIC and AVAIL sets.
11187         (create_expression_by_pieces): Fix typo in comment.
11188         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
11189         (execute_pre): Eventually dump details about ANTIC_IN.
11190
11191 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11192
11193         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
11194         * gcc.c (translate_options, init_spec, store_arg, read_specs,
11195         add_to_obstack, file_at_path, find_a_file, execute,
11196         add_preprocessor_option, add_assembler_option, add_linker_option,
11197         process_command, insert_wrapper, do_option_spec, do_self_spec,
11198         spec_path, do_spec_1, is_directory, main, used_arg,
11199         getenv_spec_function): Likewise.
11200         * tlink.c (symbol_hash_lookup, file_hash_lookup,
11201         demangled_hash_lookup, symbol_push, file_push, frob_extension):
11202         Likewise.
11203
11204 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
11205
11206         * doc/rtl.texi: Updated subreg section.
11207
11208 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
11209
11210         PR c++/36523
11211         * cgraphunit.c (cgraph_process_new_functions): Don't clear
11212         node->needed and node->reachable.
11213         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
11214         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
11215         (expand_task_call): Don't call expand_task_copyfn.
11216         (expand_task_copyfn): Renamed to...
11217         (finalize_task_copyfn): ... this.
11218
11219 2008-06-19  Jan Hubicka  <jh@suse.cz>
11220
11221         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
11222         clobbering framepointer.
11223
11224 2008-06-19  Jan Hubicka  <jh@suse.cz>
11225
11226         * tree-optimize.c (execute_early_local_optimizations): Set
11227         cgraph_state only at first invocation.
11228
11229 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11230
11231         * system.h (-Wc++-compat): Activate as a warning, no an error.
11232
11233 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
11234
11235         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
11236         instead of "#" in insn asm template.
11237         (*jcc_fused_2): Ditto.
11238
11239 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
11240
11241         * config/i386/i386.h (ix86_tune_indices)
11242         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
11243         (TARGET_FUSE_CMP_AND_BRANCH): New define.
11244         * config/i386/i386.md (*jcc_fused_1): New insn pattern
11245         (*jcc_fused_2): Ditto.
11246         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
11247         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
11248         (print operand): Handle 'E' and 'e' code.
11249
11250 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
11251
11252         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
11253         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11254         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
11255
11256 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
11257
11258         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
11259         node->decl.
11260         (cgraph_expand_function): Use local copy of decl.
11261         (cgraph_expand_all_functions): Remove redundant initialization of
11262         order_pos.
11263         (cgraph_optimize): Reword internal_error message.
11264
11265 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
11266
11267         * arm-protos.h (arm_return_in_memory): Remove public
11268         arm_return_in_memory() prototype.
11269         * arm.c (arm_return_in_memory): Add static prototype, add target
11270         hook macro, change definition and comments.
11271         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
11272
11273 2008-06-19  Ben Elliston  <bje@au.ibm.com>
11274
11275         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
11276         real.c: Remove references to IEEE 754R.
11277         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
11278         * doc/libgcc.texi (Decimal float library routines): Likewise.
11279
11280 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11281
11282         * targhooks.h (struct gcc_target): New member unwind_word_mode.
11283         (default_unwind_word_mode): Add prototype.
11284         * targhooks.c (default_unwind_word_mode): New function.
11285         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
11286         instead of word_mode.
11287         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
11288         (TARGET_INITIALIZER): Use it.
11289
11290         * c-common.c (handle_mode_attribute): Support "unwind_word"
11291         mode attribute.
11292         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
11293
11294         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
11295         word_mode to access SjLj_Function_Context member "data".
11296         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
11297         conversion from targetm.eh_return_filter_mode () to
11298         targetm.unwind_word_mode () if they differ.
11299
11300         * builtin-types.def (BT_UNWINDWORD): New primitive type.
11301         (BT_FN_UNWINDWORD_PTR): New function type.
11302         (BT_FN_WORD_PTR): Remove.
11303         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
11304         * except.c (expand_builtin_extend_pointer): Convert pointer to
11305         targetm.unwind_word_mode () instead of word_mode.
11306
11307         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
11308         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
11309         (spu_unwind_word_mode): New function.
11310         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
11311         (TARGET_UNWIND_WORD_MODE): Define.
11312         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
11313
11314 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11315
11316         * config/spu/spu.c (reg_align): Remove.
11317         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
11318         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
11319         (spu_split_store): Likewise.
11320
11321 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
11322
11323         * gcc/tree-vn.c: Fix typo in comment.
11324
11325 2008-06-18  Jan Hubicka  <jh@suse.cz>
11326
11327         * cgraphunit.c (cgraph_optimize): Output debug info when doing
11328         toplevel reorder too.
11329
11330 2008-06-18  Jan Hubicka  <jh@suse.cz>
11331
11332         * c-opts.c (c_common_post_options): PCH is not compatible with
11333         no-unit-at-a-time.
11334         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
11335         -fno-toplevel-reorder by default now.
11336
11337 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11338
11339         PR documentation/30739
11340         * doc/install.texi (Prerequisites): Document dependency on awk.
11341
11342 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
11343             Ian Lance Taylor  <iant@google.com>
11344
11345         PR rtl-optimization/35604
11346         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
11347         only want to change jump destinations, not eventual label comparisons.
11348
11349 2008-06-16  Jan Hubicka  <jh@suse.cz>
11350
11351         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
11352         syntax errors.
11353         (cgraph_analyze_function): Likewise.
11354
11355 2008-06-16  Jan Hubicka  <jh@suse.cz>
11356
11357         * cgraph.h (cgraph_mark_if_needed): New function.
11358         * cgraphunit.c (cgraph_mark_if_needed): New function.
11359         * c-decl.c (duplicate_decl): Use it.
11360
11361 2008-06-16  Jan Hubicka  <jh@suse.cz>
11362
11363         * cgraph.c (cgraph_add_new_function): When in expansion state, do
11364         lowering.
11365
11366 2008-06-16  Jan Hubicka  <jh@suse.cz>
11367
11368         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
11369
11370 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
11371             Kazu Hirata  <kazu@codesourcery.com>
11372             Maxim Kuvyrkov  <maxim@codesourcery.com
11373
11374         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
11375         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
11376         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
11377         EXTRA_SPEC_FUNCTIONS.
11378         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
11379         (DRIVER_SELF_SPECS): Adjust.
11380         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
11381         * config/mips/st.h, config/mips/t-st: New.
11382         * config/mips/driver-native.c, config/mips/x-native: New.
11383         * doc/invoke.texi (MIPS): Document 'native' value for -march and
11384         -mtune options.
11385
11386 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
11387
11388         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
11389         from it.
11390         (ISA_HAS_FP_CONDMOVE): New macro.
11391         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
11392         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
11393         (ISA_HAS_NMADD3_NMSUB3): New macro.
11394         * config/mips/mips.c (mips_rtx_costs): Update.
11395         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
11396         compiling for ST Loongson 2E/2F.
11397         (madd<mode>): Rename to madd4<mode>.  Update.
11398         (madd3<mode>): New pattern.
11399         (msub<mode>): Rename to msub4<mode>.  Update.
11400         (msub3<mode>): New pattern.
11401         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
11402         (nmadd3<mode>): New pattern.
11403         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
11404         (nmadd3<mode>_fastmath): New pattern.
11405         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
11406         (nmsub3<mode>): New pattern.
11407         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
11408         (nmsub3<mode>_fastmath): New pattern.
11409         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
11410
11411 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
11412
11413         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
11414         (DF_REF_INSN_INFO): New.
11415         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
11416         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
11417         with a NULL DF_REF_INSN_INFO.
11418         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
11419         DF_INSN_SET.
11420         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
11421         DF_INSN_INFO_EQ_USES): New.
11422         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
11423         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
11424         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
11425         * df-core.c: Update comment for above changes.
11426         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
11427         DF_INSN_UID_* macros.
11428         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
11429         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
11430         insn rtx.  Update all callers.
11431         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
11432         df_ref_create_structure, df_insn_refs_collect): Likewise.
11433         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
11434         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
11435         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
11436         macros to access the insn refs.
11437         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
11438         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
11439         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
11440         for accessing the refs.
11441         (try_fwprop_subst): Likewise.
11442         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
11443         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
11444         for accessing the refs.
11445         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
11446         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
11447         to look at the insn refs.
11448         (record_uses): Likewise.
11449         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
11450         function anymore.
11451         (mark_artificial_uses): Don't mark_insn for artificial refs.
11452         (mark_reg_rependencies): Likewise.
11453
11454         * doc/rtl.texi: Remove documentation of ADDRESSOF.
11455
11456 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11457
11458         * configure: Regenerate.
11459
11460 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11461
11462         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
11463         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11464         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11465
11466 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11467
11468         * config/avr/avr.c (avr_mcu_t): Add attiny167.
11469         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11470         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11471
11472 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11473
11474         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
11475         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11476         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11477
11478 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
11479
11480         * tree-ssa-sccvn.c: Fix format of comments.
11481
11482 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
11483
11484         * cgraph.c: Remove unneeded forward declarations of eq_node()
11485         and hash_node().
11486
11487 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
11488
11489         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
11490         REG_RETVAL notes.
11491         (see_update_relevancy): Likewise.
11492         * fwprop.c (try_fwprop_subst): Likewise.
11493         * rtlanal.c (noop_move_p): Likewise.
11494         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
11495         notes to non-existing libcall blocks.
11496         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
11497         Remove orig_set.
11498         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
11499         (dead_libcall_p): Remove.
11500         (delete_trivially_dead_insns): Don't use it.
11501         * web.c (union_defs): Remove comment about keeping nops.
11502         * gcse.c (hash_scan_insn): Don't take libcall pointers.
11503         (compute_hash_table_work): Don't track libcall notes.
11504         (do_local_cprop): Don't take libcall pointers.  Don't update
11505         libcall notes.
11506         (adjust_libcall_notes): Deleted.
11507         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
11508         ever have existed in the first place).
11509         (replace_store_insn): Don't try to remove libcall notes.
11510         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
11511         (resolve_reg_notes): Don't call them.
11512         (resolve_simple_move): Likewise.
11513         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
11514         Don't remove REG_RETVAL notes.
11515         * emit-rtl.c (try_split): Don't update libcall notes.
11516         (emit_copy_of_insn_after): Dito.
11517         * cselib.c (cselib_current_insn_in_libcall): Remove.
11518         (cselib_process_insn): Don't set/clear it.
11519         (new_elt_loc_list): Don't record it.
11520         (cselib_init): Don't initialize it.
11521         * cselib.c (struct elt_loc_list): Remove in_libcall field.
11522         * loop-invariant.c (find_invariant_insn): Don't look for libcall
11523         notes.
11524         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
11525         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
11526         (init_deps): Don't initialize it.
11527         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
11528         * combine.c (delete_noop_moves): Don't update libcall notes.
11529         (can_combine_p): Remove now pointless #if 0 block.
11530         (try_combine): Remove another obsolete #if 0 block.
11531         (distribute_notes): Don't distribute libcall notes.
11532         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
11533         * dce.c (libcall_dead_p): Remove.
11534         (delete_unmarked_insns): Don't handle libcall blocks.
11535         (preserve_libcall_for_dce): Remove.
11536         (prescan_insns_for_dce): Don't special-case libcall block insns.
11537         * reload1 (reload): Don't handle libcall notes.
11538         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
11539         documentation.
11540
11541 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
11542
11543         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
11544         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11545         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11546
11547 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
11548
11549         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
11550         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11551         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11552
11553 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11554
11555         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
11556
11557 2008-06-16  Ira Rosen  <irar@il.ibm.com>
11558
11559         PR tree-optimization/36493
11560         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
11561         the arguments list. Use VECTYPE to create vector pointer.
11562         (vectorizable_store): Fail if accesses through a pointer to vectype
11563         do not alias the original memory reference operands.
11564         Call vect_create_data_ref_ptr without the removed argument.
11565         (vectorizable_load): Likewise.
11566         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
11567         removed argument.
11568
11569 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
11570
11571         PR target/36336
11572         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
11573         reg_equiv_constant.
11574
11575 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
11576
11577         * config/mips/loongson2ef.md: New file.
11578         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
11579         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
11580         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
11581         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
11582         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
11583         and loongson_2f.
11584         (loongson2ef.md): New include.
11585         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
11586         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
11587         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
11588         (loongson_gt_<mode>, loongson_extract_halfword)
11589         (loongson_insert_halfword_0, loongson_insert_halfword_2)
11590         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
11591         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
11592         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
11593         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
11594         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
11595         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
11596         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
11597         (vec_interleave_low<mode>): Define type attribute.
11598         * config/mips/mips.c (mips_ls2): New static variable.
11599         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
11600         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
11601         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
11602         Implement target scheduling hooks.
11603         (mips_multipass_dfa_lookahead): Update to handle tuning for
11604         Loongson 2E/2F.
11605         (mips_sched_init): Initialize data for Loongson scheduling.
11606         (mips_ls2_variable_issue): New static function.
11607         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
11608         Add sanity check.
11609         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
11610         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
11611         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
11612         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
11613         Handle ST Loongson 2E/2F cores.
11614         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
11615
11616 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11617
11618         * omp-low.c (extract_omp_for_data): Fix comment typo.
11619         * c.opt: Fix typo.
11620
11621 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11622
11623         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
11624         FIXME note about gcc/config.guess.
11625         * doc/options.texi (Option file format): Remove non-ASCII bytes.
11626         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
11627         * doc/cppopts.texi: Likewise.
11628         * doc/extend.texi: Likewise.
11629         * doc/gcc.texi: Likewise.
11630         * doc/gccint.texi: Likewise.
11631         * doc/gcov.texi: Likewise.
11632         * doc/gty.texi: Likewise.
11633         * doc/hostconfig.texi: Likewise.
11634         * doc/install.texi: Likewise.
11635         * doc/invoke.texi: Likewise.
11636         * doc/loop.texi: Likewise.
11637         * doc/makefile.texi: Likewise.
11638         * doc/md.texi: Likewise.
11639         * doc/passes.texi: Likewise.
11640         * doc/tm.texi: Likewise.
11641         * doc/tree-ssa.texi: Likewise.
11642         * doc/trouble.texi: Likewise.
11643
11644 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
11645             Nathan Sidwell  <nathan@codesourcery.com>
11646             Maxim Kuvyrkov  <maxim@codesourcery.com>
11647             Richard Sandiford  <rdsandiford@googlemail.com>
11648
11649         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
11650         * config/mips/mips-protos.h (mips_expand_vector_init): New.
11651         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
11652         builtins.
11653         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
11654         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
11655         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
11656         V8QImode cases.
11657         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
11658         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
11659         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
11660         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
11661         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
11662         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
11663         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
11664         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
11665         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
11666         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
11667         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
11668         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
11669         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
11670         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
11671         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
11672         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
11673         (mips_builtins): Add Loongson builtins.
11674         (mips_loongson_2ef_bdesc): New.
11675         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
11676         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
11677         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
11678         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
11679         New.
11680         (mips_expand_vector_init): New.
11681         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
11682         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
11683         if appropriate.
11684         * config/mips/mips.md: Add unspec numbers for Loongson
11685         builtins.  Include loongson.md.
11686         (MOVE64): Include Loongson vector modes.
11687         (SPLITF): Include Loongson vector modes.
11688         (HALFMODE): Handle Loongson vector modes.
11689         * config/mips/loongson.md: New.
11690         * config/mips/loongson.h: New.
11691         * config.gcc: Add loongson.h header for mips*-*-* targets.
11692         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
11693
11694 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
11695
11696         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
11697         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
11698         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
11699         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
11700         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
11701         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
11702         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
11703         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
11704         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
11705         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
11706         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
11707         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
11708         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
11709         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
11710         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
11711         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
11712         Remove use_fixproto=yes.
11713         (ia64*-*-hpux*): Remove comment about using fixproto.
11714         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
11715
11716 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11717
11718         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
11719         library rebuilds.
11720         * configure: Regenerate.
11721
11722 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
11723
11724         PR middle-end/36520
11725         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
11726         before evaluating it.
11727
11728 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
11729
11730         PR c/36507
11731         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
11732         nested inline functions.
11733         (start_decl, start_function): Don't invert DECL_EXTERNAL
11734         for nested inline functions.
11735
11736 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
11737
11738         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
11739         splits that must be made for correctness.
11740
11741 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
11742
11743         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
11744         (AVAIL_NON_MIPS16): Likewise.
11745         (mips_builtin_description): Replace target_flags with a predicate.
11746         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
11747         (dspr2_32): New availability predicates.
11748         (MIPS_BUILTIN): New macro.
11749         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
11750         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
11751         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
11752         Replace the TARGET_FLAGS parameters with AVAIL parameters.
11753         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
11754         (mips_dsp_32only_bdesc): Merge into...
11755         (mips_builtins): ...this new array.
11756         (mips_bdesc_map, mips_bdesc_arrays): Delete.
11757         (mips_init_builtins): Update after above changes.
11758         (mips_expand_builtin_1): Merge into...
11759         (mips_expand_builtin): ...here and update after above changes.
11760
11761 2008-06-12  Paul Brook  <paul@codesourcery.com>
11762
11763         * longlong.h (__arm__): Define count_leading_zeros.
11764         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
11765         (clzsi2, clzdi2): New functions.
11766         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
11767         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
11768         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
11769         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
11770         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
11771         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
11772         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
11773         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
11774         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
11775         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
11776
11777 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
11778
11779         * config/m68k/m68k.c (m68k_tune_flags): New.
11780         (override_options): Compute m68k_tune_flags.
11781         (MULL_COST, MULW_COST): Update for various variants of CFV2.
11782         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
11783
11784 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
11785
11786         PR middle-end/36506
11787         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
11788
11789 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
11790
11791         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
11792         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
11793
11794 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
11795
11796         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
11797         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
11798
11799 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
11800
11801         PR middle-end/36506
11802         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
11803         reductions.
11804
11805 2008-06-12  Richard Guenther  <rguenther@suse.de>
11806
11807         PR tree-optimization/36345
11808         * tree-flow.h (struct ptr_info_def): Align escape_mask,
11809         add memory_tag_needed flag.
11810         (may_alias_p): Declare.
11811         * tree-ssa-alias.c (may_alias_p): Export.
11812         (set_initial_properties): Use memory_tag_needed flag.
11813         (update_reference_counts): Likewise.
11814         (reset_alias_info): Reset memory_tag_needed flag.
11815         (create_name_tags): Check memory_tag_needed flag.
11816         (dump_points_to_info_for): Dump it.
11817         * tree-ssa-structalias.c (struct variable_info): Remove
11818         directly_dereferenced flag.
11819         (new_var_info): Do not initialize it.
11820         (process_constraint_1): Do not set it.
11821         (update_alias_info): Set is_dereferenced flag.
11822         (set_uids_in_ptset): Use may_alias_p.
11823         (set_used_smts): Check memory_tag_needed flag.
11824         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
11825         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
11826         memory_tag_needed flag.
11827         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
11828         from broken design.
11829
11830 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
11831
11832         * config/i386/i386.c (ix86_compute_frame_layout): Disable
11833         red zone for w64 abi.
11834         (ix86_expand_prologue): Likewise.
11835         (ix86_force_to_memory): Likewise.
11836         (ix86_free_from_memory): Likewise.
11837
11838 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
11839
11840         PR target/36425
11841         * config/rs6000/rs6000.c (rs6000_override_options): Set
11842         rs6000_isel conditionally to the absence of comand line override.
11843         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
11844         Remove duplicate rs6000_isel setting.
11845         * config/rs6000/eabispe.h: Ditto.
11846
11847 2008-06-11  Richard Guenther  <rguenther@suse.de>
11848
11849         * alias.c (get_alias_set): Use the element alias-set for arrays.
11850         (record_component_aliases): For arrays and vectors do nothing.
11851         * c-common.c (strict_aliasing_warning): Handle the cases
11852         of alias set zero explicitly.
11853         * Makefile.in (dfp.o-warn): Add -Wno-error.
11854
11855 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
11856
11857         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
11858         tune_32 tune_64.
11859         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
11860         tune_32 tune_64 to supported_defaults.  Allow values not
11861         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
11862         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
11863         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
11864         with_cpu_64 to generic for 64-bit-supporting configurations, not
11865         with_cpu.  Remove FIXMEs.
11866         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
11867         --with-arch-64, --with-tune-32, --with-tune-64): Document.
11868         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
11869         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
11870         arch_32 and arch_64.
11871
11872 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
11873             Olivier Hainque  <hainque@adacore.com>
11874
11875         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
11876         Use DECL_SIZE_UNIT to retrieve the size of the field.
11877
11878 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
11879
11880         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
11881         with function calls after declarations.  Lay out
11882         neon_float_type_node before further use.
11883
11884 2008-06-11  Richard Guenther  <rguenther@suse.de>
11885
11886         * tree-flow.h (may_point_to_global_var): Declare.
11887         * tree-ssa-alias.c (may_point_to_global_var): New function.
11888         * tree-ssa-sink.c (is_hidden_global_store): Use it.
11889
11890 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
11891
11892         * configure.ac: Teach that fido supports .debug_line.
11893         * configure: Regenerate.
11894
11895 2008-06-10  Tom Tromey  <tromey@redhat.com>
11896
11897         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
11898         debug hook.
11899
11900 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
11901
11902         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
11903         (encode_decimal64, decode_decimal64, encode_decimal128,
11904         decode_decimal128): Reverse order of 32-bit parts of value if host
11905         and target endianness differ.
11906
11907 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
11908
11909         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
11910         Avoid division by 0.
11911         (tree_mod_pow2_value_transform): Likewise.
11912         (tree_ic_transform): Likewise.
11913         (tree_stringops_transform): Likewise.
11914         (tree_mod_subtract_transform): Likewise.
11915         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
11916         (copy_edges_for_bb): Likewise.
11917         (initialize_cfun): Likewise.
11918
11919 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
11920
11921         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
11922         nonmemory_operand. Add "N" operand constraint.
11923         (*btsi): Ditto.
11924         (*jcc_btdi_mask_rex64): New instruction and split pattern.
11925         (*jcc_btsi_mask): Ditto.
11926         (*jcc_btsi_mask_1): Ditto.
11927
11928 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
11929
11930         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
11931         TYPE_CANONICAL for copied element type.
11932
11933 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
11934
11935         PR target/36473
11936         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
11937         Add m_CORE2 and m_GENERIC.
11938         * config/i386/predicates.md (bt_comparison_operator): New predicate.
11939         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
11940         (*btsi): Ditto.
11941         (*jcc_btdi_rex64): New instruction and split pattern.
11942         (*jcc_btsi): Ditto.
11943         (*jcc_btsi_1): Ditto.
11944         (*btsq): Fix Intel asm dialect operand order.
11945         (*btrq): Ditto.
11946         (*btcq): Ditto.
11947
11948 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
11949
11950         PR middle-end/36447
11951         * simplify-rtx.c (simplify_subreg): Add check for shift count
11952         greater than size.
11953
11954 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
11955
11956         * doc/md.texi: Synchronize with later constraints.md change.
11957         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
11958         with a C implementation.
11959         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
11960         MFLO handling.
11961         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
11962         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
11963         when moving to and from MD_REGNUM.
11964         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
11965         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
11966         Handle byte and halfword moves.
11967         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
11968         separately.
11969         * config/mips/constraints.md (h): Turn into NO_REGS.
11970         (l, x): Update documentation.
11971         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
11972         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
11973         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
11974         (HILO): New mode iterator.
11975         (MOVE128): Add TI.
11976         (any_div): New code iterator.
11977         (u): Extend code attribute to div and udiv.
11978         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
11979         d_operand in the splitters.  Remove redundant CONST_INT checks.
11980         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
11981         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
11982         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
11983         accordingly, using normal moves instead of unspecs to move LO into
11984         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
11985         (<u>mulsidi3): Handle expansion in C code.
11986         (<u>mulsidi3_32bit_internal): Rename to...
11987         (<u>mulsidi3_32bit): ...this.
11988         (<u>mulsidi3_32bit_r4000): Fix insn separator.
11989         (*<u>mulsidi3_64bit): Rename to...
11990         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
11991         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
11992         to set LO and HI to the multiplication result.  Use a normal move
11993         for MFLO and an unspec for MFHI.
11994         (*<u>mulsidi3_64bit_parts): Replace with...
11995         (<u>mulsidi3_64bit_hilo): ...this new instruction.
11996         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
11997         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
11998         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
11999         instead of HI.  Split the instruction into a separate multiplication
12000         and MFHI if !TARGET_FIX_R4000.
12001         (<su>muldi3_highpart): Likewise.
12002         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
12003         and the "=h" clobber.
12004         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
12005         (<u>mulditi3): New expander.
12006         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
12007         (madsi): Remove "=h" clobber.
12008         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
12009         Force the modulus result to be a GPR and split the instruction into
12010         a division followed by an MFHI after reload.
12011         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
12012         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
12013         the MIPS16 HIGH define_split.
12014         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
12015         of acc<->gpr moves to "multi".
12016         (*movdi_64bit): Replace the single "x" alternative with
12017         alternatives for moving into and out of "a".
12018         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
12019         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
12020         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
12021         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
12022         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
12023         (movti): New expander.
12024         (*movti, *movti_mips16): New insns.
12025         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
12026         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
12027         (mthi<GPR:mode>_<HILO:mode>): Likewise.
12028         * config/mips/predicates.md (fpr_operand): Delete.
12029         (d_operand): New predicate.
12030
12031 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
12032
12033         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
12034         failure on some Bourne shells.
12035         (x86_64-*-*): Ditto.
12036
12037 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
12038
12039         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
12040
12041 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
12042
12043         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
12044         (sparc-sun-solaris2*): Likewise.
12045
12046 2008-06-09  Arnaud Charlet  <charlet@adacore.com
12047
12048         * doc/install.texi: Update requirements to build the Ada compiler.
12049
12050 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
12051
12052         * df-scan.c (struct df_scan_problem_data): Remove the
12053         mw_link_pool alloc pool.
12054         (df_scan_free_internal): Don't free it.
12055         (df_scan_alloc): Don't allocate it.
12056         * df.h (struct df_link): Update comment.
12057
12058 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
12059
12060         * except.h: Correct checks for when SJLJ exceptions must be used.
12061
12062 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12063
12064         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
12065         default.
12066
12067 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
12068
12069         PR tree-optimization/36218
12070         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
12071         configure for the build system.
12072         (BUILD_LDFLAGS): Define.
12073         * configure: Regenerate.
12074         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
12075
12076 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
12077
12078         PR target/36424
12079         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
12080         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
12081         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
12082
12083 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
12084
12085         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
12086
12087 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
12088
12089         * config.gcc (Obsolete configurations): Remove list of
12090         configurations.
12091         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
12092         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
12093         targets matched by those patterns.
12094         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
12095         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
12096         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
12097         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
12098         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
12099         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
12100         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
12101         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
12102         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
12103         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
12104         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
12105         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
12106         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
12107         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
12108         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
12109         Make code for Solaris 7 and greater unconditional for Solaris.
12110         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
12111         Remove --with-* handling.
12112         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
12113         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
12114         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
12115         LINK_OS_WINDISS_SPEC): Remove.
12116         * config/rs6000/sysv4.opt (mwindiss): Remove.
12117         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
12118         * configure: Regenerate.
12119         * doc/cpp.texi: Don't mention BeOS.
12120         * doc/extend.texi (interrupt): Don't mention MS1.
12121         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
12122         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
12123         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
12124         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
12125         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
12126         Remove.
12127         * doc/invoke.texi (MT Options): Remove.
12128         (-mwindiss): Remove.
12129         (CRIS Options): Remove cris-axis-aout references.
12130         (HPPA Options): Don't mention hppa1.1-*-pro.
12131         * doc/md.texi: (MorphoTech family): Remove.
12132         * libgcc2.c: Don't handle UWIN.
12133         * config/alpha/t-unicosmk: Remove.
12134         * config/alpha/unicosmk.h: Remove.
12135         * config/arm/kaos-arm.h: Remove.
12136         * config/arm/kaos-strongarm.h: Remove.
12137         * config/arm/strongarm-coff.h: Remove.
12138         * config/arm/strongarm-elf.h: Remove.
12139         * config/arm/strongarm-pe.h: Remove.
12140         * config/arm/t-strongarm-pe: Remove.
12141         * config/arm/t-xscale-coff: Remove.
12142         * config/arm/t-xscale-elf: Remove.
12143         * config/arm/xscale-coff.h: Remove.
12144         * config/arm/xscale-elf.h: Remove.
12145         * config/chorus.h: Remove.
12146         * config/cris/aout.h: Remove.
12147         * config/cris/aout.opt: Remove.
12148         * config/cris/t-aout: Remove.
12149         * config/i386/beos-elf.h: Remove.
12150         * config/i386/kaos-i386.h: Remove.
12151         * config/i386/ptx4-i.h: Remove.
12152         * config/i386/sco5.h: Remove.
12153         * config/i386/sco5.opt: Remove.
12154         * config/i386/sysv4-cpp.h: Remove.
12155         * config/i386/sysv5.h: Remove.
12156         * config/i386/t-beos: Remove.
12157         * config/i386/t-sco5: Remove.
12158         * config/i386/t-uwin: Remove.
12159         * config/i386/uwin.asm: Remove.
12160         * config/i386/uwin.h: Remove.
12161         * config/kaos.h: Remove.
12162         * config/mips/windiss.h: Remove.
12163         * config/mt: Remove directory.
12164         * config/pa/pa-osf.h: Remove.
12165         * config/pa/pa-pro-end.h: Remove.
12166         * config/pa/t-pro: Remove.
12167         * config/ptx4.h: Remove.
12168         * config/rs6000/beos.h: Remove.
12169         * config/rs6000/kaos-ppc.h: Remove.
12170         * config/rs6000/t-beos: Remove.
12171         * config/rs6000/windiss.h: Remove.
12172         * config/sh/kaos-sh.h: Remove.
12173         * config/sol2-6.h: Remove.
12174         * config/sparc/sol26-sld.h: Remove.
12175         * config/sparc/sysv4-only.h: Remove.
12176         * config/vax/bsd.h: Remove.
12177         * config/vax/t-memfuncs: Remove.
12178         * config/vax/ultrix.h: Remove.
12179         * config/vax/vaxv.h: Remove.
12180         * config/windiss.h: Remove.
12181
12182 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
12183
12184         PR rtl-optimization/36438
12185         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
12186         for vector shifts with constant scalar shift operands.
12187
12188 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
12189
12190         * doc/invoke.texi: Document -march=xlr.
12191         * config/mips/xlr.md: New file.
12192         * config/mips/mips.md: Include it.
12193         (cpu): Add "xlr".
12194         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
12195         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
12196         (mips_rtx_cost_data): Likewise.
12197
12198 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
12199
12200         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
12201         PRE_INC and PRE_DEC cases.
12202
12203 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
12204
12205         PR rtl-optimization/36419
12206         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
12207         the emitting jump insn.
12208
12209         PR target/36362
12210         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
12211         is not bool, boolify the whole *expr_p and convert to the desired type.
12212
12213 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
12214
12215         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
12216         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
12217         Add omp_private_outer_ref hook, add another argument to
12218         omp_clause_default_ctor hook.
12219         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
12220         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
12221         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
12222         hook_tree_tree_tree_tree_null.
12223         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
12224         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
12225         * hooks.c (hook_tree_tree_tree_tree_null): New function.
12226         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
12227         * tree.def (OMP_TASK): New tree code.
12228         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
12229         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
12230         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
12231         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
12232         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
12233         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
12234         OMP_CLAUSE_COLLAPSE_EXPR): Define.
12235         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
12236         (OMP_DIRECTIVE_P): Add OMP_TASK.
12237         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
12238         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
12239         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
12240         and OMP_CLAUSE_UNTIED entries.
12241         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
12242         num_ops to 2.
12243         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12244         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
12245         * tree-pretty-print.c (dump_omp_clause): Handle
12246         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
12247         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
12248         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
12249         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
12250         warning about unsigned iterators.  Change decl/init/cond/incr
12251         arguments to TREE_VECs, check arguments for all collapsed loops.
12252         (c_finish_omp_taskwait): New function.
12253         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
12254         ws_clauses.
12255         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
12256         default_function_array_conversion on init.  Add par_clauses argument.
12257         If decl is present in parallel's lastprivate clause, change it to
12258         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
12259         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
12260         collapse count in clauses.
12261         (c_parser_omp_for, c_parser_omp_parallel): Adjust
12262         c_parser_omp_for_loop callers.
12263         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
12264         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
12265         (c_parser_omp_clause_name): Handle collapse and untied clauses.
12266         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
12267         functions.
12268         (c_parser_omp_clause_schedule): Handle schedule(auto).
12269         Include correct location in the error message.
12270         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
12271         and PRAGMA_OMP_CLAUSE_UNTIED.
12272         (OMP_TASK_CLAUSE_MASK): Define.
12273         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
12274         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
12275         * tree-nested.c (convert_nonlocal_omp_clauses,
12276         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
12277         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
12278         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12279         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
12280         OMP_CLAUSE_DECL.
12281         (conver_nonlocal_reference, convert_local_reference,
12282         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
12283         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
12284         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
12285         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
12286         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
12287         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
12288         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
12289         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
12290         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
12291         OMP_CLAUSE_UNTIED.
12292         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
12293         * c-common.h (c_finish_omp_taskwait): New prototype.
12294         * gimple-low.c (lower_stmt): Handle OMP_TASK.
12295         * tree-parloops.c (create_parallel_loop): Create 1 entry
12296         vectors for OMP_FOR_{INIT,COND,INCR}.
12297         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
12298         (make_edges): Handle OMP_TASK.
12299         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
12300         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12301         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
12302         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
12303         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
12304         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
12305         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
12306         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
12307         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
12308         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
12309         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
12310         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
12311         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
12312         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
12313         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
12314         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
12315         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
12316         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
12317         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
12318         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
12319         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
12320         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
12321         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
12322         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
12323         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
12324         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
12325         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
12326         original iterator is present in lastprivate clause or if
12327         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
12328         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12329         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
12330         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
12331         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
12332         if it is set, lookup var in outer contexts too.  Handle
12333         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
12334         to be implicitly determined firstprivate for task regions.
12335         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
12336         if it is set, lookup var in outer contexts too.  Set
12337         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
12338         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
12339         OMP_CLAUSE_UNTIED.  Take region_type as last argument
12340         instead of in_parallel and in_combined_parallel.
12341         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
12342         Adjust callers.
12343         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
12344         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
12345         (new_omp_context): Set default_kind to
12346         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
12347         (omp_region_type): New enum.
12348         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
12349         fields, add region_type.
12350         (new_omp_context): Take region_type as argument instead of is_parallel
12351         and is_combined_parallel.
12352         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
12353         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
12354         ctx->is_combined_parallel checks.
12355         (gimplify_omp_task): New function.
12356         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
12357         OMP_CLAUSE_UNTIED.
12358         * omp-low.c (extract_omp_for_data): Use schedule(static)
12359         for schedule(auto).  Handle pointer and unsigned iterators.
12360         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
12361         Add loops argument.  Extract data for collapsed OMP_FOR loops.
12362         (expand_parallel_call): Assert sched_kind isn't auto,
12363         map runtime schedule to index 3.
12364         (struct omp_for_data_loop): New type.
12365         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
12366         Add loop, loops, collapse and iter_type fields.
12367         (workshare_safe_to_combine_p): Disallow combined for if
12368         iter_type is unsigned long long.  Don't combine collapse > 1 loops
12369         unless all bounds and steps are constant.  Adjust extract_omp_for_data
12370         caller.
12371         (expand_omp_for_generic): Handle pointer, unsigned and long long
12372         iterators.  Handle collapsed OMP_FOR loops.  Adjust
12373         for struct omp_for_data changes.  If libgomp function doesn't return
12374         boolean_type_node, add comparison of the return value with 0.
12375         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
12376         pointer, unsigned and long long iterators.  Adjust for struct
12377         omp_for_data changes.
12378         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
12379         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
12380         unsigned long long.  Allocate loops array, pass it to
12381         extract_omp_for_data.  For collapse > 1 loops use always
12382         expand_omp_for_generic.
12383         (omp_context): Add sfield_map and srecord_type fields.
12384         (is_task_ctx, lookup_sfield): New functions.
12385         (use_pointer_for_field): Use is_task_ctx helper.  Change first
12386         argument's type from const_tree to tree.  Clarify comment.
12387         In OMP_TASK disallow copy-in/out sharing.
12388         (build_sender_ref): Call lookup_sfield instead of lookup_field.
12389         (install_var_field): Add mask argument.  Populate both record_type
12390         and srecord_type if needed.
12391         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
12392         in srecord_type.
12393         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
12394         and DECL_FIELD_OFFSET.
12395         (scan_sharing_clauses): Adjust install_var_field callers.  For
12396         firstprivate clauses on explicit tasks allocate the var by value in
12397         record_type unconditionally, rather than by reference.
12398         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
12399         Use is_taskreg_ctx instead of is_parallel_ctx.
12400         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12401         (create_omp_child_function_name): Add task_copy argument, use
12402         *_omp_cpyfn* names if it is true.
12403         (create_omp_child_function): Add task_copy argument, if true create
12404         *_omp_cpyfn* helper function.
12405         (scan_omp_parallel): Adjust create_omp_child_function callers.
12406         Rename parallel_nesting_level to taskreg_nesting_level.
12407         (scan_omp_task): New function.
12408         (lower_rec_input_clauses): Don't run constructors for firstprivate
12409         explicit task vars which are initialized by *_omp_cpyfn*.
12410         Pass outer var ref to omp_clause_default_ctor hook if
12411         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
12412         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
12413         OMP_CLAUSE_REDUCTION_INIT.
12414         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
12415         avoid duplicate setting of fields.  Handle
12416         OMP_CLAUSE_PRIVATE_OUTER_REF.
12417         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
12418         copy-out if TREE_READONLY, only copy-in.
12419         (expand_task_copyfn): New function.
12420         (expand_task_call): New function.
12421         (struct omp_taskcopy_context): New type.
12422         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
12423         New functions.
12424         (lower_omp_parallel): Rename to...
12425         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
12426         Call create_task_copyfn if srecord_type is needed.  Adjust
12427         sender_decl type.
12428         (task_shared_vars): New variable.
12429         (check_omp_nesting_restrictions): Warn if work-sharing,
12430         barrier, master or ordered region is closely nested inside OMP_TASK.
12431         Add warnings for barrier if closely nested inside of work-sharing,
12432         ordered, or master region.
12433         (scan_omp_1): Call check_omp_nesting_restrictions even for
12434         GOMP_barrier calls.  Rename parallel_nesting_level to
12435         taskreg_nesting_level.  Handle OMP_TASK.
12436         (lower_lastprivate_clauses): Even if some lastprivate is found on a
12437         work-sharing construct, continue looking for them on parent parallel
12438         construct.
12439         (lower_omp_for_lastprivate): Add lastprivate clauses
12440         to the beginning of dlist rather than end.  Adjust for struct
12441         omp_for_data changes.
12442         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
12443         not after it.  Handle collapsed OMP_FOR loops, adjust for
12444         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
12445         (get_ws_args_for): Adjust extract_omp_for_data caller.
12446         (scan_omp_for): Handle collapsed OMP_FOR
12447         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12448         (lower_omp_single_simple): If libgomp function doesn't return
12449         boolean_type_node, add comparison of the return value with 0.
12450         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
12451         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
12452         (parallel_nesting_level): Rename to...
12453         (taskreg_nesting_level): ... this.
12454         (is_taskreg_ctx): New function.
12455         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
12456         of is_parallel_ctx.
12457         (execute_lower_omp): Rename parallel_nesting_level to
12458         taskreg_nesting_level.
12459         (expand_omp_parallel): Rename to...
12460         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
12461         Call omp_task_call for OMP_TASK regions.
12462         (expand_omp): Adjust caller, handle OMP_TASK.
12463         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
12464
12465         * bitmap.c (bitmap_default_obstack_depth): New variable.
12466         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
12467         if argument is NULL and bitmap_default_obstack is already initialized.
12468         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
12469         at the end.
12470         * matrix-reorg.c (matrix_reorg): Likewise.
12471
12472 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
12473
12474         * config/i386/i386.md (*indirect_jump): Macroize using P
12475         mode iterator.  Remove !TARGET_64BIT from insn constraints.
12476         (*tablejump_1): Ditto.
12477         (*indirect_jump_rex64): Remove insn pattern.
12478         (*tablejump_1_rex64): Ditto.
12479         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
12480         and eh_return_si insn patterns.
12481
12482 2008-06-06  Richard Guenther  <rguenther@suse.de>
12483
12484         * tree-ssa-structalias.c (merge_smts_into): Remove.
12485         (find_what_p_points_to): Do not bother to compute the
12486         points-to set for pt_anything pointers.
12487         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
12488         for pt_anything pointers is ok.
12489
12490 2008-06-06  Jan Hubicka  <jh@suse.cz>
12491
12492         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
12493
12494 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12495
12496         * cgraph.c: Fix typos in comments.
12497         (cgraph_availability_names): Fix string typo.
12498         * fold-const.c: Fix typos in comments.
12499         (fold_binary): Fix typo in warning.
12500         * genautomata.c: Fix typos in comments.
12501         (check_presence_pattern_sets): Fix typo in local variable.
12502         (output_description): Fix typo in output.
12503         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
12504         * hwint.h: Likewise.
12505         * matrix-reorg.c (check_allocation_function): Likewise.
12506         * omega.c (smooth_weird_equations): Likewise.
12507         * auto-inc-dec.c: Fix typos in comments.
12508         * bb-reorder.c: Likewise.
12509         * builtins.c: Likewise.
12510         * c-common.c: Likewise.
12511         * c-cppbuiltin.c: Likewise.
12512         * c-parser.c: Likewise.
12513         * c-pretty-print.c: Likewise.
12514         * cfgcleanup.c: Likewise.
12515         * cfgexpand.c: Likewise.
12516         * cfghooks.c: Likewise.
12517         * cfglayout.c: Likewise.
12518         * cfgloopmanip.c: Likewise.
12519         * cgraphunit.c: Likewise.
12520         * coverage.c: Likewise.
12521         * dbxout.c: Likewise.
12522         * df-byte-scan.c: Likewise.
12523         * df-core.c: Likewise.
12524         * df-problems.c: Likewise.
12525         * df-scan.c: Likewise.
12526         * dfp.c: Likewise.
12527         * dominance.c: Likewise.
12528         * domwalk.c: Likewise.
12529         * dse.c: Likewise.
12530         * dwarf2out.c: Likewise.
12531         * emit-rtl.c: Likewise.
12532         * et-forest.c: Likewise.
12533         * function.c: Likewise.
12534         * function.h: Likewise.
12535         * gcc.c: Likewise.
12536         * gcov-io.c: Likewise.
12537         * gcov.c: Likewise.
12538         * gcse.c: Likewise.
12539         * genattrtab.c: Likewise.
12540         * ggc-page.c: Likewise.
12541         * gimplify.c: Likewise.
12542         * gthr-lynx.h: Likewise.
12543         * haifa-sched.c: Likewise.
12544         * ipa-cp.c: Likewise.
12545         * ipa-inline.c: Likewise.
12546         * ipa-prop.h: Likewise.
12547         * ipa-pure-const.c: Likewise.
12548         * ipa-struct-reorg.c: Likewise.
12549         * ipa-struct-reorg.h: Likewise.
12550         * ipa-type-escape.c: Likewise.
12551         * ipa.c: Likewise.
12552         * loop-doloop.c: Likewise.
12553         * mips-tfile.c: Likewise.
12554         * mkmap-flat.awk: Likewise.
12555         * mkmap-symver.awk: Likewise.
12556         * modulo-sched.c: Likewise.
12557         * omp-low.c: Likewise.
12558         * optabs.c: Likewise.
12559         * optabs.h: Likewise.
12560         * opts.c: Likewise.
12561         * passes.c: Likewise.
12562         * postreload-gcse.c: Likewise.
12563         * postreload.c: Likewise.
12564         * predict.c: Likewise.
12565         * pretty-print.h: Likewise.
12566         * profile.c: Likewise.
12567         * protoize.c: Likewise.
12568         * ra-conflict.c: Likewise.
12569         * real.c: Likewise.
12570         * recog.c: Likewise.
12571         * regclass.c: Likewise.
12572         * regs.h: Likewise.
12573         * reload.c: Likewise.
12574         * rtl-error.c: Likewise.
12575         * rtlanal.c: Likewise.
12576         * scan.h: Likewise.
12577         * sched-rgn.c: Likewise.
12578         * see.c: Likewise.
12579         * stmt.c: Likewise.
12580         * target.h: Likewise.
12581         * tree-dfa.c: Likewise.
12582         * tree-eh.c: Likewise.
12583         * tree-flow-inline.h: Likewise.
12584         * tree-inline.c: Likewise.
12585         * tree-into-ssa.c: Likewise.
12586         * tree-loop-distribution.c: Likewise.
12587         * tree-nested.c: Likewise.
12588         * tree-parloops.c: Likewise.
12589         * tree-pass.h: Likewise.
12590         * tree-pretty-print.c: Likewise.
12591         * tree-profile.c: Likewise.
12592         * tree-scalar-evolution.c: Likewise.
12593         * tree-sra.c: Likewise.
12594         * tree-ssa-alias-warnings.c: Likewise.
12595         * tree-ssa-ccp.c: Likewise.
12596         * tree-ssa-coalesce.c: Likewise.
12597         * tree-ssa-dom.c: Likewise.
12598         * tree-ssa-dse.c: Likewise.
12599         * tree-ssa-forwprop.c: Likewise.
12600         * tree-ssa-live.c: Likewise.
12601         * tree-ssa-live.h: Likewise.
12602         * tree-ssa-loop-im.c: Likewise.
12603         * tree-ssa-loop-ivopts.c: Likewise.
12604         * tree-ssa-loop-niter.c: Likewise.
12605         * tree-ssa-loop-prefetch.c: Likewise.
12606         * tree-ssa-phiopt.c: Likewise.
12607         * tree-ssa-phiprop.c: Likewise.
12608         * tree-ssa-sccvn.c: Likewise.
12609         * tree-ssa-ter.c: Likewise.
12610         * tree-ssa-threadupdate.c: Likewise.
12611         * tree-ssa.c: Likewise.
12612         * tree-vect-analyze.c: Likewise.
12613         * tree-vect-transform.c: Likewise.
12614         * tree-vectorizer.c: Likewise.
12615         * tree-vn.c: Likewise.
12616         * tree-vrp.c: Likewise.
12617         * tree.c: Likewise.
12618         * tree.def: Likewise.
12619         * tree.h: Likewise.
12620         * unwind-dw2-fde.c: Likewise.
12621         * unwind.inc: Likewise.
12622         * value-prof.c: Likewise.
12623         * vmsdbgout.c: Likewise.
12624
12625 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
12626
12627         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
12628         always place FP constants in the TOC for TARGET_POWERPC64.
12629         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
12630
12631 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
12632
12633         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
12634         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
12635         enable for TARGET_E500_DOUBLE.
12636         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
12637         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
12638         floating-point modes like integer modes for E500 double.
12639         (rs6000_legitimate_offset_address_p): Likewise.
12640         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
12641         addressing for DDmode for E500 double.
12642         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
12643         modes as using 64-bits of registers for E500 double.
12644         (spe_build_register_parallel): Do not handle DDmode or TDmode.
12645         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
12646         specially for E500 double.
12647         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
12648         TDmode for E500 double.
12649         (rs6000_gimplify_va_arg): Only handle SDmode in registers
12650         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
12651         (rs6000_split_multireg_move): Do not handle TDmode specially for
12652         E500 double.
12653         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
12654         using 64-bit registers for E500 double.
12655         (emit_frame_save): Do not handle DDmode specially for E500 double.
12656         (gen_frame_mem_offset): Likewise.
12657         (rs6000_function_value): Do not call spe_build_register_parallel
12658         for DDmode or TDmode.
12659         (rs6000_libcall_value): Likewise.
12660         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
12661         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
12662         for E500 double.
12663
12664 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
12665
12666         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
12667         in comments.
12668
12669 2008-06-04  Junjie Gu <jgu@tensilica.com>
12670
12671         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
12672         comparison for frame pointers.
12673
12674 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
12675
12676         PR target/27386
12677         * config/avr/avr.h (PUSH_ROUNDING): Remove.
12678
12679 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
12680
12681         PR target/30243
12682         * builtins.c (expand_builtin_signbit): Don't take lowpart when
12683         register is already smaller or equal to required mode.
12684
12685 2008-06-04  Xinliang David Li  <davidxl@google.com>
12686
12687         * tree-call-cdce.c: New file.
12688         (cond_dead_built_in_calls): New static variable.
12689         (input_domain): New struct.
12690         (check_pow): New function.
12691         (check_builtin_call): Ditto.
12692         (check_target_format): Ditto.
12693         (is_call_dce_candidate): Ditto.
12694         (gen_one_condition): Ditto.
12695         (gen_conditions_for_domain): Ditto.
12696         (get_domain): Ditto.
12697         (gen_conditions_for_pow_cst_base): Ditto.
12698         (gen_conditions_for_pow_int_base): Ditto.
12699         (gen_conditions_for_pow): Ditto.
12700         (get_no_error_domain): Ditto.
12701         (gen_shrink_wrap_conditions): Ditto.
12702         (shrink_wrap_one_built_in_call): Ditto.
12703         (shink_wrap_conditional_dead_built_in_calls): Ditto.
12704         (tree_call_cdce): Ditto.
12705         (gate_call_cdce): Ditto.
12706         (pass_call_cdce): New gimple pass.
12707         * passes.c: (init_optimization_passes): New pass.
12708         * tree-pass.h: New pass declaration.
12709         * opts.c (decode_options): New flag setting.
12710         * common.opt: Add -ftree-builtin-call-dce flag.
12711         * Makefile.in: Add new source file.
12712         * tempvar.def: New tv_id.
12713         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
12714
12715 2008-06-04  Richard Guenther  <rguenther@suse.de>
12716
12717         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
12718         (is_call_clobbered): Always check var_ann->call_clobbered.
12719         (mark_call_clobbered): Always set var_ann->call_clobbered.
12720         (clear_call_clobbered): Always clear var_ann->call_clobbered.
12721         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
12722         (reset_alias_info): Clear call clobbering info on MTAGs and
12723         globals as well.
12724         (set_pt_anything): Set pt_global_mem.
12725         (create_tag_raw): Adjust comment.
12726         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
12727
12728 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
12729             Maxim Kuvyrkov  <maxim@codesourcery.com>
12730
12731         * config/m68k/m68k.opt (mxgot): New option.
12732         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
12733         (m68k_output_addr_const_extra): New.
12734         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
12735         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
12736         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
12737         * doc/invoke.texi (M680x0 Options): Document -mxgot.
12738
12739 2008-06-04  Richard Guenther  <rguenther@suse.de>
12740
12741         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
12742         negative or non-representable offsets.
12743
12744 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
12745
12746         * config/i386/i386.c (ix86_gen_leave): New.
12747         (ix86_gen_pop1): Likewise.
12748         (ix86_gen_add3): Likewise.
12749         (ix86_gen_sub3): Likewise.
12750         (ix86_gen_sub3_carry): Likewise.
12751         (ix86_gen_one_cmpl2): Likewise.
12752         (ix86_gen_monitor): Likewise.
12753         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
12754         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
12755         ix86_gen_one_cmpl2 and ix86_gen_monitor.
12756         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
12757         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
12758         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
12759         (ix86_expand_epilogue): Updated.
12760         (print_operand): Handle integer register operand for 'z'.
12761         (ix86_expand_strlensi_unroll_1): Likewise.
12762         (ix86_expand_strlen): Likewise.
12763         (ix86_expand_builtin): Likewise.
12764         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
12765         mov{q}/mov{l} and add{q}/add{l}.
12766
12767 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
12768
12769         * config/i386/i386.md (P): New mode iterator.
12770         (SFmode push_operand splitter): Macroize DImode and SImode pushes
12771         using P mode iterator.
12772         (DFmode push_operand splitter): Ditto.
12773         (XFmode push_operand splitter): Ditto.
12774         (DFmode float_extend SFmode push_operand splitter): Ditto.
12775         (XFmode float_extend SFmode push_operand splitter): Do not generate
12776         SImode pushes for 64bit target.  Macroize Dimode and SImode
12777         pushes using P mode iterator.
12778         (XFmode float_extend DFmode push_operand splitter): Ditto.
12779
12780 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
12781
12782         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
12783         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
12784         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
12785         return type to int.
12786         (ix86_call_abi_override): Remove check for call_used_regs.
12787
12788 2008-06-03  Richard Guenther  <rguenther@suse.de>
12789
12790         * tree-ssa-structalias.c (find_func_aliases): Add constraints
12791         for the lhs of calls if the return type contains pointers.
12792
12793 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
12794
12795         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
12796         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
12797         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
12798         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
12799         of cfun and DEFAULT_ABI to deceide abi mode.
12800         (DEFAULT_ABI): New.
12801         (REG_PARM_STACK_SPACE): Removed.
12802         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
12803         (STACK_BOUNDARY): Use default target to deceide stack boundary.
12804         * config/i386/i386-protos.h (ix86_cfun_abi): New.
12805         (ix86_function_abi): Likewise.
12806         (ix86_function_type_abi): Likewise.
12807         (ix86_call_abi_override): Likewise.
12808         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
12809         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
12810         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
12811         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
12812         specific defines.
12813         (X86_64_REGPARM_MAX): New.
12814         (X86_64_SSE_REGPARM_MAX): New.
12815         (X64_REGPARM_MAX): New.
12816         (X64_SSE_REGPARM_MAX): New.
12817         (X86_32_REGPARM_MAX): New.
12818         (X86_32_SSE_REGPARM_MAX): New.
12819         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
12820         (ix86_function_regparm): Handle user calling abi.
12821         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
12822         by DEFAULT_ABI versus SYSV_ABI check.
12823         (ix86_reg_parm_stack_space): New.
12824         (ix86_function_type_abi): New.
12825         (ix86_call_abi_override): New.
12826         (ix86_function_abi): New.
12827         (ix86_cfun_abi): New.
12828         (init_cumulative_args): Call abi specific initialization.
12829         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
12830         (function_arg_64): Extend SSE_REGPARM_MAX check.
12831         (function_arg (): Remove TARGET_64BIT_MS_ABI.
12832         (ix86_pass_by_reference): Likewise.
12833         (ix86_function_value_regno_p): Likewise.
12834         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
12835         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
12836         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
12837         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
12838         (setup_incoming_varargs_64): Adjust regparm for call abi.
12839         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
12840         (ix86_va_start): Likewise.
12841         (ix86_gimplify_va_arg): Likewise.
12842         (ix86_expand_prologue): Likewise.
12843         (output_pic_addr_const): Likewise.
12844         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
12845         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
12846         (x86_output_mi_thunk): Likewise.
12847         (x86_function_profiler): Likewise.
12848         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
12849         (SYSV_ABI, MS_ABI): New constants.
12850         (DEFAULT_ABI): New.
12851         (init_regs): Add prototype of function in regclass.c file.
12852         (OVERRIDE_ABI_FORMAT): New.
12853         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
12854         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
12855         (OUTGOING_REG_PARM_STACK_SPACE): New.
12856         (ix86_reg_parm_stack_space): New prototype.
12857         (CUMULATIVE_ARGS): Add call_abi member.
12858         (machine_function): Add call_abi member.
12859         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
12860         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
12861
12862 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
12863
12864         PR target/34879
12865         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
12866         (avr_builtin_setjmp_frame_value): New function.
12867         * config/avr/avr.md (nonlocal_goto_receiver): Define.
12868         (nonlocal_goto): Define.
12869
12870 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
12871
12872         * config/mips/mips.c (mips_emit_loadgp): Return early if
12873         there is nothing do to, otherwise emit a blockage if
12874         !TARGET_EXPLICIT_RELOCS || crtl->profile.
12875         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
12876
12877 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12878
12879         * configure.ac: Drop unneeded backslash ending up in config.in.
12880         * acinclude.m4: Likewise.
12881         * config.in: Regenerate.
12882
12883 2008-05-26  Jan Hubicka  <jh@suse.cz>
12884
12885         * predict.c (maybe_hot_frequency_p): Break out of...
12886         (maybe_hot_bb_p): ... here.
12887         (maybe_hot_edge_p): New.
12888         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
12889         * basic-block.h (maybe_hot_edge_p): Declare.
12890
12891 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
12892
12893         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
12894         (*cmpfp_<mode>_cc): Ditto.
12895         (*fp_jcc_8<mode>_387): Ditto.
12896         (*fop_<MODEF:mode>_2_i387): Ditto.
12897         (*fop_<MODEF:mode>_3_i387): Ditto.
12898         (*fop_xf_2_i387): Ditto.
12899         (*fop_xf_3_i387): Ditto.
12900
12901 2008-06-02  Tomas Bily  <tbily@suse.cz>
12902
12903         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
12904
12905 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12906
12907         * config/mips/mips.c (mips_valid_offset_p): New function.
12908         (mips_valid_lo_sum_p): Likewise.
12909         (mips_classify_address): Use them.
12910         (mips_force_address): New function.
12911         (mips_legitimize_address): Use it.
12912         * config/mips/mips.md (MOVE128): New mode iterator.
12913         (movtf): Require TARGET_64BIT.  Remove empty strings.
12914         (*movtf_internal): Rename to...
12915         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
12916         of "R" and use {,fp}{load,store} attributes instead of "multi".
12917         Use a separate define_split.
12918         (*movtf_mips16): New pattern.
12919
12920 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12921
12922         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
12923         * config/mips/mips.c (mips_expand_before_return): New function.
12924         (mips_expand_epilogue): Call it.
12925         * config/mips/mips.md (return): Turn into a define_expand.
12926         (*return): New insn.
12927
12928 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
12929
12930         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
12931         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
12932         functions.  Do not emit uses and clobbers of CONCATs; individually
12933         use and clobber their operands.
12934         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
12935         gen_clobber, emit_use and gen_use.
12936         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
12937         (expand_builtin_return): Likewise.
12938         * cfgbuild.c (count_basic_blocks): Likewise.
12939         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
12940         * explow.c (emit_stack_restore): Likewise.
12941         * expmed.c (extract_bit_field_1): Likewise.
12942         * expr.c (convert_move, emit_move_complex_parts): Likewise.
12943         (emit_move_multi_word, store_constructor): Likewise.
12944         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
12945         (thread_prologue_and_epilogue_insns): Likewise.
12946         * lower-subreg.c (resolve_simple_move): Likewise.
12947         * optabs.c (widen_operand, expand_binop): Likewise.
12948         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
12949         * reload.c (find_reloads): Likewise.
12950         * reload1.c (eliminate_regs_in_insn): Likewise.
12951         * stmt.c (expand_nl_goto_receiver): Likewise.
12952         * config/alpha/alpha.md (builtin_longjmp): Likewise.
12953         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
12954         * config/arm/arm.c (arm_load_pic_register): Likewise.
12955         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
12956         * config/arm/arm.md (untyped_return): Likewise.
12957         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
12958         * config/avr/avr.c (expand_prologue): Likewise.
12959         * config/bfin/bfin.c (do_unlink): Likewise.
12960         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
12961         * config/cris/cris.c (cris_expand_prologue): Likewise.
12962         * config/darwin.c (machopic_indirect_data_reference): Likewise.
12963         (machopic_legitimize_pic_address): Likewise.
12964         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
12965         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
12966         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
12967         (ix86_expand_convert_uns_didf_sse): Likewise.
12968         (ix86_expand_vector_init_general): Likewise.
12969         * config/ia64/ia64.md (eh_epilogue): Likewise.
12970         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
12971         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
12972         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
12973         (config/iq2000/iq2000.c): Likewise.
12974         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
12975         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
12976         (builtin_longjmp): Likewise.
12977         * config/mn10300/mn10300.md (call, call_value): Likewise.
12978         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
12979         * config/pdp11/pdp11.md (abshi2): Likewise.
12980         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
12981         * config/s390/s390.c (s390_emit_prologue): Likewise.
12982         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
12983         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
12984         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
12985         * config/sh/sh.c (prepare_move_operands): Likewise.
12986         (output_stack_adjust, sh_expand_epilogue): Likewise.
12987         (sh_set_return_address, sh_expand_t_scc): Likewise.
12988         * config/sparc/sparc.c (load_pic_register): Likewise.
12989         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
12990         * config/spu/spu.c (spu_expand_epilogue): Likewise.
12991         * config/v850/v850.c (expand_epilogue): Likewise.
12992
12993 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
12994
12995         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
12996         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
12997         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
12998         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
12999         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
13000         stack pointer register.
13001         (output_movhi): Remove code for interrupt specific writing to the
13002         stack pointer register.
13003
13004 2008-05-31  Richard Guenther  <rguenther@suse.de>
13005
13006         PR tree-optimization/34244
13007         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
13008         (tree_expr_nonzero_warnv_p): Likewise.
13009         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
13010         ssa_name_nonnegative_p.
13011         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
13012         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
13013         not tree_expr_nonzero_warnv_p.
13014
13015         PR tree-optimization/36262
13016         Revert
13017         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
13018
13019         PR tree-optimization/34244
13020         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
13021         (record_numbers_of_iterations): New function.
13022         (execute_vrp): Cache the numbers of iterations of loops.
13023         * tree-scalar-evolution.c (scev_reset_except_niters):
13024         New function.
13025         (scev_reset): Use scev_reset_except_niters.
13026         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
13027
13028 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
13029
13030         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
13031         __WORKAROUND_RETS when appropriate.
13032
13033 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
13034
13035         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
13036         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
13037         mode iterator.
13038         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
13039         *fop_df_comm_sse insn patterns using MODEF mode iterator.
13040         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
13041         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
13042         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
13043         *fop_df_1_mixed insn patterns using MODEF mode iterator.
13044         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
13045         *fop_df_1_sse insn patterns using MODEF mode iterator.
13046         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
13047         *fop_df_1_i387 insn patterns using MODEF mode iterator.
13048         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
13049         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
13050         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
13051         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
13052         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
13053         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
13054         (*fop_xf_4_i387): Use <MODE> for mode attribute.
13055         (*fop_xf_5_i387): Ditto.
13056         (*fop_xf_6_i387): Ditto.
13057
13058 2008-05-30  Richard Guenther  <rguenther@suse.de>
13059
13060         * builtins.c (build_string_literal): Avoid generating
13061         a non-gimple_val result.
13062
13063 2008-05-30  DJ Delorie  <dj@redhat.com>
13064
13065         * exec-tool.in: Use an environment variable (private) instead of a
13066         file (shared) as a semaphore, so as to not break parallel builds.
13067
13068 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
13069
13070         * optabs.c (maybe_encapsulate_block): Remove.
13071         (emit_libcall_block): Adjust accordingly.
13072         * optabs.h (maybe_encapsulate_block): Remove prototype.
13073
13074         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
13075         Don't use maybe_encapsulate_block.
13076
13077 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
13078
13079         * config/rs6000/rs6000.c (rs6000_legitimize_address,
13080         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
13081         rtx is a SYMBOL_REF before calling get_pool_constant.
13082
13083 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
13084
13085         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
13086
13087 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
13088
13089         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
13090         rather than OS names to choose INO_T_EQ definition.
13091         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
13092         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
13093
13094 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
13095
13096         PR target/36348
13097         * config/darwin-f.c: New.
13098         * config/t-darwin: Added rule to build darwin-f.o.
13099         * config.gcc: Defined new variable, fortran_target_objs.
13100         (*-*-darwin*): Set fortran_target_objs.
13101         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
13102         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
13103         * configure: Regenerated.
13104
13105 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
13106
13107         PR target/35771
13108         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
13109         canonical type if needed.
13110
13111 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
13112
13113         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
13114
13115 2008-05-29  Richard Guenther  <rguenther@suse.de>
13116
13117         PR tree-optimization/36343
13118         PR tree-optimization/36346
13119         PR tree-optimization/36347
13120         * tree-flow.h (clobber_what_p_points_to): Declare.
13121         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
13122         pointed-to variable is dereferenced is irrelevant to whether
13123         the pointer can access the pointed-to variable.
13124         (clobber_what_p_points_to): New function.
13125         * tree-ssa-alias.c (set_initial_properties): Use it.
13126         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
13127         call clobber check for NMTs.
13128
13129 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
13130
13131         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
13132         for printing gcov_type.
13133
13134 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
13135
13136         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
13137         and the eh region information.
13138         * value-prof.c (gimple_move_stmt_histograms): New function.
13139         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
13140
13141 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
13142
13143         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
13144
13145 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
13146
13147         * value-prof.c (tree_ic_transform): Print counts.
13148         * tree-profile.c (tree_gen_ic_func_profiler):
13149         Clear __gcov_indreict_call_callee variable to avoid misattribution
13150         of the profile.
13151
13152 2008-05-28  Rafael Espíndola  <espindola@google.com>
13153
13154         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
13155         invalid sharing.
13156
13157 2008-05-28  Richard Guenther  <rguenther@suse.de>
13158
13159         PR tree-optimization/36339
13160         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
13161         and clobbering code out of the loop.
13162
13163 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13164
13165         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
13166         letters defined.
13167
13168         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
13169         s390_contiguous_bitmask_p, s390_symref_operand_p,
13170         s390_check_symref_alignment, s390_reload_larl_operand,
13171         s390_reload_symref_address): New functions.
13172         (s390_branch_condition_mnemonic): Support compare and branch
13173         instructions.
13174         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
13175         and 'W' constraints.
13176         (s390_secondary_reload): Add secondary reloads for unaligned
13177         symbol refs or symbol refs to floating point or QI/TI mode
13178         integer values.
13179         (legitimate_address_p): Accept symbol references as addresses.
13180         (s390_expand_insv): Use rotate and insert selected bits
13181         instruction for insv when building for z10.
13182         (print_operand_address): Handle symbol ref addresses.
13183         (print_operand): Output modifier 'c' added for signed byte values.
13184         (s390_encode_section_info): Mark symbol refs with
13185         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
13186
13187         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
13188         (length attribute): RRF, RRR have 4 byte length.
13189         (FPALL, INTALL): New mode iterators added.
13190         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
13191         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
13192         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
13193         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
13194         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
13195         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
13196         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
13197         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
13198         instructions.
13199         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
13200         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
13201         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
13202         reload<INTALL:mode><P:mode>_toreg_z10,
13203         reload<FPALL:mode><P:mode>_tomem_z10,
13204         reload<FPALL:mode><P:mode>_toreg_z10,
13205         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
13206         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
13207         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
13208         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
13209         definition.
13210         (movmem, clrmem, cmpmem): New splitters added.
13211
13212         * config/s390/predicates.md (larl_operand): Use
13213         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
13214         SYMBOL_REF_ALIGN1_P.
13215         (s390_signed_integer_comparison,
13216         s390_unsigned_integer_comparison): New predicates.
13217
13218         * config/s390/s390-protos.h (s390_check_symref_alignment,
13219         s390_contiguous_bitmask_p, s390_reload_larl_operand,
13220         s390_reload_symref_address,
13221         s390_compare_and_branch_condition_mask): Prototypes added.
13222
13223         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
13224         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
13225         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
13226
13227 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13228
13229         * config/s390/s390.c (z10_cost): New cost function for z10.
13230         (s390_handle_arch_option, override_options): Support -march=z10 switch.
13231         (s390_issue_rate): Adjust issue rate for z10.
13232         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
13233         (processor_flags): Add PF_Z10.
13234         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
13235         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
13236         * gcc/config.gcc: Add z10.
13237
13238 2008-05-28  Richard Guenther  <rguenther@suse.de>
13239
13240         PR tree-optimization/36291
13241         * tree-flow. h (struct gimple_df): Remove var_anns member.
13242         * tree-flow-inline.h (gimple_var_anns): Remove.
13243         (var_ann): Simplify.
13244         * tree-dfa.c (create_var_ann): Simplify.
13245         (remove_referenced_var): Clear alias info from var_anns of globals.
13246         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
13247         (delete_tree_ssa): Clear alias info from var_anns of globals.
13248         Do not free var_anns.
13249         (var_ann_eq): Remove.
13250         (var_ann_hash): Likewise.
13251
13252 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
13253
13254         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
13255         and loongson2f entries.
13256         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
13257         * config/mips/mips.h (processor_type): Add Loongson-2E
13258         and Loongson-2F entries.
13259         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
13260         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
13261         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
13262         * doc/invoke.texi (MIPS Options): Document loongson2e
13263         and loongson2f processor names.
13264
13265 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13266
13267         PR target/35767
13268         PR target/35771
13269         * config/i386/i386.c (ix86_function_arg_boundary): Use
13270         alignment of canonical type.
13271         (ix86_expand_vector_move): Check unaligned memory access for
13272         all SSE modes.
13273
13274 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13275
13276         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
13277         Moved to the front of file.
13278
13279 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
13280             H.J. Lu  <hongjiu.lu@intel.com>
13281
13282         * dwarf2out.c (current_fde): New.
13283         (add_cfi): Use it.
13284         (lookup_cfa:): Likewise.
13285         (dwarf2out_end_epilogue): Likewise.
13286         (dwarf2out_note_section_used): Likewise.
13287
13288 2008-05-27  Michael Matz  <matz@suse.de>
13289
13290         PR c++/27975
13291         * c.opt (Wenum-compare): New warning option.
13292         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
13293
13294 2008-05-27  Michael Matz  <matz@suse.de>
13295
13296         PR middle-end/36326
13297         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
13298         non-BLKmode types.
13299         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
13300         into memory as tail calls.
13301
13302 2008-05-27  Richard Guenther  <rguenther@suse.de>
13303
13304         PR tree-optimization/36339
13305         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
13306         pointers cause all addressable variables to be call clobbered.
13307
13308 2008-05-27  Richard Guenther  <rguenther@suse.de>
13309
13310         PR tree-optimization/36245
13311         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
13312
13313 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13314
13315         * config/s390/s390.md: Replace all occurences of the 'm'
13316         constraint with 'RT'.
13317
13318 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13319
13320         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
13321         definitions added.
13322         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
13323         "*movdi_64".
13324         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
13325         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
13326         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
13327
13328 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13329
13330         * reload.c: (find_reloads): Skip alternatives according to the
13331         "enabled" attribute. Constify the constraint variable.
13332         * recog.c (get_attr_enabled): Add default implementation.
13333         (extract_insn): Set the alternative_enabled_p array
13334         in the recog_data struct.
13335         (preprocess_constraints, constrain_operands): Skip
13336         alternatives according to the "enabled" attribute
13337         * recog.h (struct recog_data): New field alternative_enabled_p.
13338         (skip_alternative): New inline function.
13339         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
13340         (record_reg_classes): Skip alternative according to the
13341         "enabled" attribute.
13342
13343         * doc/md.texi: Add documention for the "enabled" attribute.
13344
13345 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13346
13347         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
13348         * postreload.c (reload_cse_simplify_operands): Replace 'm'
13349         constraint with TARGET_MEM_CONSTRAINT.
13350         * recog.c (asm_operand_ok, preprocess_constraints,
13351         constrain_operands): Likewise.
13352         * regclass.c (record_reg_classes): Likewise.
13353         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
13354         * reload1.c (maybe_fix_stack_asms): Likewise.
13355         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
13356         * recog.h: Adjust comment.
13357         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
13358         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
13359         * doc/md.texi: Add a note to description of 'm' constraint.
13360         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
13361
13362 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
13363
13364         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
13365         that the bitfield is of integral type before testing its precision.
13366
13367 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
13368             Sa Liu  <saliu@de.ibm.com>
13369
13370         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
13371         __modti3, __udivti3, __umodti3 and __udivmodti4.
13372         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
13373         that implement TImode mul and div functions.
13374         * config/spu/multi3.c: New. Implement __multi3.
13375         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
13376         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
13377         functions on SPU.
13378
13379 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
13380
13381         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
13382         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
13383         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
13384         tls_sysv_suffix): New mode and mode attribute iterators.
13385         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
13386         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
13387         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
13388         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
13389         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
13390         iterators.
13391
13392 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
13393
13394         PR tree-optimization/36329
13395         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
13396         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
13397         * cgraphbuild.c (initialize_inline_failed): Use the latter
13398         macro in lieu of the former.
13399         * ipa-inline.c (cgraph_mark_inline): Likewise.
13400         (cgraph_decide_inlining_of_small_function): Likewise.
13401         (cgraph_decide_inlining): Likewise.
13402         (cgraph_decide_inlining_incrementally): Likewise.
13403
13404 2008-05-26  Tristan Gingold  <gingold@adacore.com>
13405             Anatoly Sokolov  <aesok@post.ru>
13406
13407         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
13408         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
13409         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
13410         optimization for 'avr6' architecture.
13411
13412 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
13413
13414         PR target/34932
13415         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
13416
13417 2008-05-26  Richard Guenther  <rguenther@suse.de>
13418
13419         * tree-ssa-sccvn.c (expr_has_constants): Declare.
13420         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
13421
13422 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
13423
13424         PR middle-end/36253
13425         * caller-save.c (insert_restore): Verify alignment of spill space.
13426         (insert_save): Likewise.
13427         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
13428         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
13429         (STACK_SLOT_ALIGNMENT): Likewise.
13430         * function.c (LOCAL_ALIGNMENT): Removed.
13431         (get_stack_local_alignment): New.
13432         (assign_stack_local): Use it.  Set alignment on stack slot.
13433         (assign_stack_temp_for_type): Use get_stack_local_alignment.
13434         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
13435         (STACK_SLOT_ALIGNMENT): New.
13436         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
13437         stack slot in XFmode.
13438
13439         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
13440
13441 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
13442
13443         PR/36321
13444         * config/i386/i386.md (allocate_stack_worker_64): Make sure
13445         argument operand in rax isn't removed.
13446
13447 2008-05-26  Richard Guenther  <rguenther@suse.de>
13448
13449         PR middle-end/36300
13450         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
13451         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
13452
13453 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13454
13455         PR bootstrap/36331
13456         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
13457
13458 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
13459
13460         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
13461         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
13462
13463 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
13464
13465         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
13466         build a trampoline if we don't want one.
13467         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
13468         return zero for nested functions if we don't want a trampoline.
13469
13470 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13471
13472         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
13473
13474 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13475
13476         PR fortran/18428
13477         * c.opt: Removed undocumented option '-lang-fortran'.
13478         * c-common.h: Removed global variable 'lang_fortran'.
13479         * c-opts.c (c_common_handle_option): Removed code to handle
13480         option '-lang-fortran'. Updated includes.
13481         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
13482         definition of '__GFORTRAN__'.
13483         (define__GNUC__): Reimplemented to use BASEVER and
13484         cpp_define_formatted.
13485         (builtin_define_with_value_n): Removed.
13486         * c-incpath.h: Renamed to ...
13487         * incpath.h: ... this.
13488         * c-incpath.c: Renamed to ...
13489         * incpath.c: ... this. Updated includes.
13490         * fix-header.c: Updated includes.
13491         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
13492         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
13493         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
13494
13495 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
13496
13497         * tree.h: Update the table of flags used on tree nodes.
13498         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
13499         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
13500         (FORCED_LABEL): Add access check.
13501         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
13502         (ASM_INPUT_P): Likewise.
13503         (ASM_VOLATILE_P): Likewise.
13504         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
13505         (OMP_SECTION_LAST): Access private_flag directly.
13506         (OMP_RETURN_NOWAIT): Likewise.
13507         (OMP_PARALLEL_COMBINED): Likewise.
13508         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
13509         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
13510         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
13511         deprecated_flag directly.
13512
13513 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
13514
13515         * final.c (frame_pointer_needed): Removed.
13516         * flags.h (frame_pointer_needed): Likewise.
13517
13518         * function.h (rtl_data): Add frame_pointer_needed.
13519         (frame_pointer_needed): New.
13520
13521 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
13522
13523         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
13524
13525 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
13526
13527         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
13528         SRC is a REG.
13529
13530 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
13531
13532         * c-common.c (strip_array_types): Move function to..
13533         * tree.c: ..here.
13534         (get_inner_array_type): Delete.
13535         * c-common.h (strip_array_types): Move declaration to..
13536         * tree.h: ..here.
13537         (get_inner_array_type): Delete.
13538         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
13539         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
13540         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
13541         * config/pa/pa.c (emit_move_sequence): Likewise.
13542
13543 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
13544
13545         * config/i386/i386.md (*sse_prologue_save_insn): Set length
13546         attribute to 34.
13547
13548 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
13549
13550         * function.c: Include target hook for nonlocal_goto frame value.
13551
13552 2008-05-24  Richard Guenther  <rguenther@suse.de>
13553
13554         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
13555         variable can be only accessed through a pointer or a union.
13556
13557 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13558
13559         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
13560         * doc/extend.texi: Likewise.
13561
13562 2008-05-23  DJ Delorie  <dj@redhat.com>
13563
13564         * config/m32c/jump.md (untyped_call): Add.
13565
13566         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
13567         for A24 to PSImode.
13568         (m32c_address_cost): Detail costs for indirect offsets.
13569
13570 2008-05-23  Rafael Espíndola  <espindola@google.com>
13571
13572         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
13573         if a node is a SUBREG.
13574         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
13575         is a SUBREG.
13576
13577 2008-05-23  Paul Brook  <paul@codesourcery.com>
13578             Carlos O'Donell  <carlos@codesourcery.com>
13579
13580         * doc/extend.texi: Clarify use of __attribute__((naked)).
13581         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
13582         * target.h (gcc_target): Add allocate_stack_slots_for_args.
13583         * function.c (use_register_for_decl): Use
13584         targetm.calls.allocate_stack_slots_for_args.
13585         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
13586         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
13587         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
13588
13589 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13590
13591         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
13592
13593 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
13594
13595         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
13596         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
13597         is only rounded once.
13598
13599 2008-05-23  Richard Guenther  <rguenther@suse.de>
13600
13601         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
13602
13603 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
13604             Jakub Jelinek  <jakub@redhat.com>
13605
13606         PR target/36079
13607         * configure.ac: Handle --enable-cld.
13608         * configure: Regenerated.
13609         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
13610         * config/i386/i386.h (struct machine_function): Add needs_cld field.
13611         (ix86_current_function_needs_cld): New define.
13612         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
13613         (cld): New isns pattern.
13614         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
13615         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
13616         * config/i386/i386.opt (mcld): New option.
13617         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
13618         TARGET_CLD and ix86_current_function_needs_cld.
13619         (override_options): Use -mcld by default for 32-bit code if
13620         USE_IX86_CLD.
13621
13622         * doc/install.texi (Options specification): Document --enable-cld.
13623         * doc/invoke.texi (Machine Dependent Options)
13624         [i386 and x86-64 Options]: Add -mcld option.
13625         (Intel 386 and AMD x86-64 Options): Document -mcld option.
13626
13627 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
13628         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
13629         (return_in_memory_64): Likewise.
13630         (return_in_memory_ms_64): Likewise.
13631
13632 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13633
13634         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
13635         * builtins.c (fold_builtin_fpclassify): New.
13636         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
13637         * builtins.def (BUILT_IN_FPCLASSIFY): New.
13638         * c-common.c (handle_type_generic_attribute): Adjust to accept
13639         fixed arguments before an elipsis.
13640         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
13641         * doc/extend.texi: Document __builtin_fpclassify.
13642
13643 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
13644
13645         * omp-low.c (gate_expand_omp_ssa): Remove.
13646         (pass_expand_omp_ssa): Remove.
13647         (gate_expand_omp): Do not check for flag_openmp_ssa.
13648         * common.opt (-fopenmp-ssa): Remove.
13649         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
13650
13651 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
13652
13653         * config/sh/sh.opt (mfixed-range): New option.
13654         * config/sh/sh-protos.h (sh_fix_range): Declare.
13655         * config/sh/sh.c (sh_fix_range): New function.
13656         * config/sh/sh.h (sh_fixed_range_str): Declare.
13657         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
13658         is not empty.
13659         * doc/invoke.texi (SH Options): Document -mfixed-range.
13660
13661 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
13662
13663         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
13664         it before the redeclaration.
13665
13666 2008-05-22  Anatoly Sokolov <aesok@post.ru>
13667
13668         * config/avr/avr.c (get_sequence_length): Add new function.
13669         (expand_prologue, expand_epilogue): Remove duplicate code.
13670
13671 2008-05-22  Rafael Espíndola  <espindola@google.com>
13672
13673         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
13674         sharing.
13675
13676 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
13677
13678         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
13679         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
13680
13681         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
13682         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
13683         (vect_update_misalignment_for_peel): Likewise.
13684         (vector_alignment_reachable_p): Likewise.
13685         * tree-vect-transform.c (vectorizable_load): Likewise.
13686         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
13687         (get_vectype_for_scalar_type): Pass mode of scalar_type
13688         to UNITS_PER_SIMD_WORD.
13689
13690         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
13691         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
13692         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
13693         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
13694         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
13695
13696 2008-05-22  Ira Rosen  <irar@il.ibm.com>
13697
13698         PR tree-optimization/36293
13699         * tree-vect-transform.c (vect_transform_strided_load): Don't check
13700         if the first load must be skipped because of a gap.
13701
13702 2008-05-22  Richard Guenther  <rguenther@suse.de>
13703
13704         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
13705         more cases of offset disambiguation that is possible if
13706         strict-aliasing rules apply.
13707         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
13708         for basic offset and type-based disambiguation.
13709
13710 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13711
13712         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
13713         ix86_expand_vector_set on V16QImode for SSE4.1.
13714
13715 2008-05-21  Tom Tromey  <tromey@redhat.com>
13716
13717         * c.opt (Wimport): Mark as undocumented.
13718         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
13719         -Wno-import.
13720         (Warning Options): Likewise.
13721         * doc/cppopts.texi: Don't mention -Wimport.
13722
13723 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
13724
13725         PR tree-optimization/36287
13726         PR tree-optimization/36286
13727         * lambda-code.c (build_access_matrix): Do not use the loop->num
13728         for computing the number of induction variables: use the loop depth
13729         instead.
13730
13731 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
13732
13733         PR/36280
13734         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
13735         option -f(no-)leading-underscore.
13736
13737 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13738
13739         * config/i386/i386.c (ix86_expand_vector_init_general): Use
13740         GET_MODE_NUNITS (mode).
13741
13742 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
13743
13744         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
13745         (-mmulhw): Add 464 to description.
13746         (-mdlmzb): Likewise.
13747         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
13748         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
13749         464fp entries.
13750         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
13751         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
13752         * config/rs6000/rs6000.md: Update comments for 464.
13753
13754 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
13755
13756         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
13757
13758 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13759
13760         * config/i386/sse.md (vec_extractv4sf): Removed.
13761         (vec_extractv2df): Likewise.
13762         (vec_extractv2di): Likewise.
13763         (vec_extractv4si): Likewise.
13764         (vec_extractv8hi): Likewise.
13765         (vec_extractv16qi): Likewise.
13766         (vec_extract<mode>): New.
13767
13768 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13769
13770         * config/i386/sse.md (vec_setv4sf): Removed.
13771         (vec_setv2df): Likewise.
13772         (vec_setv2di): Likewise.
13773         (vec_setv4si): Likewise.
13774         (vec_setv8hi): Likewise.
13775         (vec_setv16qi): Likewise.
13776         (vec_set<mode>): New.
13777
13778 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13779
13780         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
13781         goto for vec_concat and vec_interleave.
13782
13783 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13784
13785         * config/i386/sse.md (vec_initv4sf): Removed.
13786         (vec_initv2df): Likewise.
13787         (vec_initv2di): Likewise.
13788         (vec_initv4si): Likewise.
13789         (vec_initv8hi): Likewise.
13790         (vec_initv16qi): Likewise.
13791         (vec_init<mode>): New.
13792
13793 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
13794
13795         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
13796
13797 2008-05-21  Tom Tromey  <tromey@redhat.com>
13798
13799         * ggc-zone.c (lookup_page_table_if_allocated): New function.
13800         (zone_find_object_offset): Likewise.
13801         (gt_ggc_m_S): Likewise.
13802         (highest_bit): Likewise.
13803         * ggc-page.c (gt_ggc_m_S): New function.
13804         * stringpool.c (string_stack): Remove.
13805         (init_stringpool): Update.
13806         (ggc_alloc_string): Use ggc_alloc.
13807         (maybe_delete_ident): New function.
13808         (ggc_purge_stringpool): Likewise.
13809         (gt_ggc_m_S): Remove.
13810         * ggc-common.c (ggc_protect_identifiers): New global.
13811         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
13812         ggc_protect_identifiers.
13813         * ggc.h (ggc_protect_identifiers): Declare.
13814         (gt_ggc_m_S): Update.
13815         (ggc_purge_stringpool): Declare.
13816         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
13817         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
13818         special case.
13819         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
13820
13821 2008-05-21  David S. Miller  <davem@davemloft.net>
13822
13823         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
13824         tmake_file.
13825
13826 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
13827
13828         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
13829         once finished.
13830
13831 2008-05-20  David Daney  <ddaney@avtrex.com>
13832
13833         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
13834         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
13835         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
13836         UNSPEC_UPDATE_GOT_VERSION): Renumber.
13837         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
13838         (atomic_hiqi_op): New define_code_iterator.
13839         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
13840         mips_expand_compare_and_swap_12.
13841         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
13842         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
13843         (sync_<optab><mode>, sync_old_<optab><mode>,
13844         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13845         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
13846         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
13847         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
13848         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
13849         (test_and_set_12): New insn.
13850         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
13851         sync_new_<optab><mode>, sync_old_nand<mode>,
13852         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
13853         clobber to operand 0 for SI and DI mode insns.
13854         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
13855         mips_gen_fn_4): New typedefs.
13856         (mips_gen_fn_ptrs): Define new union type.
13857         (mips_expand_compare_and_swap_12): Remove declaration.
13858         (mips_expand_atomic_qihi): Declare function.
13859         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
13860         (mips_expand_atomic_qihi): ... this.  Use new generator function
13861         parameter.
13862         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
13863         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
13864         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
13865         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
13866         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
13867         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
13868         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
13869         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
13870         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
13871         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
13872         New macros.
13873
13874 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
13875
13876         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
13877         the missing break.
13878
13879 2008-05-20  Anatoly Sokolov <aesok@post.ru>
13880
13881         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
13882         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
13883         (avr_attribute_table): Add 'OS_main' function attribute.
13884         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
13885         functions with 'OS_main' attribute.
13886
13887 2008-05-20  Richard Guenther  <rguenther@suse.de>
13888
13889         PR tree-optimization/35204
13890         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
13891         helper, split out from ...
13892         (DFS): ... here.  Make the DFS walk non-recursive.
13893
13894 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
13895             Jan Sjodin  <jan.sjodin@amd.com>
13896
13897         PR tree-optimization/36181
13898         * tree-parloops.c (loop_has_vector_phi_nodes): New.
13899         (parallelize_loops): Don't parallelize when the loop has vector
13900         phi nodes.
13901
13902 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13903             Sebastian Pop  <sebastian.pop@amd.com>
13904
13905         * tree-loop-linear.c (gather_interchange_stats): Look in the access
13906         matrix, and never look at the tree representation of the memory
13907         accesses.
13908         (linear_transform_loops): Computes parameters and access matrices.
13909         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
13910         when fails.
13911         (access_matrix_get_index_for_parameter): New.
13912         * tree-data-ref.h (struct access_matrix): New.
13913         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
13914         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
13915         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
13916         am_vector_index_for_loop): New.
13917         (struct data_reference): Add field access_matrix.
13918         (DR_ACCESS_MATRIX): New.
13919         (compute_data_dependences_for_loop): Update declaration.
13920         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
13921         * lambda.h (lambda_vector_vec_p): Declared.
13922         * lambda-code.c: Depend on pointer-set.h.
13923         (lambda_collect_parameters_from_af, lambda_collect_parameters,
13924         av_for_af_base, av_for_af, build_access_matrix,
13925         lambda_compute_access_matrices): New.
13926         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
13927
13928 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
13929
13930         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
13931         $SOURCEDIR/include.
13932
13933 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13934             Sebastian Pop  <sebastian.pop@amd.com>
13935
13936         PR tree-optimization/36206
13937         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
13938         FOLD_CONVERSIONS.
13939         (instantiate_scev_1): Rename flags to fold_conversions.
13940         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
13941         outeside instantiation_loop.
13942         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
13943         (evolution_function_is_affine_or_constant_p): Removed.
13944         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
13945         instantiate_scev.
13946         (analyze_siv_subscript): Pass in the loop nest number.
13947         Call evolution_function_is_affine_in_loop instead of
13948         evolution_function_is_affine_p.
13949         (analyze_overlapping_iterations): Pass in the loop nest number.
13950
13951 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
13952             Sebastian Pop  <sebastian.pop@amd.com>
13953
13954         PR tree-optimization/36206
13955         * tree-chrec.h (chrec_fold_op): New.
13956         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
13957         and other trees.
13958
13959 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
13960
13961         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
13962         (DIRS_EQ): New.
13963         (remove_duplicates): Do not set inode on non-inode systems.
13964         Use DIRS_EQ.
13965
13966 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
13967
13968         * config.gcc (tm_file): Update comments about relative pathnames.
13969
13970 2008-05-20  Richard Guenther  <rguenther@suse.de>
13971
13972         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
13973         * tree-ssa-sccvn.c (process_scc): Likewise.
13974         * tree-ssa-sink.c (execute_sink_code): Likewise.
13975         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
13976         * tree-vrp.c (process_assert_insertions): Likewise.
13977         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
13978         (perform_tree_ssa_dce): Likewise.
13979         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
13980         (dump_dominator_optimization_stats): Likewise.
13981         * tree-vectorizer.c (vectorize_loops): Likewise.
13982
13983 2008-05-20  Richard Guenther  <rguenther@suse.de>
13984
13985         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
13986
13987 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
13988
13989         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
13990         (ix86_i386elf_return_in_memory): Likewise.
13991         (ix86_i386interix_return_in_memory): Likewise.
13992         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
13993         (SUBTARGET_RETURN_IN_MEMORY): New.
13994         * config/i386/i386elf.h: Likewise.
13995         * config/i386/ptx4-i.h: Likewise.
13996         * config/i386/sol2-10.h: Likewise.
13997         * config/i386/sysv4.h: Likewise.
13998         * config/i386/vx-common.h: Likewise.
13999         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
14000         * config/i386/i386.c (ix86_return_in_memory): Made static and
14001         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
14002         (ix86_i386elf_return_in_memory): Removed.
14003         (ix86_i386interix_return_in_memory): Removed.
14004         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
14005         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
14006
14007 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
14008
14009         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
14010
14011 2008-05-19  Xinliang David Li  <davidxl@google.com>
14012
14013         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
14014         * opts.c: Ditto.
14015         * common.opt: Ditto.
14016         * doc/invoke.texi: Ditto.
14017
14018 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14019
14020         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
14021         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
14022
14023 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14024
14025         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
14026         sizes of operand array from 8/4 to 4/2.
14027         (ix86_expand_vector_init_general): Change size of operand array
14028         from 32 to 16.  Remove op0, op1 and half_mode.
14029
14030 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14031
14032         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
14033         (ix86_expand_vector_init_interleave): Likewise.
14034         (ix86_expand_vector_init_general): Use them.  Assert
14035         word_mode == SImode when n_words == 4.
14036
14037 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
14038
14039         * config/i386/i386.c (ix86_secondary_reload): New static function.
14040         (TARGET_SECONDARY_RELOAD): New define.
14041         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
14042         * config/i386/i386.md (reload_outqi): Remove.
14043
14044 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14045
14046         PR middle-end/35509
14047         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
14048         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
14049         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
14050         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
14051         (fold_builtin_1): Likewise.
14052         * builtins.def (BUILT_IN_ISINF_SIGN): New.
14053         c-common.c (check_builtin_function_arguments): Handle
14054         BUILT_IN_ISINF_SIGN.
14055         * doc/extend.texi: Document __builtin_isinf_sign.
14056         * fold-const.c (operand_equal_p): Handle COND_EXPR.
14057
14058 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
14059
14060         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
14061         EH cleanup at the end of the pass, search for those that have been
14062         turned into forwarder blocks and do the cleanup on their successor.
14063
14064 2008-05-18  Richard Guenther  <rguenther@suse.de>
14065
14066         * tree-cfg.c (verify_gimple_expr): Allow conversions from
14067         pointers to sizetype and vice versa.
14068
14069 2008-05-18 Xinliang David Li   <davidxl@google.com>
14070
14071         * gcc/tree-ssa-dce.c: Coding style fix.
14072         (check_pow): Documentation comment.
14073         (check_log): Documenation comment. Coding style fix.
14074         (is_unnecessary_except_errno_call): Ditto.
14075         (gen_conditions_for_pow): Ditto.
14076         (gen_conditions_for_log): Ditto.
14077         (gen_shrink_wrap_conditions): Ditto.
14078         (shrink_wrap_one_built_in_calls): Ditto.
14079         * gcc/doc/invoke.texi: Better documentation string.
14080         * ChangeLog: Fix wrong change log entries from
14081         May 17 checkin on function call DCE.
14082
14083 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
14084
14085         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
14086
14087 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
14088
14089         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
14090         * df-problems.c (simulation routines): Fixed block comment to
14091         properly say how to add forwards scanning functions.
14092
14093 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
14094
14095         * tree-inline.c (setup_one_parameter): Remove dead code.
14096
14097 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
14098
14099         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
14100         a BIT_AND_EXPR only for an INTEGER_TYPE.
14101
14102 2008-05-17 Xinliang David Li   <davidxl@google.com>
14103
14104         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
14105         (check_pow, check_log, is_unnecessary_except_errno_call): New
14106         functions to check for eliminating math functions that are pure
14107         except for setting errno.
14108         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
14109         general condition expressions for shrink-wrapping pow/log calls.
14110         (gen_shrink_wrap_conditions): Ditto.
14111         (shrink_wrap_one_built_in_call): Ditto.
14112         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
14113         (mark_operand_necessary): If debugging, output if OP is necessary.
14114         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
14115         unnecessary.
14116         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
14117         opt level >= 2.
14118         * gcc/common.opt: New user flag -ftree-builtin-dce.
14119         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
14120
14121 2008-05-16  David S. Miller  <davem@davemloft.net>
14122
14123         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
14124         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
14125
14126 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
14127
14128         PR target/36246
14129         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
14130
14131 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14132
14133         * ifcvt.c (dead_or_predicable): Rename
14134         df_simulate_one_insn_backwards to df_simulate_one_insn.
14135         * recog.c (peephole2_optimize): Ditto.
14136         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
14137         Ditto.
14138         * df.h: Rename df_simulate_one_insn_backwards to
14139         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
14140         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
14141         scanning of defs and uses.
14142         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
14143         (df_simulate_one_insn_forwards): Removed.
14144
14145 2008-05-16  Doug Kwan  <dougkwan@google.com>
14146
14147         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
14148         QNaN & SNaN.
14149         (real_from_string): Handle NaNs and Inf as approriate.
14150
14151 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
14152
14153         * doc/gty.texi (Source Files Containing Type Information): Note
14154         that headers should appear first in the gtfiles list.
14155
14156 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14157
14158         * tree.def (COND_EXEC): Properly documented this code.
14159
14160 2008-05-16  Diego Novillo  <dnovillo@google.com>
14161
14162         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
14163         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
14164         the new field.
14165
14166 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14167
14168         * tree-ssa-dse (max_stmt_uid): Removed.
14169         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
14170         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
14171         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
14172         * function.h (cfun.last_stmt_uid): New field.
14173         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
14174         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
14175         New functions.
14176         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
14177         (create_stmt_ann): Initialize the ann->uid field.
14178         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
14179         with new calls.
14180         * tree-flow.h (renumber_gimple_stmt_uids): New function.
14181
14182 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
14183
14184         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
14185         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
14186         (init_empty_tree_cfg): Call it.
14187
14188 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14189
14190         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
14191         Update all users.
14192
14193 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14194
14195         * doc/invoke.text (-fdump-tree-*-verbose): New option.
14196         * tree-dump.c (dump_options): New verbose option.
14197         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
14198         Add verbose dump.
14199         * tree-pass.h (TDF_VERBOSE): New dump flag.
14200         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
14201         (tree-flow.h): Added include.
14202         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
14203
14204 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
14205
14206         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
14207
14208         From Jie Zhang  <jie.zhang@analog.com>
14209         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14210         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
14211         mcpu=bf561-none and mcpu=bf561-0.2.
14212         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14213         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
14214         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14215         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
14216         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
14217         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
14218         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
14219         option.
14220         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
14221         (cputype_selected): Remove.
14222         (bfin_handle_option): Don't use cputype_selected.
14223         (override_options): When no mcpu option, enable all workarounds.
14224         Don't use bfin_workarounds.
14225         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
14226         processor type.
14227         (DEFAULT_CPU_TYPE): Don't define.
14228
14229 2008-05-16  Richard Guenther  <rguenther@suse.de>
14230
14231         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
14232         on deletion of the last stmt.
14233
14234 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14235
14236         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
14237         V8HImode for SSE2 and V16QImode for SSE4.1.
14238
14239 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
14240
14241         * cgraph.h (compute_inline_parameters): Made public.
14242         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
14243         variable_generate_summary, function_write_summary,
14244         variable_write_summary, variable_read_summary.  Added generate_summary,
14245         write_summary, read_summary.
14246         * cgraphunit.c (cgraph_process_new_functions): Changed call from
14247         pass_ipa_inline.function_generate_summary, to
14248         compute_inline_parameters.
14249         * ipa-inline.c (compute_inline_parameters): Made public and added
14250         node parameter.
14251         (compute_inline_parameters_for_current): New function.
14252         (pass_inline_param): Now calls compute_inline_parameters_for_current.
14253         (inline_generate_summary): Removed parameter and made to loop over
14254         all cgraph nodes.
14255         (pass_ipa_inline): Updated for new IPA_PASS structure.
14256         * passes.c (execute_ipa_summary_passes): Now is called once per
14257         pass rather than once per node*pass.
14258
14259 2008-05-15  Anatoly Sokolov <aesok@post.ru>
14260
14261         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
14262         avr_have_mul_p, avr_asm_only_p): Remove variables.
14263         (avr_override_options): Remove initialization of removed variables.
14264         (avr_file_start):  Convert removed variables to fields of
14265         'struct base_arch_s *avr_current_arch'.
14266         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
14267         (AVR_HAVE_MUL): (Ditto.).
14268         (AVR_HAVE_MOVW): (Ditto.).
14269         (AVR_HAVE_LPMX): (Ditto.).
14270         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
14271         avr_asm_only_p): Remove declaration.
14272
14273 2008-05-15  Diego Novillo  <dnovillo@google.com>
14274
14275         * config/arm/arm.c (arm_return_in_memory): Fix return type.
14276         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
14277
14278 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
14279
14280         PR middle-end/36194
14281         * combine.c (check_conversion): Rename back to check_promoted_subreg.
14282         Don't call record_truncated_value from here.
14283         (record_truncated_value): Turn it into a for_each_rtx callback.
14284         (record_truncated_values): New function.
14285         (combine_instructions): Call note_uses with record_truncated_values.
14286         Change name of check_conversion to check_promoted_subreg.
14287
14288 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
14289
14290         * doc/sourcebuild.texi: Document support for torture tests.
14291
14292 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
14293
14294         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
14295         to alternative 4 of operand 2.
14296
14297 2008-05-15  Richard Guenther  <rguenther@suse.de>
14298
14299         * tree-pass.h (current_pass): Declare.
14300         (get_pass_for_id): Likewise.
14301         * passes.c (passes_by_id, passes_by_id_size): New globals.
14302         (set_pass_for_id): New function.
14303         (get_pass_for_id): Likewise.
14304         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
14305         (execute_function_todo): Flush per function statistics.
14306         * toplev.c (compile_file): Init statistics.
14307         (general_init): Do early statistics initialization.
14308         (finalize): Finish statistics.
14309         * statistics.h (statistics_early_init): Declare.
14310         (statistics_init): Likewise.
14311         (statistics_fini): Likewise.
14312         (statistics_fini_pass): Likewise.
14313         (statistics_counter_event): Likewise.
14314         (statistics_histogram_event): Likewise.
14315         * statistics.c: New file.
14316         * Makefile.in (OBJS-common): Add statistics.o.
14317         (statistics.o): Add dependencies.
14318         * doc/invoke.texi (-fdump-statistics): Document.
14319
14320         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
14321         (insert): Likewise.
14322         (execute_pre): Use statistics_counter_event.
14323         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
14324         (substitute_and_fold): Increment it.  Use statistics_counter_event.
14325
14326 2008-05-15  Diego Novillo  <dnovillo@google.com>
14327
14328         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
14329
14330         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
14331         * tree-ssa-alias.c (new_type_alias): Remove references to
14332         sub-variables from comment.
14333         * tree-ssa-operands.c (swap_tree_operands): Likewise.
14334
14335 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14336
14337         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
14338         attribute to 1 only for insertps alternative.
14339
14340 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14341
14342         * config/bfin/bfin.md (loadbytes): New pattern.
14343         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
14344         (bfin_init_builtins): Initialize it.
14345         (bdesc_1arg): Add it.
14346
14347 2008-05-15  Sa Liu  <saliu@de.ibm.com>
14348
14349         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
14350         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
14351         * testsuite/lib/target-supports.exp: Add
14352         check_effective_target_fortran_integer_16.
14353
14354 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14355
14356         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
14357         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
14358         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
14359         (TARGET_RETURN_IN_MEMORY): Define.
14360
14361 2008-05-15  Richard Guenther  <rguenther@suse.de>
14362
14363         PR middle-end/36244
14364         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
14365         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
14366         represent unmodifiable vars.
14367
14368 2008-05-15  Richard Guenther  <rguenther@suse.de>
14369
14370         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
14371         INDIRECT_REF and TARGET_MEM_REF.
14372         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
14373         TARGET_MEM_REF.
14374
14375 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
14376             H.J. Lu  <hongjiu.lu@intel.com>
14377
14378         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
14379         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
14380         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
14381         insn alternatives.  Add missing alternatives.
14382         (*vec_concatv2di_rex64_sse4_1): Likewise.
14383         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
14384         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
14385         Require TARGET_SSE.
14386
14387 2008-05-15  Richard Guenther  <rguenther@suse.de>
14388
14389         PR tree-optimization/36009
14390         PR tree-optimization/36204
14391         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
14392         (determine_invariantness_stmt): Record the loop a store is
14393         always executed in.
14394         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
14395         dependency.
14396
14397 2008-05-15  Richard Guenther  <rguenther@suse.de>
14398
14399         PR tree-optimization/34330
14400         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
14401         through the pointer will alias the SMT.
14402
14403 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
14404
14405         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
14406
14407 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14408
14409         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
14410
14411 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14412             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14413
14414         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
14415         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
14416         (vashl_optab): New optab for vector/vector shifts.
14417         (vashr_optab): Ditto.
14418         (vlshr_optab): Ditto.
14419         (vrotl_optab): Ditto.
14420         (vrotr_optab): Ditto.
14421         (optab_subtype): New enum for optab_for_tree_code call.
14422         (optab_for_tree_code): Add enum optab_subtype argument.
14423
14424         * optabs.c (optab_for_tree_code): Take an additional argument to
14425         distinguish between a vector shift by a scalar and vector shift by
14426         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
14427         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
14428         vector shift by a vector.
14429         (expand_widen_pattern_expr): Pass additional argument to
14430         optab_for_tree_code.
14431
14432         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
14433         vrotl_optab, vrotr_optab.
14434
14435         * expr.c (expand_expr_real_1): Update calls to
14436         optab_for_tree_code to distinguish between vector shifted by a
14437         scalar and vector shifted by a vector.
14438         * tree-vectorizer.c (supportable_widening_operation): Ditto.
14439         (supportable_narrowing_operation): Ditto.
14440         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
14441         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
14442         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
14443         (vect_create_epilog_for_reduction): Ditto.
14444         (vectorizable_reduction): Ditto.
14445         (vectorizable_operation): Ditto.
14446         (vect_strided_store_supported): Ditto.
14447         (vect_strided_load_supported): Ditto.
14448         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
14449         * expmed.c (expand_shift): Ditto.
14450
14451         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
14452         scalar type.
14453         (ashr@var{m}3): Ditto.
14454         (vashl@var{m}3): Document new vector/vector shift standard name.
14455         (vashr@var{m}3): Ditto.
14456         (vlshr@var{m}3): Ditto.
14457         (vrotl@var{m}3): Ditto.
14458         (vrotr@var{m}3): Ditto.
14459
14460         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
14461         (PPERM_INVERT): Ditto.
14462         (PPERM_REVERSE): Ditto.
14463         (PPERM_REV_INV): Ditto.
14464         (PPERM_ZERO): Ditto.
14465         (PPERM_ONES): Ditto.
14466         (PPERM_SIGN): Ditto.
14467         (PPERM_INV_SIGN): Ditto.
14468         (PPERM_SRC1): Ditto.
14469         (PPERM_SRC2): Ditto.
14470
14471         * config/i386/sse.md (mulv2di3): Add SSE5 support.
14472         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
14473         allows a memory operand to be the value being added, and split it
14474         to improve vectorization.
14475         (sse5_pmacsdqh_mem): Ditto.
14476         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
14477         (sse5_mulv2div2di3_high): Ditto.
14478         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
14479         (vec_pack_trunc_v4si): Ditto.
14480         (vec_pack_trunc_v2di): Ditto.
14481         (sse5_pcmov_<mode>): Remove code that tried to use use
14482         andps/andnps instead of pcmov.
14483         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
14484         pmacsdqh instructions.
14485         (vec_widen_smult_lo_v4si): Ditto.
14486
14487         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
14488         (PPERM_INVERT): Ditto.
14489         (PPERM_REVERSE): Ditto.
14490         (PPERM_REV_INV): Ditto.
14491         (PPERM_ZERO): Ditto.
14492         (PPERM_ONES): Ditto.
14493         (PPERM_SIGN): Ditto.
14494         (PPERM_INV_SIGN): Ditto.
14495         (PPERM_SRC1): Ditto.
14496         (PPERM_SRC2): Ditto.
14497         (ix86_expand_sse_movcc): Move the SSE5 test after the if
14498         true/false tests.
14499         (ix86_expand_int_vcond): If SSE5 generate all possible integer
14500         comparisons.
14501         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
14502         says ignore whether the last reference is a memory operand.
14503
14504 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14505             Paolo Bonzini <bonzini at gnu dot org>
14506
14507         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
14508         shift patterns.
14509
14510         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
14511         (vlshr<mode>3): Rename from vlshr<mode>3.
14512         (vashr<mode>3): Rename from vashr<mode>3.
14513         (mulv4sf3): Change the names of vector shift patterns.
14514         (mulv4si3): Ditto.
14515         (negv4sf2): Ditt.
14516
14517         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
14518         shift insns.
14519
14520         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
14521         (SI_SHLHI): Ditto.
14522         (SI_SHL): Ditto.
14523         (SI_SHLI): Ditto.
14524         (SI_ROTH): Ditto.
14525         (SI_ROTHI): Ditto.
14526         (SI_ROT): Ditto.
14527         (SI_ROTI): Ditto.
14528         (SPU_RL_0): Ditto.
14529         (SPU_RL_1): Ditto.
14530         (SPU_RL_2): Ditto.
14531         (SPU_RL_3): Ditto.
14532         (SPU_RL_4): Ditto.
14533         (SPU_RL_5): Ditto.
14534         (SPU_RL_6): Ditto.
14535         (SPU_RL_7): Ditto.
14536         (SPU_SL_0): Ditto.
14537         (SPU_SL_1): Ditto.
14538         (SPU_SL_2): Ditto.
14539         (SPU_SL_3): Ditto.
14540         (SPU_SL_4): Ditto.
14541         (SPU_SL_5): Ditto.
14542         (SPU_SL_6): Ditto.
14543         (SPU_SL_7): Ditto.
14544
14545         * config/spu/spu.md (v): New iterator macro to add v for vector types.
14546         (floatunssidf2_internal): Change vector/vector shift names.
14547         (floatunsdidf2_internal): Ditto.
14548         (mulv8hi3): Ditto.
14549         (ashrdi3): Ditto.
14550         (ashrti3): Ditto.
14551         (cgt_df): Ditto.
14552         (cgt_v2df): Ditto.
14553         (dftsv): Ditto.
14554         (vashl<mode>3): Rename from ashl<mode>3.
14555         (vashr<mode>3): Rename from ashr<mode>3.
14556         (vlshr<mode>3): Rename from lshr<mode>3.
14557         (vrotl<mode>3): Rename from rotl<mode>3.
14558
14559 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14560
14561         PR target/36224
14562         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
14563         multiply gives the wrong value when doing widening multiplies.
14564         (vec_widen_smult_lo_v4si): Ditto.
14565
14566 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
14567
14568         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
14569         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
14570         emit_library_call_value.
14571         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
14572         * tree.h (ECF_LIBCALL_BLOCK): Removed.
14573         * calls.c (initialize_argument_information, precompute_arguments,
14574         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
14575         (precompute_arguments): Removed flags parameter.
14576         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
14577
14578 2008-05-14  Richard Guenther  <rguenther@suse.de>
14579
14580         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
14581         Make sure to register the store if the use is a PHI_NODE.
14582
14583 2008-05-14  Olivier Hainque  <hainque@adacore.com>
14584
14585         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
14586         memory if the component is to be referenced in BLKmode according
14587         to get_inner_reference.
14588
14589 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
14590
14591         * calls.c (emit_library_call_value_1): Restore code clearing
14592         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
14593
14594 2008-05-14  Olivier Hainque  <hainque@adacore.com>
14595             Nicolas Roche  <roche@adacore.com>
14596
14597         * configure.ac: Add support for a "gcc_subdir" variable in
14598         config-lang.in, to denote a subdirectory where the language/GCC
14599         integration files are to be found.
14600         * configure: Regenerate.
14601
14602 2008-05-14  Ira Rosen  <irar@il.ibm.com>
14603
14604         PR tree-optimization/36098
14605         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
14606         value for the first load in the group in case of a gap.
14607         (vect_build_slp_tree): Check that there are no gaps in loads.
14608
14609 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
14610
14611         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
14612         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
14613         expand_copysign_bit, ): Change call to emit_no_conflict_block to
14614         emit_insn and remove unneeded code to construct extra args.
14615         (emit_no_conflict_block): Removed.
14616         * optabls.h: (emit_no_conflict_block): Removed.
14617         * cse.c (cse_extended_basic_block): Remove search for
14618         REG_NO_CONFLICT note.
14619         * global.c: Removed incorrect comment added in revision 117.
14620         * expr.c (convert_move): Change call to emit_no_conflict_block to
14621         emit_insn.
14622         * recog.c: Change comments so that they do not mention
14623         REG_NO_CONFLICT.
14624         * local_alloc.c (combine_regs): Removed last parameter.
14625         (no_conflict_p): Removed.
14626         (block_alloc): Removed note, no_conflict_combined_regno and set
14627         local vars. Removed all code to process REG_NO_CONFLICT blocks.
14628         (combine_regs): Removed already_dead and code to look for
14629         REG_NO_CONFLICT notes.
14630         * lower_subreg (remove_retval_note): Removed code to look for
14631         REG_NO_CONFLICT block.
14632         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
14633         (resolve_clobber): Remove code to process libcalls that have
14634         REG_NO_CONFLICT notes.
14635         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
14636         case.
14637         * combine.c (can_combine_p, distribute_notes):  Removed
14638         REG_NO_CONFLICT case.
14639         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
14640         to emit_insns.
14641         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
14642         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
14643         Ditto.
14644         * reg-notes.def (NO_CONFLICT): Removed.
14645
14646 2008-05-14  David S. Miller  <davem@davemloft.net>
14647
14648         * config/sparc/sparc.c (sparc_profile_hook): If
14649         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
14650         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
14651         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
14652
14653 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
14654
14655         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
14656
14657 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
14658
14659         PR target/36222
14660         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
14661         and op1 expansion before vector concat to have less live pseudos.
14662
14663 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
14664
14665         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
14666         ix86_expand_vector_set if supported.
14667
14668 2008-05-13  Diego Novillo  <dnovillo@google.com>
14669             Kenneth Zadeck  <zadeck@naturalbridge.com>
14670
14671         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
14672
14673         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
14674         phinodes_print_statistics, init_ssanames, fini_ssanames,
14675         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
14676         release_ssa_name, release_defs, replace_ssa_name_symbol,
14677         ssanames_print_statistics): Move ...
14678         * tree-flow.h: ... here.
14679         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
14680         Use FN instead of cfun.
14681         (make_ssa_name_fn): Rename from make_ssa_name.
14682         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
14683         * tree-flow-inline.h (make_ssa_name): Move from
14684         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
14685         * omp-low.c (expand_omp_parallel):
14686         * tree-flow-inline.h (redirect_edge_var_map_result):
14687         * tree-ssa.c (init_tree_ssa): Add argument FN.
14688         Use it instead of cfun.  Update all users.
14689
14690 2008-05-13  Tom Tromey  <tromey@redhat.com>
14691
14692         PR preprocessor/22168:
14693         * doc/cpp.texi (Top): Update menu.
14694         (Alternatives to Wrapper #ifndef): New node.
14695         (Other Directives): Document deprecation.
14696         (Obsolete Features): Remove menu.
14697         (Assertions): Merge node into Obsolete Features.
14698         (Obsolete once-only headers): Move earlier; rename to Alternatives
14699         to Wrapper #ifndef.
14700         * doc/cppopts.texi: Update.
14701         * c.opt (Wdeprecated): Enable for C and ObjC.
14702         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
14703         (C++ Dialect Options): Move -Wno-deprecated from here to...
14704         (Warning Options): ... here.
14705
14706 2008-05-13  Richard Guenther  <rguenther@suse.de>
14707
14708         PR middle-end/36227
14709         * fold-const.c (fold_sign_changed_comparison): Do not allow
14710         changes in pointer-ness.
14711
14712 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14713
14714         PR target/24713
14715         * config/sh/sh.c (sh_expand_prologue): Don't clear
14716         RTX_FRAME_RELATED_P for push insns.
14717
14718 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
14719
14720         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
14721
14722 2008-05-12  Anatoly Sokolov <aesok@post.ru>
14723
14724         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
14725         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
14726         Use 'machine->is_leaf' instead of 'leaf_func_p'.
14727
14728 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
14729
14730         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
14731         (*vec_concatv4sf_sse): This.
14732         (*sse2_concatv2si): Renamed to ...
14733         (*vec_concatv2si_sse2): This.
14734         (*sse1_concatv2si): Renamed to ...
14735         (*vec_concatv2si_sse): This.
14736         (*vec_concatv2di_rex): Renamed to ...
14737         (*vec_concatv2di_rex64): This.
14738         (*vec_concatv2si_sse4_1): New.
14739         (*vec_concatv2di_rex64_sse4_1): Likewise.
14740
14741 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
14742
14743         PR rtl-optimization/36111
14744         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
14745         that was created for swappable operands.
14746
14747 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
14748
14749         PR ada/36001
14750         * Makefile.in: Substitute GNATMAKE and GNATBIND.
14751         * configure.ac: Add call to ACX_PROG_GNAT.
14752
14753 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
14754
14755         * optc-gen.awk: Fix comment typo.
14756
14757 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14758
14759         * pretty-print.c (pp_integer_with_precision): Use
14760         HOST_LONG_LONG_FORMAT.
14761
14762 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
14763
14764         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
14765
14766 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
14767
14768         * config/i386/i386.c (bdesc_ptest): Removed.
14769         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
14770         (bdesc_args): Add __builtin_ia32_ptestz128,
14771         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
14772         (ix86_init_mmx_sse_builtins): Updated.
14773         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
14774         (ix86_expand_builtin): Updated.
14775
14776 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
14777
14778         * tree-cfg.c (valid_fixed_convert_types_p): New function.
14779         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
14780
14781 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
14782
14783         * value-prof.c (interesting_stringop_to_profile): Do not
14784         return early for BUILT_IN_MEMPCPY.
14785
14786 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
14787
14788         * calls.c (expand_call): Don't use callgraph to increase
14789         preferred_stack_boundary.
14790
14791         * cgraph.h (cgraph_rtl_info): Use unsigned on
14792         preferred_incoming_stack_boundary.
14793
14794         * final.c (rest_of_clean_state): Use unsigned on
14795         preferred_stack_boundary.
14796
14797 2008-05-09  Tom Tromey  <tromey@redhat.com>
14798
14799         PR preprocessor/22231:
14800         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
14801         proceeding.
14802
14803 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
14804
14805         PR tree-optimization/36129
14806         * tree-ssa-ccp.c: Include value-prof.h.
14807         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
14808         built-in function was folded to a constant.
14809         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
14810
14811 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
14812             Sebastian Pop  <sebastian.pop@amd.com>
14813
14814         * tree-scalar-evolution.c: Document instantiate_scev.
14815         (instantiate_parameters_1): Renamed instantiate_scev_1.
14816         Don't use the same loop for instantiation_loop and evolution_loop.
14817         (instantiate_scev): New.
14818         (instantiate_parameters): Moved...
14819         (resolve_mixers): Update call to instantiate_scev_1 to pass the
14820         same loop twice.  Maintains the semantics for this function.
14821         * tree-scalar-evolution.h (instantiate_scev): Declare.
14822         (instantiate_parameters): ...here.  Now static inline.
14823         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
14824         instead of resolve_mixers.
14825
14826 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14827
14828         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
14829
14830 2008-05-09  Tomas Bily  <tbily@suse.cz>
14831
14832         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
14833         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
14834         * tree-ssa-structalias.c (get_constraint_for): Likewise.
14835         * c-common.c (c_common_truthvalue_conversion): Likewise.
14836         * tree-object-size.c (compute_object_offset): Likewise.
14837         * tree-inline.c (estimate_num_insns_1): Likewise.
14838         * varasm.c (const_hash_1, compare_constant, copy_constant)
14839         (compute_reloc_for_constant, output_addressed_constants)
14840         (initializer_constant_valid_p): Likewise.
14841         * c-omp.c (check_omp_for_incr_expr): Likewise.
14842         * gimplify.c (gimplify_expr): Likewise.
14843         * c-typeck.c (c_finish_return): Likewise.
14844         * tree-vectorizer.c (supportable_widening_operation)
14845         (supportable_narrowing_operation): Likewise.
14846         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
14847         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
14848         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
14849         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
14850         (descr_info_loc): Likewise.
14851         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
14852         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
14853         (fold_unary): Likewise.
14854         * builtins.c (get_pointer_alignment): Likewise.
14855         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
14856         (instantiate_parameters_1): Likewise.
14857         * tree.c (expr_align, stabilize_reference): Likewise.
14858         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
14859         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
14860         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
14861         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
14862         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
14863         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
14864         Likewise.
14865         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
14866         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
14867         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
14868         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
14869         (forward_propagate_comparison)
14870         (tree_ssa_forward_propagate_single_use_vars): Likewise.
14871         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
14872         * emit-rtl.c (component_ref_for_mem_expr)
14873         (set_mem_attributes_minus_bitpos): Likewise.
14874         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
14875         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
14876         Likewise.
14877         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
14878         (build_function_call, pointer_diff, build_compound_expr)
14879         (c_finish_return): Likewise.
14880         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
14881         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
14882         Likewise.
14883         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
14884         * expr.c (is_aligning_offset): Likewise.
14885         * tree-ssa-alias.c (is_escape_site): Likewise.
14886         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
14887         (check_all_va_list_escapes): Likewise.
14888         * tree-ssa-loop-ivopts.c (determine_base_object)
14889         (determine_common_wider_type): Likewise.
14890         * dojump.c (do_jump): Likewise.
14891         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
14892         * tree-gimple.c (is_gimple_cast): Likewise.
14893         * fold-const.c (decode_field_reference, )
14894         (fold_sign_changed_comparison, fold_unary, fold_comparison)
14895         (fold_binary): Likewise.
14896         * tree-ssa-alias-warnings.c (find_alias_site_helper)
14897         (already_warned_in_frontend_p): Likewise.
14898         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
14899         * tree.c (really_constant_p, get_unwidened): Likewise.
14900         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
14901         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
14902         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
14903         Likewise.
14904         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
14905         CONVERT_EXPR_P.
14906         (CONVERT_EXPR_P): Define.
14907         (CASE_CONVERT): Define.
14908
14909 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
14910
14911         PR middle-end/36117
14912         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
14913         (delete_unmarked_insns): When deleting a call, call
14914         delete_unreachable_blocks.
14915         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
14916         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
14917
14918 2008-05-08  Richard Guenther  <rguenther@suse.de>
14919
14920         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
14921         (-ftree-salias): Likewise.
14922         (salias-max-implicit-fields): Remove param documentation.
14923         (salias-max-array-elements): Likewise.
14924         * tree-pass.h (pass_create_structure_vars): Remove.
14925         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
14926         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
14927         * tree-ssa-alias.c (create_structure_vars): Remove.
14928         (gate_structure_vars): Likewise.
14929         (pass_create_structure_vars): Likewise.
14930         (gate_build_alias): Likewise.
14931         (pass_build_alias): Adjust to run always and dump the function.
14932         * common.opt (ftree-salias): Hide.
14933         * passes.c (init_optimization_passes): Remove
14934         pass_create_structure_vars, adjust comment.
14935         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
14936         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
14937         * opts.c (decode_options): Do not set flag_tree_salias.
14938         (common_handle_option): Add OPT_ftree_salias to the backward
14939         compatibility section.
14940
14941 2008-05-08  Richard Guenther  <rguenther@suse.de>
14942
14943         * tree-flow-inline.h (var_can_have_subvars): Move ...
14944         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
14945         * tree-flow.h (var_can_have_subvars): Remove.
14946         (push_fields_onto_fieldstack): Remove.
14947         (sort_fieldstack): Likewise.
14948         (struct fieldoff): Move ...
14949         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
14950         alias_set and base_for_components fields.
14951         (sort_fieldstack): Make static.
14952         (push_fields_onto_fieldstack): Likewise.  Remove code that
14953         handles anything but RECORD_TYPEs.  Remove alias_set and
14954         base_for_components handling.
14955         (create_variable_info_for): Adjust.
14956
14957 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
14958
14959         * common.opt (Wframe-larger-than=): Shorten the help message
14960         to one line.
14961         * doc/invoke.texi (Wframe-larger-than=): Add more description.
14962
14963 2008-05-08  Rafael Espíndola  <espindola@google.com>
14964
14965         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
14966         trap.
14967         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
14968         trap and that both operands are gimple values.
14969         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
14970         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
14971         is a fp operation.
14972
14973 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
14974
14975         * read-rtl.c (join_c_conditions): Return the first string if the
14976         two strings are equal.
14977
14978 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
14979
14980         * gensupport.h (pred_data): Add a "num_codes" field.
14981         (add_predicate_code): Declare.
14982         * gensupport.c (add_predicate_code): New function.
14983         (std_pred_table): Add an "allows_const_p" field.
14984         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
14985         Remove the (incomplete) list of such codes from the codes field.
14986         (init_predicate_table): Use add_predicate_code.  Add all
14987         RTX_CONST_OBJs if allows_const_p is true.
14988         * genrecog.c (process_define_predicate): Use add_predicate_code.
14989
14990 2008-05-08  David Daney  <ddaney@avtrex.com>
14991             Richard Sandiford  <rsandifo@nildram.co.uk>
14992
14993         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
14994         special case of constant zero operands.
14995         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
14996         old and new values.  Special case constant zero values.
14997         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
14998         fails.
14999         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
15000         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
15001
15002 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
15003
15004         PR target/36090
15005         * simplify-rtx.c (simplify_plus_minus): Create CONST of
15006         similar RTX_CONST_OBJ before CONST_INT.
15007
15008 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
15009
15010         * stmt.c (expand_stack_restore): Change sa mode if needed.
15011
15012 2008-05-08  Richard Guenther  <rguenther@suse.de>
15013
15014         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
15015         return type to bool.
15016         (ix86_sol10_return_in_memory): Likewise.
15017         (ix86_i386elf_return_in_memory): Likewise.
15018         (ix86_i386interix_return_in_memory): Likewise.
15019         * config/i386/i386.c (ix86_return_in_memory): Likewise.
15020         (ix86_sol10_return_in_memory): Likewise.
15021         (ix86_i386elf_return_in_memory): Likewise.
15022         (ix86_i386interix_return_in_memory): Likewise.
15023
15024 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
15025
15026         PR bootstrap/36180
15027         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
15028         fndecl argument.
15029         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
15030         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
15031         declared in front.
15032
15033 2008-05-08  Richard Guenther  <rguenther@suse.de>
15034
15035         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
15036         * tree-data-ref.h (struct dr_alias): Remove subvars field.
15037         (DR_SUBVARS): Remove.
15038         * tree-dfa.c (dump_subvars_for): Remove.
15039         (debug_subvars_for): Likewise.
15040         (dump_variable): Do not dump subvars.
15041         (remove_referenced_var): Do not remove subvars.
15042         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
15043         (lookup_subvars_for_var): Remove.
15044         (get_subvars_for_var): Likewise.
15045         (get_subvars_at): Likewise.
15046         (get_first_overlapping_subvar): Likewise.
15047         (overlap_subvar): Likewise.
15048         * tree-flow.h (subvar_t): Remove.
15049         (struct var_ann_d): Remove subvars field.
15050         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
15051         argument.  Remove special handling of SFTs.
15052         (compute_tag_properties): Likewise.
15053         (set_initial_properties): Likewise.
15054         (compute_call_clobbered): Likewise.
15055         (count_mem_refs): Likewise.
15056         (compute_memory_partitions): Likewise.
15057         (compute_flow_insensitive_aliasing): Likewise.
15058         (setup_pointers_and_addressables): Likewise.
15059         (new_type_alias): Likewise.
15060         (struct used_part): Remove.
15061         (used_portions): Likewise.
15062         (struct used_part_map): Likewise.
15063         (used_part_map_eq): Likewise.
15064         (used_part_map_hash): Likewise.
15065         (free_used_part_map): Likewise.
15066         (up_lookup): Likewise.
15067         (up_insert): Likewise.
15068         (get_or_create_used_part_for): Likewise.
15069         (create_sft): Likewise.
15070         (create_overlap_variables_for): Likewise.
15071         (find_used_portions): Likewise.
15072         (create_structure_vars): Likewise.
15073         * tree.def (STRUCT_FIELD_TAG): Remove.
15074         * tree.h (MTAG_P): Adjust.
15075         (struct tree_memory_tag): Remove base_for_components and
15076         unpartitionable flags.
15077         (struct tree_struct_field_tag): Remove.
15078         (SFT_PARENT_VAR): Likewise.
15079         (SFT_OFFSET): Likewise.
15080         (SFT_SIZE): Likewise.
15081         (SFT_NONADDRESSABLE_P): Likewise.
15082         (SFT_ALIAS_SET): Likewise.
15083         (SFT_UNPARTITIONABLE_P): Likewise.
15084         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
15085         (union tree_node): Remove sft field.
15086         * alias.c (get_alias_set): Remove special handling of SFTs.
15087         * print-tree.c (print_node): Remove handling of SFTs.
15088         * tree-dump.c (dequeue_and_dump): Likewise.
15089         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
15090         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
15091         * tree-predcom.c (set_alias_info): Do not set subvars.
15092         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
15093         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
15094         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
15095         (add_vars_for_offset): Remove.
15096         (add_virtual_operand): Remove special handling of SFTs.
15097         (add_call_clobber_ops): Likewise.
15098         (add_call_read_ops): Likewise.
15099         (get_asm_expr_operands): Likewise.
15100         (get_modify_stmt_operands): Likewise.
15101         (get_expr_operands): Likewise.
15102         (add_to_addressable_set): Likewise.
15103         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
15104         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
15105         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
15106         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
15107         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
15108         (tree_node_structure): Likewise.
15109         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
15110         handling of SFTs.
15111         (find_what_p_points_to): Likewise.
15112
15113 2008-05-08  Sa Liu  <saliu@de.ibm.com>
15114
15115         * config/spu/spu.md: Fixed subti3 pattern.
15116
15117 2008-05-08  Richard Guenther  <rguenther@suse.de>
15118
15119         PR middle-end/36154
15120         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
15121         sure to create a representative for trailing arrays for PTA.
15122
15123 2008-05-08  Richard Guenther  <rguenther@suse.de>
15124
15125         PR middle-end/36172
15126         * fold-const.c (operand_equal_p): Two objects which types
15127         differ in pointerness are not equal.
15128
15129 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
15130
15131         * calls.c (compute_argument_block_size): Add argument tree fndecl.
15132         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
15133         (emit_library_call_value_1): Add new variable fndecl initialized by
15134         NULL_TREE. It should be the decl type of orgfun, but this information
15135         seems not to be available here, so it uses the default calling abi.
15136         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
15137         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
15138         by TARGET_RETURN_IN_MEMORY.
15139         * config/i386/i386-interix.h: Likewise.
15140         * config/i386/i386.h: Likewise.
15141         * config/i386/i386elf.h: Likewise.
15142         * config/i386/ptx4-i.h: Likewise.
15143         * config/i386/sol2-10.h: Likewise.
15144         * config/i386/sysv4.h: Likewise.
15145         * config/i386/vx-common.h: Likewise.
15146         * config/cris/cris.h: Removed #if 0 clause.
15147         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
15148         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
15149         argument.
15150         (ix86_sol10_return_in_memory): Likewise.
15151         (ix86_i386elf_return_in_memory): New.
15152         (ix86_i386interix_return_in_memory): New.
15153         * config/mt/mt-protos.h (mt_return_in_memory): New.
15154         * config/mt/mt.c: Likewise.
15155         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
15156         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
15157         * config/bfin/bfin.h: Likewise.
15158         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
15159         argument.
15160         * config/bfin/bfin.c: Likewise.
15161         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
15162         * config/alpha/unicosmk.h: Likewise.
15163         * config/i386/cygming.h: Likewise.
15164         * config/iq2000/iq2000.h: Likewise.
15165         * config/mips/mips.h: Likewise.
15166         * config/mn10300/mn10300.h: Likewise.
15167         * config/rs6000/rs6000.h: Likewise.
15168         * config/score/score.h: Likewise.
15169         * config/spu/spu.h: Likewise.
15170         * config/v850/v850.h: Likewise.
15171         * defaults.h: Likewise.
15172         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
15173         * expr.c (emit_block_move): Adjust use of
15174         OUTGOING_REG_PARM_STACK_SPACE.
15175         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
15176         OUTGOING_REG_PARM_STACK_SPACE.
15177         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
15178
15179 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
15180
15181         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
15182         on OMP_RETURN for OMP_FOR.
15183
15184         PR debug/35896
15185         * dwarf2out.c (dw_expand_expr, common_check): Removed.
15186         (fortran_common): New function.
15187         (gen_variable_die): Call fortran_common instead of common_check,
15188         adjust for it returning tree instead of rtx.  Formatting.
15189
15190 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
15191
15192         PR rtl/7335
15193         PR rtl/33826
15194         * see.c (see_copy_insn): Copy new pure const attributes for new call.
15195         * c-decl.c (merge_decls): Ditto.
15196         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
15197         to RTL_CONST_OR_PURE_CALL_P.
15198         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
15199         Initialized DECL_LOOPING_CONST_PURE.
15200         (process_call_operands): Set tree_side_effects properly.
15201         * tree.h (TREE_READONLY_DECL_P): Removed.
15202         (DECL_IS_PURE): Renamed to DECL_PURE_P.
15203         (DECL_LOOPING_OR_CONST_P): New macro.
15204         (struct tree_function_decl): Added looping_const_or_pure_p.
15205         (ECF_*) Renumbered.
15206         (ECF_LOOPING_OR_CONST_P): New macro.
15207         * rtlanal.c (pure_const_p): Removed.
15208         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
15209         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
15210         to RTL_CONST_CALL_P.
15211         * ipa-pure-const.c (pure_const_state_e): Added looping field.
15212         (check_decl, check_tree, check_call, scan_function): Initialize
15213         looping.
15214         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
15215         (static_execute): Set looping true for recursive functions.
15216         Undo setting state to IPA_NEITHER for recursive functions.
15217         * cse.c (cse_insn):
15218         * ifcvt.c (noce_can_store_speculate_p): Changed
15219         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
15220         RTL_CONST_OR_PURE_CALL_P.
15221         * dse.c (scan_insn): Ditto.
15222         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
15223         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
15224         RTL_CONST_OR_PURE_CALL_P.
15225         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
15226         pure_call_p to RTL_CONST_CALL_P.
15227         * gimplify.c (gimplify_call_expr): Clear side effects for
15228         non-looping pure and constant calls.
15229         * calls.c (emit_call_1): Set rtl flags from ecf flags.
15230         (flags_from_decl_or_type): Set ecf flags from decl flags.
15231         (initialize_argument_information): Turn off
15232         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
15233         Change const to pure if callee_copies is true rather than just
15234         turning off const.
15235         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
15236         way of marking pure calls.
15237         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
15238         Remove hack that was supposed to fix pr7335 and remove old
15239         way of marking pure calls.
15240         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
15241         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
15242         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
15243         RTL_CONST_OR_PURE_CALL_P.
15244         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
15245         * loop-invariant.c (find_exits, find_invariant_bb): Changed
15246         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
15247         * sched-deps.c (schedule_analyze): Ditto.
15248         * rtl.h (struct rtx_def): Use call field, unchanging field, and
15249         return_val field of calls to represent pure and const function info.
15250         (CONST_OR_PURE_CALL_P): Deleted macro.
15251         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
15252         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
15253         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
15254         TREE_READONLY.
15255         * tree-optimize.c (execute_fixup_cfg): Added test for
15256         ECF_LOOPING_CONST_OR_PURE.
15257         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
15258         DECL_PURE_P.
15259         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
15260         effects for looping pure or const calls.
15261         (verify_gimple_expr): Added verification code.
15262         * config/alpha/alpha.c (alpha_legitimize_address,
15263         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
15264         RTL_CONST_CALL_P.
15265         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
15266         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
15267         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
15268         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
15269         RTL_CONST_OR_PURE_CALL_P.
15270         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
15271         and const calls to be deleted.
15272
15273 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
15274
15275         PR target/35714
15276         * config/i386/mmx.md (mmx_subv2sf3): New expander.
15277         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
15278         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
15279         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15280         to handle nonimmediate operands.
15281         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
15282         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
15283         to handle nonimmediate operands.
15284         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
15285         (mmx_pmulhrwv4hi3): New expander.  Use
15286         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15287         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
15288         (sse2_umulv1siv1di3): New expander.  Use
15289         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15290         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
15291         (mmx_eq<mode>3): New expander.  Use
15292         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15293         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
15294         (mmx_uavgv8qi3): New expander.  Use
15295         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15296         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
15297         (mmx_uavgv4hi3): New expander.  Use
15298         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15299
15300         * config/i386/sse.md
15301         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
15302         to handle nonimmediate operands.
15303         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
15304         to handle nonimmediate operands.
15305         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
15306         to handle nonimmediate operands.
15307         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
15308         to handle nonimmediate operands.
15309         (sse2_unpckhpd_exp): New expander.  Use
15310         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15311         (sse2_unpcklpd_exp): New expander.  Use
15312         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15313         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
15314         to handle nonimmediate operands.
15315         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
15316         to handle nonimmediate operands.
15317         (*sse2_<plusminus_insn><mode>3): Rename from
15318         sse2_<plusminus_insn><mode>3 insn pattern.
15319         (sse2_<plusminus_insn><mode>3): New expander.  Use
15320         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15321         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
15322         (sse2_umulv2siv2di3): New expander.  Use
15323         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15324         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
15325         (sse4_1_mulv2siv2di3): New expander.  Use
15326         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15327         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
15328         (sse2_pmaddwd): New expander.  Use
15329         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15330         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
15331         (sse2_eq<mode>3): New expander.  Use
15332         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15333         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
15334         (sse4_1_eqv2di3): New expander.  Use
15335         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15336         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
15337         (sse2_uavgv16qi3): New expander.  Use
15338         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15339         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
15340         (sse2_uavgv16qi3): New expander.  Use
15341         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15342         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
15343         (sse2_uavgv8hi3): New expander.  Use
15344         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15345         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
15346         (ssse3_pmulhrswv8hi3): New expander.  Use
15347         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15348         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
15349         (ssse3_pmulhrswv4hi3): New expander.  Use
15350         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15351
15352         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
15353         (<sse>_vmmul<mode>3): Ditto.
15354         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
15355         (divv2df3): Ditto.
15356         (ssse3_pmaddubsw128): Use register_operand for operand 1.
15357         (ssse3_pmaddubsw): Ditto.
15358
15359         * config/i386/i386.c (struct_builtin_description)
15360         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
15361         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
15362         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
15363         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
15364         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
15365         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
15366         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
15367         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
15368         (ix86_fixup_binary_operands): Assert that src1
15369         and src2 must have the same mode when swapped.
15370         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
15371         and ix86_binary_operator_ok.  Do not force operands in registers
15372         when optimizing.
15373
15374 2008-05-07  Jan Hubicka  <jh@suse.cz>
15375
15376         * cgraph.c (dump_cgraph_node): Update.
15377         * cgraph.h (cgraph_local_info): Break out inline summary.
15378         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
15379         hook.
15380         * ipa-inline (inline_summary): New accestor function.
15381         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
15382         cgraph_decide_inlining, compute_inline_parameters): Update.
15383         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
15384
15385 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
15386
15387         Cleanup ColdFire scheduling support and add V4 pipeline model.
15388
15389         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
15390         (define_attr cpu): Add cfv4 value.
15391         (define_attr type, define_attr type1): Merge into a single 'type'
15392         attribute.  Update all uses.
15393         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
15394         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
15395         Update all uses.
15396         (define_attr opx_mem, define_attr opy_mem): Remove.
15397         (define_attr op_mem): Clean up, update comment.
15398         (define_attr size): Use specific values instead of general int.
15399         (define_attr guess, define_attr split): Remove.  Update all uses.
15400         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
15401         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
15402         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
15403         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
15404         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
15405         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
15406         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
15407         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
15408         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
15409         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
15410         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
15411         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
15412         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
15413         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
15414         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
15415         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
15416         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
15417         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
15418         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
15419         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
15420         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
15421         Update or set attributes.
15422         (stack_tie): New fake instruction.
15423
15424         * config/m68k/m68k.h (TUNE_CFV4): New macro.
15425         (m68k_sched_attr_size): Update declaration.
15426         (m68k_sched_attr_type2): Remove.
15427         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
15428         Declare new bypass predicates.
15429
15430         * config/m68k/m68k.c (m68k_sched_issue_rate,
15431         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
15432         implementations.
15433         (TARGET_SCHED_ISSUE_RATE,
15434         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
15435         (override_options): Handle scheduling for ColdFire V4 core.
15436         (m68k_expand_prologue): Emit stack_tie.
15437         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
15438         'OP_TYPE_FPN'.  Update all uses.
15439         (sched_guess_p): Remove.
15440         (sched_address_type): Handle symbolic addresses.
15441         (sched_get_operand): New static function.
15442         (sched_operand_type): Merge into sched_attr_op_type.
15443         (sched_attr_op_type): Handle FP registers, handle quick constants,
15444         update.
15445         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
15446         (m68k_sched_attr_size): Update.  Move logic to ...
15447         (sched_get_attr_size_int): New static function.
15448         (sched_get_opxy_mem_type): New static function.
15449         (m68k_sched_attr_op_mem): Update.
15450         (m68k_sched_attr_type2): Remove.
15451         (sched_cfv4_bypass_data): New static variable.
15452         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
15453         (m68k_sched_issue_rate): Implement scheduler hook.
15454         (struct _sched_ib: enabled_p): New field.
15455         (m68k_sched_variable_issue): Update.  Handle V4.
15456         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
15457         sched_dump_class_func_t, sched_dump_split_class,
15458         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
15459         sched_dump_dfa_class, m68k_sched_dump): Remove.
15460         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
15461         hook.
15462         (m68k_sched_init_global): Remove statisctics dumping, introduce
15463         sanity check that all instructions have pipeline reservations.  Handle
15464         ColdFire V4 core.
15465         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
15466         Handle ColdFire V4 core.
15467         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
15468         New static functions.
15469         (m68k_sched_address_bypass_p): New bypass predicate.
15470         (sched_get_indexed_address_scale): New static function.
15471         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
15472
15473         * cf.md: Update comments.
15474         (define_attr type2): Remove.  Use 'type' attribute instead.
15475         Update all uses.
15476         (cf_ib): Rename to cfv123_ib.  Update all uses.
15477         (cf_oep): Rename to cfv123_oep.  Update all uses.
15478         (cf_chr): Rename to cfv123_chr.  Update all uses.
15479         (cf_mem): Rename to cfv123_mem.  Update all uses.
15480         (cf_mac): Move to more appropriate place.
15481         (cfv123_guess): New automaton and cpu_unit.
15482         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
15483         Update uses of 'size' attribute.  Handle before reload scheduling.
15484         (cfv123_guess): New dummy reservation for unhandled instructions.
15485         (cfv4_*): Pipeline description of ColdFire V4 core.
15486         (ignore): New reservation to handle 'ignore' type.
15487
15488 2008-05-07  Ian Lance Taylor  <iant@google.com>
15489
15490         PR middle-end/36013
15491         * gimplify.c (find_single_pointer_decl_1): Don't look through
15492         indirections.
15493         (find_single_pointer_decl): Adjust comments.
15494
15495 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
15496
15497         PR middle-end/36137
15498         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
15499         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
15500
15501         PR middle-end/36106
15502         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
15503         integral type rather than floating point, then VIEW_CONVERT_EXPR
15504         to the floating point type.
15505
15506 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
15507
15508         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
15509         TFmode op0 to register.
15510
15511 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
15512
15513         * c-decl.c (grokdeclarator): Comment typo.
15514
15515 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
15516
15517         * tree-flow.h: Remove prototype for computed_goto_p.
15518         * tree-cfg.c (computed_goto_p): Make static.
15519
15520 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15521
15522         PR target/35657
15523         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
15524         (contains_aligned_value_p): This.  Handle _Decimal128.
15525         (ix86_function_arg_boundary): Only align _Decimal128 to its
15526         natural boundary and handle it properly.
15527
15528 2008-05-06  Martin Jambor  <mjambor@suse.cz>
15529
15530         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
15531         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
15532         (ipcp_method_set_orig_node): Removed.
15533         (ipcp_cval_get_cvalue_type): Removed.
15534         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
15535         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
15536         (ipcp_cval_set_cvalue_type): Removed.
15537         (ipcp_cval_get_cvalue): Removed.
15538         (ipcp_cval_set_cvalue): Removed.
15539         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
15540         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
15541         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
15542         (ipcp_cval_meet): Renamed to ipa_lattice_meet
15543         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
15544         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
15545         (ipcp_get_ith_lattice): Changed parameters.
15546         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
15547         (ipcp_lattice_from_jfunc): Changed parameters.
15548         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
15549         (ipcp_method_cval_print): Added temporary variable info.
15550         (ipcp_redirect): Removed already unused local variable caller.
15551         (ipcp_redirect): New temporary variable orig_callee_info
15552         (ipcp_redirect): Removed newly unused local variable callee.
15553         (ipcp_redirect): Removed (a bit confusing) local variable type.
15554         (ipcp_insert_stage): Added local variable info.
15555         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
15556         renamed too
15557         (ipcp_formal_create): Removed.
15558         (ipcp_method_cval_set): Removed.
15559         (ipcp_propagate_stage): Renamed lattice variables.
15560         (ipcp_method_cval_set_cvalue_type): Removed.
15561         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
15562         (ipcp_print_all_lattices): Changed printed strings to refer to
15563         lattices rather than cvals.
15564         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
15565         (ipcp_propagate_const): Changed formal parameters.
15566         (build_const_val): Changed formal parameters.
15567         (ipcp_insert_stage): Removed useless variable cvalue
15568         (build_const_val): Changed formal parameters.
15569         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
15570         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
15571         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
15572         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
15573         (ipcp_print_func_profile_counts): Changed string from "method" to
15574         "function"
15575         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
15576         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
15577         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
15578         (ipcp_structures_print): Renamed to ipcp_print_all_structures
15579         (ipcp_profile_print): Renamed to ipcp_print_profile_data
15580         (ipcp_lat_is_const): Changed parameters and made inline.
15581         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
15582         (ipcp_redirect): Renamed to ipcp_need_redirect_p
15583         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
15584         the predicate condition directly
15585         (ipcp_propagate_stage): Added local variable args. Removed local
15586         variable callee.  (Both are mere code simplifications.)
15587         (ipcp_method_dont_insert_const): Renamed to
15588         ipcp_node_not_modifiable_p.
15589         (ipcp_node_not_modifiable_p): Made inline.
15590         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
15591         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
15592         (ipcp_print_all_lattices): Removed variable cvalue
15593         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
15594         Updated comments.
15595
15596 2008-05-06  Olivier Hainque  <hainque@adacore.com>
15597
15598         * tree-sra.c (try_instantiate_multiple_fields): Early return
15599         if field has POINTER_TYPE.
15600
15601 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
15602
15603         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
15604         by using 'q' specifier for instruction.
15605         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
15606
15607 2008-05-06  Anatoly Sokolov <aesok@post.ru>
15608
15609         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
15610         Change mode of zero_extract from QImode to HImode.
15611         (sign bit tests peepholes): (Ditto.).
15612
15613 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
15614
15615         * config/i386/mmx.md: Remove double backslashes from asm templates.
15616         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
15617         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15618         to handle nonimmediate operands.
15619         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
15620         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15621         to handle nonimmediate operands.
15622         (*mmx_<code>v2sf3_finite): New insn pattern.
15623         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
15624         (mmx_<code>v2sf3): New expander.  Use
15625         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15626         (mmx_<plusminus_insn><mode>3): New expander.  Use
15627         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15628         (*mmx_<plusminus_insn><mode>3): New insn pattern.
15629         (mmx_add<mode>3): Removed.
15630         (mmx_ssadd<mode>3): Ditto.
15631         (mmx_usadd<mode>3): Ditto.
15632         (mmx_sub<mode>3): Ditto.
15633         (mmx_sssub<mode>3): Ditto.
15634         (mmx_ussub<mode>3): Ditto.
15635         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
15636         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
15637         to handle nonimmediate operands.
15638         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
15639         insn pattern.
15640         (mmx_smulv4hi3_highpart): New expander.  Use
15641         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15642         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
15643         insn pattern.
15644         (mmx_umulv4hi3_highpart): New expander.  Use
15645         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15646         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
15647         (mmx_<code>v4hi3): New expander.  Use
15648         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15649         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
15650         (mmx_<code>v8qi3): New expander.  Use
15651         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15652         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
15653         (mmx_<code><mode>3): New expander.  Use
15654         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15655
15656 2008-05-05  Jan Hubicka  <jh@suse.cz>
15657
15658         PR tree-optimization/36118
15659         * passes.c (pass_init_dump_file): Fix dump header.
15660
15661 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15662
15663         PR middle-end/36141
15664         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
15665         VCE for function decls.
15666
15667 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
15668
15669         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
15670
15671 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
15672
15673         * config/i386/i386.md (sat_plusminus): New.
15674         (plusminus_insn): Likewise.
15675         (plusminus_mnemonic): Likewise.
15676         (addsub): Removed.
15677         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
15678         (*<addsub><mode>3_cc_overflow): Renamed to ...
15679         (*<plusminus_insn><mode>3_cc_overflow): This.
15680         (*<addsub>si3_zext_cc_overflow): Renamed to ...
15681         (*<plusminus_insn>si3_zext_cc_overflow): This.
15682
15683         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
15684         (<plusminus_insn><mode>3): This.
15685         (*<addsub><mode>3): Renamed to ...
15686         (*<plusminus_insn><mode>3): This.
15687         (<sse>_vm<addsub><mode>3): Renamed to ...
15688         (<sse>_vm<plusminus_insn><mode>3): This.
15689         (sse3_h<addsub>v4sf3): Renamed to ...
15690         (sse3_h<plusminus_insn>v4sf3): This.
15691         (sse3_h<addsub>v2df3): Renamed to ...
15692         (sse3_h<plusminus_insn>v2df3): This.
15693         (<plusminus_insn><mode>3): New.
15694         (*<plusminus_insn><mode>3): Likewise.
15695         (sse2_<plusminus_insn><mode>3): Likewise.
15696         (add<mode>): Removed.
15697         (*add<mode>3): Likewise.
15698         (sse2_ssadd<mode>3): Likewise.
15699         (sse2_usadd<mode>3): Likewise.
15700         (sub<mode>3): Likewise.
15701         (*sub<mode>3): Likewise.
15702         (sse2_sssub<mode>3): Likewise.
15703         (sse2_ussub<mode>3): Likewise.
15704
15705 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
15706
15707         * gthr-single.h: Add in required interface elements as per gthr.h.
15708         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
15709         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
15710         Generalize UNUSED macro.
15711         (__gthread_once): Add.
15712         (__gthread_key_create): Add.
15713         (__gthread_key_delete): Add.
15714         (__gthread_getspecific): Add.
15715         (__gthread_setspecific): Add.
15716
15717 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
15718
15719         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
15720         the same size types for the indirect reference on the rhs, then
15721         create a VCE.
15722
15723 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
15724
15725         * config/i386/i386.md
15726         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
15727         one insn template instead of template series.
15728         (*xordi_1_rex64): Ditto.
15729         (*xordi_2_rex64): Ditto.
15730
15731 2008-05-05  Ira Rosen  <irar@il.ibm.com>
15732
15733         PR tree-optimization/36119
15734         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
15735         in case of SLP.
15736
15737 2008-06-04  Jan Hubicka  <jh@suse.cz>
15738
15739         tree-optimization/36100
15740         * tree-pass.h (pass_O0_always_inline): Declare.
15741         * ipa-inline.c (inline_transform): Remove dead code.
15742         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
15743         pass_O0_always_inline): New.
15744         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
15745
15746 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
15747
15748         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
15749         mnemonic in this_param move for TARGET_64BIT.
15750
15751 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
15752
15753         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
15754         (*strmovsi_rex_1): Ditto.
15755         (*strsetsi_1): Ditto.
15756         (*strsetsi_rex_1): Ditto.
15757
15758         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
15759         adddicc expanders using SWI mode iterator.
15760
15761 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
15762
15763         PR target/36121
15764         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
15765         argument handling.
15766
15767 2008-05-04  David S. Miller  <davem@davemloft.net>
15768
15769         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
15770         (sparc*-*-linux*): Use linux.h in tm_file.
15771         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
15772         compiler defaulting to 32-bit.
15773         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
15774         no longer needed.
15775         * config/sparc/linux.h: Remove definitions now obtained
15776         properly from linux.h
15777         * config/sparc/linux64.h: Likewise.
15778         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
15779         don't want this setting for 32-bit builds in a biarch compiler.
15780         * doc/install.texi: Add sparc-linux to list of targets
15781         supporting --enable-targets=all.
15782
15783 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
15784
15785         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
15786
15787 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
15788
15789         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
15790         after V4SI_FTYPE_V8HI.
15791         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
15792         case V4SI_FTYPE_V2DF.
15793
15794 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
15795
15796         * doc/invoke.texi (max-flow-memory-locations): Removed.
15797         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
15798
15799 2008-05-03  Richard Guenther  <rguenther@suse.de>
15800
15801         PR middle-end/34973
15802         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
15803
15804 2008-05-02  David S. Miller  <davem@davemloft.net>
15805
15806         * config.gcc (need_64bit_hwint): Document libcpp dependency.
15807
15808 2008-05-02  Simon Baldwin <simonb@google.com>
15809
15810         PR bootstrap/36108
15811         * c-common.h (warn_array_subscript_range): Removed.
15812         * c-common.c (warn_array_subscript_range): Ditto.
15813         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
15814         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
15815
15816 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
15817
15818         * config/i386/i386.c (ix86_special_builtin_type): New.
15819         (bdesc_special_args): Likewise.
15820         (ix86_expand_special_args_builtin): Likewise.
15821         (ix86_init_mmx_sse_builtins): Updated.
15822         (ix86_expand_builtin): Updated.
15823         (ix86_expand_store_builtin): Removed.
15824         (ix86_expand_unop_builtin): Likewise.
15825
15826         * config/i386/mm3dnow.h (__v2sf): Moved to ...
15827         * config/i386/mmintrin.h (__v2sf): Here.
15828
15829         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
15830         const __v2sf.
15831         (_mm_loadl_pi): Likewise.
15832         (_mm_storeh_pi): Replace __v2si with __v2sf.
15833         (_mm_storel_pi): Likewise.
15834
15835         * doc/extend.texi: Correct __builtin_ia32_loadhps,
15836         __builtin_ia32_loadlps, __builtin_ia32_storehps,
15837         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
15838         __builtin_ia32_loadlpd.
15839
15840 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
15841
15842         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
15843         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
15844         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
15845         (ix86_init_mmx_sse_builtins): Updated.
15846         (ix86_expand_args_builtin): Likewise.
15847         (ix86_expand_builtin): Likewise.
15848         (ix86_expand_unop1_builtin): Renamed to ...
15849         (ix86_expand_unop_vec_merge_builtin): This.
15850
15851 2008-05-01  Jan Hubicka  <jh@suse.cz>
15852
15853         PR bootstrap/36100
15854         * ipa-inline.c (inline_generate_summary): Make static.
15855         (inline_transform): Do not call inlining at -O0; make static.
15856         * passes.c (execute_todo): Add sanity check.
15857         (execute_one_ipa_transform_pass): Execute proper flags.
15858
15859 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
15860
15861         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
15862         (DECL_NONADDRESSABLE_P): Likewise.
15863         * alias.c (record_component_aliases): Fix comment.
15864
15865 2008-05-01  Simon Baldwin <simonb@google.com>
15866
15867         * c-common.h (warn_array_subscript_range): New function.
15868         * c-common.c (warn_array_subscript_range): Ditto.
15869         * tree-vrp.c (check_array_ref): Corrected code to agree with
15870         comment, ignoring only arrays of size 0 or size 1.
15871         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
15872
15873 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15874
15875         * config/i386/i386.c (ix86_builtin_type): Replace
15876         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
15877         (bdesc_args): Updated.
15878         (ix86_init_mmx_sse_builtins): Likewise.
15879         (ix86_expand_args_builtin): Likewise.
15880
15881         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
15882         with __v1di.
15883
15884         * doc/extend.texi: Correct __builtin_ia32_palignr.
15885
15886 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15887
15888         PR target/36095
15889         * config/i386/i386.c (bdesc_crc32): Removed.
15890         (ix86_expand_crc32): Likewise.
15891         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
15892         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
15893         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
15894         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
15895         UINT_FTYPE_UINT_UCHAR.
15896         (bdesc_args): Updated. Add crc32 builtins.
15897         (ix86_init_mmx_sse_builtins): Updated.
15898         (ix86_expand_args_builtin): Updated to support subreg.
15899
15900         * doc/extend.texi: Correct __builtin_ia32_crc32di.
15901
15902 2008-05-01  Jan Hubicka  <jh@suse.cz>
15903
15904         * tree-pass.h (opt_pass): Add IPA_PASS.
15905         (varpool_node, cgraph_node): Forward declare.
15906         (ipa_opt_pass): Define.
15907         (pass_ipa_inline): Turn into ipa_opt_pass.
15908         (pass_apply_inline): Remove.
15909         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
15910         (apply_inline): Turn into ....
15911         (inline_transform): ... this one.
15912         (inline_generate_summary): New function.
15913         (pass_apply_inline): Remove.
15914         * function.h (ipa_opt_pass): Forward declare structure; typedef;
15915         vector.
15916         (struct function): Add ipa_transforms_to_apply.
15917         * passes.c (register_one_dump_file): Work on IPA_PASS.
15918         (init_optimization_passes): Remove pass_inline_parameters and
15919         pass_apply_inline.
15920         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
15921         (execute_one_pass) ... here; apply transforms when possible.
15922         (add_ipa_transform_pass, execute_ipa_summary_asses,
15923         execute_one_ipa_transform_pass): New.
15924         (execute_ipa_pass_list): Update for IPA_PASS type.
15925
15926 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15927
15928         * config/i386/i386.c (ix86_builtin_type): Add
15929         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
15930         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
15931         (bdesc_args): Add SSE4a builtins.
15932         (ix86_init_mmx_sse_builtins): Updated.
15933         (ix86_expand_args_builtin): Likewise.
15934         (ix86_expand_builtin): Likewise.
15935
15936 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
15937
15938         * config/i386/i386.c (ix86_builtin_type): Add
15939         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
15940         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
15941         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
15942         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
15943         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
15944         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
15945         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
15946         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
15947         and DI_FTYPE_DI_DI_INT.
15948         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
15949         (ix86_init_mmx_sse_builtins): Updated.
15950         (ix86_expand_args_builtin): Likewise.
15951         (ix86_expand_builtin): Likewise.
15952         (ix86_expand_binop_imm_builtin): Removed.
15953
15954         * doc/extend.texi: Correct __builtin_ia32_palignr128.
15955
15956 2008-04-30  Richard Guenther  <rguenther@suse.de>
15957
15958         PR tree-optimization/32921
15959         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
15960
15961 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
15962
15963         * config/arm/arm.c (arm_unwind_emit): Use
15964         crtl->all_throwers_are_sibcalls instead of
15965         cfun->all_throwers_are_sibcalls.
15966         (arm_output_fn_unwind): Likewise.
15967         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
15968         instead of cfun->uses_pic_offset_table.
15969         (frv_expand_prologue): Likewise.
15970         (frv_frame_pointer_required): Likewise.
15971         (frv_expand_fdpic_call): Likewise.
15972         (frv_emit_movsi): Likewise.
15973         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
15974         cfun->returns_pcc_struct instead of
15975         current_function_returns_pcc_struct.
15976         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
15977         instead of cfun->calls_eh_return.
15978         (m32c_pushm_popm): Likewise.
15979         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
15980         "extern" declaration.
15981
15982 2008-04-30  Richard Guenther  <rguenther@suse.de>
15983
15984         PR tree-optimization/21636
15985         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
15986         constant address.
15987         (evaluate_stmt): Print the likely value.
15988         (ccp_visit_stmt): Avoid excessive vertical spacing.
15989
15990 2008-04-30  Rafael Espíndola  <espindola@google.com>
15991
15992         * builtins.c (fold_call_expr): Return realret.
15993         * tree-ssa-threadedge.c
15994         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
15995         __builtin_object_size.
15996
15997 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
15998
15999         * gcc.c (wrapper_string): New variable.
16000         (insert_wrapper): New function.
16001         (execute): New option -wrapper.
16002         * doc/invoke.texi (Overall Options): New driver option -wrapper.
16003
16004 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
16005
16006         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
16007         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
16008         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
16009         from...
16010         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
16011         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
16012         config/rs6000/e500crtres64gprctr.asm,
16013         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
16014         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
16015         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
16016         config/rs6000/e500crtsav64gprctr.asm,
16017         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
16018         config/rs6000/e500crtsavg64gprctr.asm: New files.
16019         * config/rs6000/t-ppccomm: Add build rules for new files.
16020         (LIB2FUNCS_STATIC_EXTRA): Add new files.
16021         * config/rs6000/t-netbsd: Add build rules for new files.
16022         (LIB2FUNCS_STATIC_EXTRA): New variable.
16023         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
16024         (CRTSAVRES_DEFAULT_SPEC): Likewise.
16025         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
16026
16027 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
16028
16029         * config/i386/i386.c (ix86_builtin_type): Add
16030         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
16031         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
16032         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
16033         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
16034         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
16035         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
16036         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
16037         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
16038         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
16039         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
16040         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
16041         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
16042         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
16043         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
16044         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
16045         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
16046         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
16047         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
16048         V1DI_FTYPE_V2SI_V2SI.
16049         (bdesc_2arg): Moved to ...
16050         (bdesc_args): Here.
16051         (ix86_init_mmx_sse_builtins): Updated.
16052         (ix86_expand_args_builtin): Updated.  Take a pointer
16053         to const struct builtin_description.  Handle comparison
16054         builtin functions.
16055         (ix86_expand_sse_compare): Take a new argument for swapping operands.
16056         (ix86_expand_builtin): Updated.
16057
16058         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
16059         (ssse3_pmaddubsw128): This.
16060         (ssse3_pmaddubswv4hi3): Renamed to ...
16061         (ssse3_pmaddubsw): This.
16062
16063         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
16064         (__builtin_ia32_packssdw128): Likewise.
16065         (__builtin_ia32_packuswb128): Likewise.
16066         (__builtin_ia32_pmaddubsw): Likewise.
16067         (__builtin_ia32_pmaddubsw128): Likewise.
16068
16069 2008-04-30  Richard Guenther  <rguenther@suse.de>
16070
16071         PR tree-optimization/14847
16072         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
16073         (recognize_bits_test): Use it.
16074         (recognize_single_bit_test): Likewise.
16075
16076 2008-04-30  Martin Jambor  <mjambor@suse.cz>
16077
16078         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
16079         instead of setting number of formal parameters to zero.
16080         (ipcp_init_stage): Do not set the number of actual parameters to zero
16081         either.
16082         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
16083         which are called with variable number of arguments.
16084         (ipcp_insert_stage): Explicitely skipping all nodes which are
16085         called with variable number of arguments.
16086         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
16087         number of parameters.
16088
16089         * ipa-prop.h (struct ipa_node_params): Added flag
16090         called_with_var_arguments
16091         (ipa_set_param_count): Added.  Changed sole setter to use it.
16092         (ipa_get_param_count): Added.  All readers of param_count
16093         converted to use it instead.
16094         (ipa_set_called_with_variable_arg): Added.
16095         (ipa_is_called_with_var_arguments): Added.
16096         (ipa_get_ith_param): Added.  All readers of param_decls converted
16097         to use it instead.
16098         (ipa_set_cs_argument_count): Added, sole writer to argument_count
16099         changed to use it.
16100         (ipa_get_cs_argument_count): Added, all readers of argument_count
16101         changed to cal it.
16102         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
16103         to use it.
16104
16105         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
16106         (struct ipcp_lattice): Renamed cval_type to type
16107         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
16108
16109         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
16110         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
16111         (ipcp_insert_stage): Changed the type of variable cvalue to tree
16112         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
16113         (build_const_val): Changed the type of parameter cvalue to tree
16114         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
16115         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
16116
16117         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
16118         constant
16119
16120         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
16121         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
16122         (ipa_add_method): Renamed to ipa_push_func_to_list
16123         (ipa_remove_method): Renamed to ipa_pop_func_from_list
16124         (ipa_callsite_param_count): Removed.
16125         (ipa_callsite_param_count_set): Removed.
16126         (ipa_callsite_param): Removed.
16127         (ipa_callsite_callee): Removed.
16128         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
16129         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
16130         (ipa_method_formal_count): Removed.
16131         (ipa_method_formal_count_set): Removed.
16132         (ipa_method_get_tree): Removed.
16133         (ipa_method_tree_map_create): Removed.
16134         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
16135         (ipa_create_param_decls_array): Creates the array itself
16136         (ipa_create_param_decls_array): Temporary variable info instead of
16137         a few dereferences.
16138         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
16139         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
16140         (get_type): Removed.
16141         (ipa_jf_get_info_type): Removed.
16142         (ipa_node_create): Renamed to ipa_create_node_params
16143         (ipa_free): Renamed to ipa_free_all_node_params
16144         (ipa_nodes_create): Renamed to ipa_create_all_node_params
16145         (ipa_edges_create): Renamed to ipa_create_all_edge_args
16146         (ipa_edges_free): Renamed to ipa_free_all_edge_args
16147         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
16148         (ipa_free_all_node_params): Deallocation to jump_functions moved to
16149         ipa_free_all_edge_args
16150         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
16151         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
16152         (ipa_create_methodlist_node): Removed.
16153         (ipa_methodlist_method): Removed.
16154         (ipa_methodlist_method_set): Removed.
16155         (ipa_methodlist_next_method): Removed.
16156         (ipa_methodlist_next_method_set): Removed.
16157         (ipa_method_is_modified): Removed.
16158         (ipa_method_modify_create): Removed.
16159         (ipa_method_modify_init): Temporary variable info instead of a few
16160         dereferences.
16161         (ipa_detect_param_modifications): Temporary variable info instead of
16162         a few dereferences.
16163         (ipa_compute_jump_functions): Temporary variable info instead of
16164         a few dereferences.
16165         (ipa_method_modify_set): Removed.
16166         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
16167         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
16168         than craph_node as the first parameter.
16169         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
16170         (ipa_method_modify_init): Removed.
16171         (ipa_compute_jump_functions): Added a temp variable instead of
16172         repeatadly dereferencing the cgraph_edge.aux pointer
16173         (ipa_callsite_param_set_type): Removed.
16174         (ipa_compute_jump_functions): i renamed to index and moved to
16175         an inner block
16176         (ipa_callsite_param_set_info_type_formal): Removed.
16177         (ipa_callsite_param_set_info_type): Removed.
16178         (ipa_callsite_param_map_create): Removed.
16179         (ipa_callsite_tree): Removed.
16180         (ipa_callsite_caller): Removed.
16181         (ipa_pop_func_from_list): return_method removed to return_func
16182
16183         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
16184         prefixed all values with IPA_. Changed all users.
16185         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
16186         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
16187         and FORMAL_IPATYPE IPA_PASS_THROUGH.
16188         (union parameter_info): Renamed to jump_func_value.
16189         (union jump_func_value): Renamed value to constant
16190         (struct ipa_jump_func): Renamed info_type to value
16191         (struct ipa_node): Renamed to ipa_node_params
16192         (struct ipa_node_params): Renamed ipa_arg_num to param_count
16193         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
16194         (struct ipa_node_params): Renamed ipa_mod to modified_flags
16195         (struct ipa_edge): Renamed to ipa_edge_args
16196         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
16197         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
16198         (struct ipa_methodlist): Renamed to ipa_func_list
16199         (struct ipa_func_list): method_p renamed to node, next_method
16200         renamed to next
16201         (ipa_methodlist_p): Removed, switched all users to struct pointer
16202         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
16203
16204 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
16205
16206         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
16207         (rs6000_emit_epilogue): Use backchain to restore only when we
16208         have a large frame.  Make use of frame pointer to restore if we
16209         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
16210
16211 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
16212
16213         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
16214         Add mode to zero_extract.
16215         (sign bit tests peepholes): (Ditto.).
16216
16217 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
16218
16219         * config/i386/i386.c (ix86_builtins): Replace Prescott New
16220         Instructions in comments with SSE3.
16221         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
16222         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
16223         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
16224         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
16225         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
16226         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
16227         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
16228         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
16229         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
16230         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
16231         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
16232         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
16233         (bdesc_sse_args): Renamed to ...
16234         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
16235         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
16236         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
16237         IX86_BUILTIN_FABSQ.
16238         (bdesc_1arg): Moved to ...
16239         (bdesc_args): Here.
16240         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
16241         Instructions in comments with SSE3.
16242         (ix86_expand_sse_operands_builtin): Renamed to ...
16243         (ix86_expand_args_builtin): This.  Updated.
16244         (ix86_expand_unop1_builtin): Update comments.
16245         (ix86_expand_builtin): Updated.
16246
16247 2008-04-29  Richard Guenther  <rguenther@suse.de>
16248
16249         PR tree-optimization/36078
16250         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
16251         Update virtual SSA form after cleaning up the CFG.
16252
16253 2008-04-29  Richard Guenther  <rguenther@suse.de>
16254
16255         PR middle-end/15255
16256         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
16257
16258 2008-04-29  Richard Guenther  <rguenther@suse.de>
16259
16260         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
16261         (compute_may_aliases): Do not call finalize_ref_all_pointers.
16262         (compute_flow_insensitive_aliasing): Do not treat
16263         PTR_IS_REF_ALL pointers special.
16264         (get_smt_for): Likewise.
16265         (may_alias_p): Re-structure.
16266         (is_escape_site): A ref-all pointer conversion is not an escape site.
16267         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
16268         PTR_IS_REF_ALL pointers special.
16269         * tree-ssa-structalias.h (struct alias_info): Remove
16270         ref_all_symbol_mem_tag field.
16271         (PTR_IS_REF_ALL): Remove.
16272
16273 2008-04-29  Richard Guenther  <rguenther@suse.de>
16274
16275         PR middle-end/36077
16276         * fold-const.c (extract_muldiv_1): In combining division constants
16277         make sure to never overflow.
16278
16279 2008-04-29  Nick Clifton  <nickc@redhat.com>
16280
16281         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
16282
16283 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16284
16285         PR bootstrap/35169
16286         * optc-gen.awk: Work around HP-UX/IA awk bug.
16287
16288 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
16289
16290         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
16291         2008-04-25 commit.
16292
16293 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
16294
16295         PR target/36073
16296         * config/i386/i386.md
16297         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
16298         Change operand 1 predicate to nonimmediate_operand.
16299
16300 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
16301
16302         PR debug/36060
16303         * dwarf2out.c (struct die_struct): Mark as chain_circular through
16304         die_sub field.
16305         * gengtype.c (walk_type, write_func_for_structure): Handle
16306         chain_circular.
16307         * doc/gty.texi: Document chain_circular.
16308
16309 2008-04-28  Richard Guenther  <rguenther@suse.de>
16310
16311         PR tree-optimization/36066
16312         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
16313         SCEV and loop.
16314
16315 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
16316
16317         PR target/36064
16318         * config/i386/i386.md
16319         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
16320         Use match_scratch instead of match_operand for operands 3 and 4.
16321
16322 2008-04-27  Richard Guenther  <rguenther@suse.de>
16323
16324         PR tree-optimization/18754
16325         PR tree-optimization/34223
16326         * tree-pass.h (pass_complete_unrolli): Declare.
16327         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
16328         loop size before and after unconditionally of UL_NO_GROWTH in effect.
16329         Rewrite loop into loop closed SSA form if it is not already.
16330         (tree_unroll_loops_completely): Re-structure to iterate over
16331         innermost loops with intermediate CFG cleanups.
16332         Unroll outermost loops only if requested or the code does not grow
16333         doing so.
16334         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
16335         loops are available.
16336         (tree_vectorize): Instead do so here.
16337         (tree_complete_unroll): Also unroll outermost loops.
16338         (tree_complete_unroll_inner): New function.
16339         (gate_tree_complete_unroll_inner): Likewise.
16340         (pass_complete_unrolli): New pass.
16341         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
16342         uses outside of the loop.
16343         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
16344         form if it is available.
16345         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
16346         * passes.c (init_optimization_passes): Schedule complete inner
16347         loop unrolling pass before the first CCP pass after final inlining.
16348
16349 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
16350
16351         * targhooks.h (default_emutls_var_fields,
16352         default_emutls_var_init): Declare.
16353         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
16354         * target.h (struct gcc_target): Add struct emutls member.
16355         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
16356         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
16357         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
16358         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
16359         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
16360         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
16361         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
16362         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
16363         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
16364         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
16365         emit debug information.
16366         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
16367         * varasm.c: Include targhooks.h.
16368         (emutls_object_section, emutls_tmpl_section): New.
16369         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
16370         (EMUTLS_SEPARATOR): New.
16371         (prefix_name): New.
16372         (get_emutls_object_name): New.
16373         (default_emutls_var_fields): New, broken out of ...
16374         (get_emutls_object_type): ... here.  Adjust to use target hooks.
16375         (get_emutls_init_templ_addr): Adjust to use target hooks.
16376         (emutls_decl): Adjust to use target hooks.
16377         (emutls_finish): Likewise.
16378         (default_emutls_var_init): New, broken out of ...
16379         (assemble_variable): ... here.  Adjust to use target hooks.
16380         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
16381         SECCAT_EMUTLS_TMPL.
16382         * c-common.c (handle_section_attribute): Prevent overriding
16383         sections for emulated tls with special sections.
16384         * config/i386/i386.c (x86_64_elf_select_section): Add
16385         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
16386         (x86_64_elf_unique_section): Likewise.
16387         * config/vxworks.c: Include tree.h.
16388         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
16389         (vxworks_override_options): Set TLS scheme.
16390         * doc/tm.texi (Emulated TLS): New node.
16391
16392 2008-04-26  Simon Baldwin <simonb@google.com>
16393
16394         PR c/35652
16395         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
16396         with propagated string constants.
16397
16398 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
16399
16400         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
16401         constraint for operand 2 when operand 0 is memory operand.
16402         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
16403         operand 0 is memory operand.
16404         (fix_trunc<mode>_i387_with_temp): Ditto.
16405         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
16406         operand 2 when operand 1 is memory operand.
16407         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
16408         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
16409         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
16410         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
16411         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
16412         operands 2,3 and 4 when operand 1 is memory operand.
16413         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
16414         is memory operand.
16415         (fistdi2_floor_with_temp): Ditto.
16416         (fist<mode>2_floor_with_temp): Ditto.
16417         (fistdi2_ceil_with_temp): Ditto.
16418         (fist<mode>2_ceil_with_temp): Ditto.
16419         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
16420
16421 2008-04-26  David Daney  <ddaney@avtrex.com>
16422
16423         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
16424         unspec_volitile.
16425         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
16426         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
16427         UNSPEC_UPDATE_GOT_VERSION): Renumber.
16428         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
16429         (compare_and_swap_12): New insn.
16430         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
16431         * config/mips/mips.c (mips_force_binary): New function.
16432         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
16433         (mips_expand_compare_and_swap_12): New function.
16434         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
16435
16436 2008-04-25  Jan Hubicka  <jh@suse.cz>
16437
16438         PR testsuite/35843
16439         * cfgexpand.c (pass_expand): Turn into RTL pass.
16440         * passes.c (execute_one_pass): Do pass typechecking after execution.
16441         * tree-pass.h (pass_expand): Turn into RTL pass.
16442
16443         * function.h (struct rtl_data): Move here fields
16444         accesses_prior_frames, calls_eh_return, saves_all_registers,
16445         has_nonlocal_goto, has_asm_statement, is_thunk,
16446         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
16447         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
16448         arg_pointer_save_area_init from struct function; turn into bool.
16449         (struct function): Move
16450         calls_eh_return, saves_all_registers, has_nonlocal_goto,
16451         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
16452         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
16453         tail_call_emit, arg_pointer_save_area_init
16454         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
16455         (current_function_returns_struct, current_function_returns_pcc_struct,
16456         current_function_calls_setjmp, current_function_calls_alloca,
16457         current_function_accesses_prior_frames,
16458         current_function_calls_eh_return, current_function_is_thunk,
16459         current_function_stdarg, current_function_profile,
16460         current_function_limit_stack, current_function_uses_pic_offset_table,
16461         current_function_uses_const_pool, current_function_has_nonlocal_label,
16462         current_function_saves_all_registers,
16463         current_function_has_nonlocal_goto,
16464         current_function_has_asm_statement): Remove accesor macros.
16465         * ra-conflict.c (global_conflicts): Update.
16466         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
16467         (suitable_for_tail_call_opt_p): Update.
16468         * builtins.c (expand_builtin_return_addr): Update.
16469         (expand_builtin_setjmp_setup): Update.
16470         (expand_builtin_nonlocal_goto): Update.
16471         * final.c (final_start_function): Update.
16472         (profile_function): Update.
16473         (leaf_function_p): Update.
16474         (only_leaf_regs_used): Update.
16475         * df-scan.c (df_get_exit_block_use_set): Update.
16476         * dojump.c (clear_pending_stack_adjust): Update.
16477         * tree-stdarg.c (gate_optimize_stdarg): Update.
16478         * gimple-low.c (lower_function_body): Update.
16479         * global.c (compute_regsets): Update.
16480         (global_alloc): Update.
16481         * dwarf2out.c (dwarf2out_begin_prologue): Update.
16482         * expr.c (expand_assignment): Update.
16483         * dse.c (dse_step0): Update.
16484         (dse_step1): Update.
16485         * c-decl.c (store_parm_decls): Update.
16486         * local-alloc.c (combine_regs): Update.
16487         (find_free_reg): Update.
16488         * function.c (assign_parms_augmented_arg_list): Update.
16489         (assign_parm_find_data_types): Update.
16490         (assign_parms): Update.
16491         (allocate_struct_function): Update.
16492         (expand_function_start): Update.
16493         (expand_function_end): Update.
16494         (get_arg_pointer_save_area): Update.
16495         (thread_prologue_and_epilogue_insns): Update.
16496         (rest_of_match_asm_constraints): Update.
16497         * stor-layout.c (variable_size): Update.
16498         * gcse.c (gcse_main): Update.
16499         (bypass_jumps): Update.
16500         * gimplify.c (gimplify_function_tree): Update.
16501         * calls.c (emit_call_1): Update.
16502         (expand_call): Update.
16503         * bt-load.c (compute_defs_uses_and_gen): Update.
16504         * except.c (sjlj_assign_call_site_values): Update.
16505         (sjlj_emit_function_enter): Update.
16506         (can_throw_external): Update.
16507         (set_nothrow_function_flags): Update.
16508         (expand_builtin_unwind_init): Update.
16509         (expand_eh_return): Update.
16510         (convert_to_eh_region_ranges): Update.
16511         (output_function_exception_table): Update.
16512         * emit-rtl.c (gen_tmp_stack_mem): Update.
16513         * cfgexpand.c (expand_used_vars): Update.
16514         (tree_expand_cfg): Update.
16515         * cfgcleanup.c (rest_of_handle_jump): Update.
16516         * explow.c (allocate_dynamic_stack_space): Update.
16517         * varasm.c (assemble_start_function): Update.
16518         (force_const_mem): Update.
16519         (mark_constant_pool): Update.
16520         * tree-optimize.c (tree_rest_of_compilation): Update.
16521         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
16522         * tree-cfg.c (notice_special_calls): Update.
16523         (is_ctrl_altering_stmt): Update.
16524         (tree_can_make_abnormal_goto): Update.
16525         (tree_purge_dead_abnormal_call_edges): Update.
16526         * config/alpha/predicates.md: Update.
16527         * config/alpha/alpha.c (alpha_sa_mask): Update.
16528         (alpha_sa_size): Update.
16529         (alpha_does_function_need_gp): Update.
16530         (alpha_expand_prologue): Update.
16531         (alpha_start_function): Update.
16532         (alpha_output_function_end_prologue): Update.
16533         (alpha_expand_epilogue): Update.
16534         * config/frv/frv.c (frv_stack_info): Update.
16535         (frv_expand_epilogue): Update.
16536         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
16537         (s390_register_info): Update.
16538         (s390_frame_info): Update.
16539         (s390_init_frame_layout): Update.
16540         (s390_can_eliminate): Update.
16541         (save_gprs): Update.
16542         * config/spu/spu.c (spu_split_immediate): Update.
16543         (need_to_save_reg): Update.
16544         (spu_expand_prologue): Update.
16545         (spu_expand_epilogue): Update.
16546         * config/sparc/sparc.md: Update.
16547         * config/sparc/sparc.c (eligible_for_return_delay): Update.
16548         (sparc_tls_got): Update.
16549         (legitimize_pic_address): Update.
16550         (sparc_emit_call_insn): Update.
16551         (sparc_expand_prologue): Update.
16552         (output_return): Update.
16553         (print_operand): Update.
16554         (sparc_function_ok_for_sibcall): Update.
16555         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
16556         * config/m32r/m32r.md: Update.
16557         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
16558         (m32r_compute_frame_size): Update.
16559         (m32r_expand_prologue): Update.
16560         (m32r_expand_epilogue): Update.
16561         (m32r_legitimize_pic_address): Update.
16562         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
16563         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
16564         * config/i386/i386.c (ix86_frame_pointer_required): Update.
16565         (gen_push): Update.
16566         (ix86_save_reg): Update.
16567         (ix86_compute_frame_layout): Update.
16568         (ix86_expand_prologue): Update.
16569         (ix86_expand_epilogue): Update.
16570         * config/sh/sh.c (output_stack_adjust): Update.
16571         (calc_live_regs): Update.
16572         (sh5_schedule_saves): Update.
16573         (sh_expand_prologue): Update.
16574         (sh_expand_epilogue): Update.
16575         (sh_setup_incoming_varargs): Update.
16576         (sh_allocate_initial_value): Update.
16577         (sh_get_pr_initial_val): Update.
16578         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
16579         * config/sh/sh.md (label:): Update.
16580         * config/avr/avr.c (out_movhi_mr_r): Update.
16581         * config/crx/crx.h (enum): Update.
16582         * config/xtensa/xtensa.h (along): Update.
16583         * config/stormy16/stormy16.c Update.
16584         (xstormy16_compute_stack_layout): Update.
16585         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
16586         (fr30_expand_prologue): Update.
16587         * config/cris/cris.c (cris_conditional_register_usage): Update.
16588         (cris_reg_saved_in_regsave_area): Update.
16589         (cris_initial_frame_pointer_offset): Update.
16590         (cris_simple_epilogue): Update.
16591         (cris_expand_prologue): Update.
16592         (cris_expand_epilogue): Update.
16593         (cris_expand_pic_call_address): Update.
16594         (cris_asm_output_symbol_ref): Update.
16595         (cris_asm_output_label_ref): Update.
16596         * config/cris/cris.md Update.
16597         * config/iq2000/iq2000.c (compute_frame_size): Update.
16598         (iq2000_expand_epilogue): Update.
16599         * config/mt/mt.h (save_direction): Update.
16600         * config/mn10300/mn10300.c (mn10300_function_value): Update.
16601         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
16602         (ia64_secondary_reload_class): Update.
16603         * config/m68k/m68k.c (m68k_save_reg): Update.
16604         (m68k_expand_prologue): Update.
16605         (m68k_expand_epilogue): Update.
16606         (legitimize_pic_address): Update.
16607         * config/rs6000/rs6000.c (rs6000_got_register): Update.
16608         (first_reg_to_save): Update.
16609         (first_altivec_reg_to_save): Update.
16610         (compute_vrsave_mask): Update.
16611         (compute_save_world_info): Update.
16612         (rs6000_stack_info): Update.
16613         (spe_func_has_64bit_regs_p): Update.
16614         (rs6000_ra_ever_killed): Update.
16615         (rs6000_emit_eh_reg_restore): Update.
16616         (rs6000_emit_allocate_stack): Update.
16617         (rs6000_emit_prologue): Update.
16618         (rs6000_emit_epilogue): Update.
16619         (rs6000_output_function_epilogue): Update.
16620         (output_profile_hook): Update.
16621         (rs6000_elf_declare_function_name): Update.
16622         * config/rs6000/rs6000.h (rs6000_args): Update.
16623         * config/rs6000/rs6000.md: Update.
16624         * config/mcore/mcore.c (mcore_expand_prolog): Update.
16625         * config/arc/arc.c (arc_output_function_epilogue): Update.
16626         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
16627         * config/darwin.c (machopic_function_base_name): Update.
16628         * config/score/score3.c (score3_compute_frame_size): Update.
16629         (rpush): Update.
16630         (rpop): Update.
16631         (score3_epilogue): Update.
16632         * config/score/score7.c (score7_compute_frame_size): Update.
16633         (score7_prologue): Update.
16634         (score7_epilogue): Update.
16635         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
16636         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
16637         * config/arm/arm.c (use_return_insn): Update.
16638         (require_pic_register): Update.
16639         (arm_load_pic_register): Update.
16640         (arm_compute_save_reg0_reg12_mask): Update.
16641         (arm_compute_save_reg_mask): Update.
16642         (thumb1_compute_save_reg_mask): Update.
16643         (output_return_instruction): Update.
16644         (arm_output_function_prologue): Update.
16645         (arm_output_epilogue): Update.
16646         (arm_get_frame_offsets): Update.
16647         (arm_expand_prologue): Update.
16648         (thumb_pushpop): Update.
16649         (thumb_exit): Update.
16650         (thumb1_expand_prologue): Update.
16651         (thumb1_expand_epilogue): Update.
16652         (arm_unwind_emit): Update.
16653         (arm_output_fn_unwind): Update.
16654         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
16655         * config/arm/arm.md: Update.
16656         * config/pa/pa.md: Update.
16657         * config/pa/pa.c (legitimize_pic_address): Update.
16658         (compute_frame_size): Update.
16659         (hppa_expand_prologue): Update.
16660         (hppa_expand_epilogue): Update.
16661         (borx_reg_operand): Update.
16662         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
16663         (HARD_REGNO_RENAME_OK): Update.
16664         * config/mips/mips.c (mips_global_pointer): Update.
16665         (mips_save_reg_p): Update.
16666         (mips_compute_frame_info): Update.
16667         (mips_frame_pointer_required): Update.
16668         (mips_expand_prologue): Update.
16669         (mips_expand_epilogue): Update.
16670         (mips_can_use_return_insn): Update.
16671         (mips_reorg_process_insns): Update.
16672         * config/v850/v850.c (compute_register_save_size): Update.
16673         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
16674         * config/mmix/mmix.c (along): Update.
16675         (mmix_expand_epilogue): Update.
16676         * config/bfin/bfin.c (legitimize_pic_address): Update.
16677         (must_save_p): Update.
16678         (stack_frame_needed_p): Update.
16679         (add_to_reg): Update.
16680         (bfin_expand_prologue): Update.
16681         * stmt.c (expand_asm_operands): Update.
16682         * reload1.c (reload): Update.
16683         (init_elim_table): Update.
16684
16685 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
16686
16687         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
16688
16689 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
16690
16691         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
16692         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
16693         (mov<mode>): Removed.
16694         (*movv4sf_internal): Likewise.
16695         (*movv2df_internal): Likewise.
16696
16697 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
16698
16699         * config.gcc (crx-*-elf): Remove deprecation.
16700
16701 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
16702
16703         * config/i386/cygming-crtend.c (register_frame_ctor): Register
16704         __gcc_deregister_frame with atexit.
16705         (deregister_frame_dtor): Remove.
16706
16707 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
16708             Nathan Sidwell  <nathan@codesourcery.com>
16709
16710         * config/rs6000/rs6000.opt (mspe): Remove Var property.
16711         (misel): Likewise.
16712         * config/rs6000/rs6000.h (rs6000_spe): Declare.
16713         (rs6000_isel): Likewise.
16714         * config/rs6000/rs6000.c (rs6000_spe): New variable.
16715         (rs6000_isel): New variable.
16716         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
16717
16718 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
16719
16720         PR c++/35758
16721         * c-common.c (handle_vector_size_attribute): Call
16722         lang_hooks.types.reconstruct_complex_type instead of
16723         reconstruct_complex_type.
16724         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
16725         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
16726         * langhooks.h (struct lang_hooks_for_types): Add
16727         reconstruct_complex_type hook.
16728         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
16729         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
16730
16731 2008-04-24  Richard Guenther  <rguenther@suse.de>
16732
16733         * c-common.h (check_builtin_function_arguments): Declare.
16734         * c-common.c (validate_nargs): New function.
16735         (check_builtin_function_arguments): Likewise.
16736         * c-typeck.c (build_function_call): Call
16737         check_builtin_function_arguments.
16738         * builtins.c (fold_builtin_classify): Remove error reporting code.
16739         (fold_builtin_unordered_cmp): Likewise.
16740         (fold_builtin_1): Likewise.
16741         (fold_builtin_n): Likewise.
16742
16743 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
16744
16745         PR tree-optimization/36008
16746         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
16747         the original op1, rather than delta by step.
16748
16749 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
16750             Sebastian Pop  <sebastian.pop@amd.com>
16751
16752         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
16753         eliminate_local_variables_stmt, eliminate_local_variables,
16754         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
16755         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
16756         of code delimited by two edges in the CFG.
16757         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
16758         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
16759         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
16760         the case of parallelisation of reductions.
16761         (expr_invariant_in_region_p): New.
16762
16763         * tree-flow.h (gather_blocks_in_sese_region): Declared.
16764         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
16765
16766 2008-04-24  Ira Rosen  <irar@il.ibm.com>
16767             Richard Guenther  <rguenther@suse.de>
16768
16769         PR tree-optimization/36034
16770         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
16771         incapable of dealing with loads with gaps.
16772
16773 2008-04-24  Rafael Espíndola  <espindola@google.com>
16774
16775         * tree-flow.h (vrp_evaluate_conditional): Change signature.
16776         * tree-ssa-propagate.c (fold_predicate_in): Update call to
16777         vrp_evaluate_conditional.
16778         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
16779         (vrp_evaluate_conditional): Split the cond argument.
16780         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
16781         (simplify_stmt_for_jump_threading): Update call to
16782         vrp_evaluate_conditional.
16783
16784 2008-04-24  Ira Rosen  <irar@il.ibm.com>
16785
16786         PR tree-optimization/35982
16787         * tree-vect-analyze.c (vect_check_interleaving): Check that the
16788         interleaved data-refs are of the same type.
16789
16790 2008-04-24  Danny Smith  <dannysmith@users.net>
16791
16792         * c-format.c (check_format_info_main): Use strncmp rather than a
16793         magic prefix to handle multichar length specs.
16794         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
16795         Don't prefix "I64" and "I32" with '\0'.
16796
16797 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
16798
16799         PR target/36015
16800         * config/i386/i386.c (init_cumulative_args): Don't pass anything
16801         in registers for -m32 only if stdarg_p (fntype).
16802
16803 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
16804
16805         PR rtl-optimization/36006
16806         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
16807         temp to op0 in order to avoid invalid rtx sharing.
16808
16809 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
16810
16811         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
16812         check TREE_INVARIANT.
16813         * tree-gimple.c (is_gimple_address): New.
16814         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
16815         * tree-gimple.h (is_gimple_address): New.
16816         * tree.h (decl_address_invariant_p): New.
16817         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
16818         (build_string): Likewise.
16819         (decl_address_invariant_p): New, from is_gimple_invariant_address.
16820         (tree_invariant_p_1): Likewise.
16821         (save_expr): Use it.
16822         (tree_invariant_p): New.
16823         (skip_simple_arithmetic): Use it.
16824         (stabilize_reference_1): Use it.
16825         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
16826         simplify.
16827         (build1_stat): Drop code to compute TREE_INVARIANT.
16828         (build2_stat): Drop code to compute TREE_INVARIANT.
16829         (build3_stat): Drop code to compute TREE_INVARIANT.
16830         (build4_stat): Drop code to compute TREE_INVARIANT.
16831         (build5_stat): Drop code to compute TREE_INVARIANT.
16832         (build7_stat): Drop code to compute TREE_INVARIANT.
16833         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
16834         * tree.h (struct tree_base): Remove invariant_flag.
16835         (TREE_INVARIANT): Remove.
16836         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
16837         (fold_builtin_expect): Check TREE_CONSTANT.
16838         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
16839         * c-tree.h (c_expr_to_decl): Drop third parameter.
16840         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
16841         (build_c_cast): Don't set TREE_INVARIANT.
16842         (pop_init_level): Don't set TREE_INVARIANT.
16843         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
16844         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
16845         TREE_CONSTANT.
16846         (gimplify_init_constructor): Don't set TREE_INVARIANT.
16847         (gimplify_addr_expr): Adjust comment.
16848         * tree-mudflap.c (mf_build_string):
16849         * print-tree.c (print_node): Don't print TREE_INVARIANT.
16850         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
16851         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
16852         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
16853         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
16854         * langhooks.h (struct lang_hooks): Drop third parameter from
16855         expr_to_decl.
16856
16857 2008-04-23  Richard Guenther  <rguenther@suse.de>
16858
16859         PR tree-optimization/27799
16860         PR tree-optimization/32921
16861         PR tree-optimization/32624
16862         * tree-ssa-structalias.c (merge_smts_into): Only merge the
16863         SMTs aliases and the tag itself into the solution.
16864         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
16865         merge the points-to solution back into the SMT aliases.
16866         (may_alias_p): Use alias_set_subset_of instead of
16867         aliases_conflict_p.  A pointer which points to
16868         memory with alias set zero may access any variable.
16869
16870 2008-04-23  Richard Guenther  <rguenther@suse.de>
16871
16872         * alias.c (alias_set_subset_of): Correctly handle asking
16873         if zero is a subset of an alias set with zero child.
16874         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
16875         (compute_flow_insensitive_aliasing): Correctly walk all
16876         pointers.  Do not unnecessarily union sets.
16877
16878 2008-04-23  Richard Guenther  <rguenther@suse.de>
16879
16880         PR middle-end/36021
16881         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
16882
16883 2008-04-22  Tomas Bily  <tbily@suse.cz>
16884
16885         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
16886         unreachable case.
16887         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
16888         NON_LVALUE_EXPR.
16889         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
16890         * tree-ssa-structalias.c (get_constraint_for): Likewise.
16891         * tree-inline.c (estimate_num_insns_1): Likewise.
16892         * varasm.c (const_hash_1, compare_constant, copy_constant)
16893         (compute_reloc_for_constant, output_addressed_constants): Likewise.
16894         * emit-rtl.c (component_ref_for_mem_expr)
16895         (set_mem_attributes_minus_bitpos): Likewise.
16896         * expr.c (highest_pow2_factor, expand_expr_real_1, )
16897         (is_aligning_offset): Likewise.
16898         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
16899         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
16900         * dojump.c (do_jump): Likewise.
16901         * builtins.c (get_pointer_alignment, get_memory_rtx)
16902         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
16903         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
16904
16905 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
16906
16907         PR rtl-optimization/36017
16908         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
16909         expanding the library call.
16910
16911 2008-04-22  Ian Lance Taylor  <iant@google.com>
16912
16913         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
16914         than size_in_bytes.
16915
16916 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
16917
16918         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
16919         of LR/CTR moves for Power6.
16920
16921 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
16922
16923         PR middle-end/36003
16924         * passes.c (init_optimization_passes): Remove
16925         pass_fast_rtl_byte_dce.
16926
16927 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
16928
16929         PR target/29096
16930         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
16931         builtin functions to generate faster code.
16932         (_mm_cvtpu16_ps): Ditto.
16933         (_mm_cvtpi32x2_ps): Ditto.
16934
16935 2008-04-22  Nick Clifton  <nickc@redhat.com>
16936
16937         * common.opt (ftree-loop-distribution): Add Optimization
16938         attribute.
16939
16940         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
16941         (frv_expand_builtin_va_start): Likewise.
16942
16943         * config/arm/arm.c (thumb_find_work_register): Fix location of
16944         argument register count.
16945
16946 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16947
16948         Support scheduling for ColdFire V1 and V3 microarchitecture.
16949         Improve scheduling of multiplication instructions.
16950
16951         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
16952         (mac): New instruction attribute.
16953         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
16954         (m68k_sched_mac): New variable.
16955         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
16956         Handle cfv1 and cfv3.
16957         (max_insn_size): New static variable.
16958         (struct _sched_ib): New type.
16959         (sched_ib): New static variable.
16960         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
16961         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
16962         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
16963         Update.
16964         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
16965         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
16966         new variables.  Update.
16967         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
16968         Add modeling of cfv3 instruction buffer.  Update.
16969         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
16970         * config/m68k/m68k.h (TUNE_CFV3): New macro.
16971         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
16972         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
16973         a particular reservation applies to.
16974         (type2): Reorganize attribute values.  Rename alu to alu_reg,
16975         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
16976         to mul_l and mul_w.
16977         (cf_ib_*): Simplify description of instruction buffer.
16978         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
16979         (cf_mem): Split into cf_mem1 and cf_mem2.
16980         (cf_v2_move_??): Rename to cfv12_alu_??.
16981         (cf_v2_move_l_??): Rename to cfv12_omove_??.
16982         (cf_v2_mul_??): Remove reservations.
16983         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
16984         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
16985         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
16986         appropriate place.
16987         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
16988         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
16989         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
16990         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
16991         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
16992         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
16993         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
16994         expansions of the above reservations for instructions of sizes
16995         1, 2 and 3 words.
16996
16997 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
16998
16999         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
17000
17001 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
17002
17003         * coverage.c: Include tree-pass.h.
17004         (coverage_counter_alloc): Print da_file_name to the dump file.
17005
17006 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
17007
17008         * sbitmap.c (sbitmap_range_empty_p): New function.
17009         * sbitmap.h (sbitmap_range_empty_p): New function.
17010         * bitmap.h: Now includes obstack.h.
17011
17012 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
17013             Kenneth Zadeck  <zadeck@naturalbridge.com>
17014
17015         * dbgcnt.def (ra_byte_scan): Added.
17016         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
17017         when the last hit happens for a counter.
17018         * timevar.def (TV_DF_BYTE_LR): New variable.
17019         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
17020         * passes.c (pass_fast_rtl_byte_dce): New pass.
17021         * fwprop.c (update_df): Added mode to call df_ref_create.
17022         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
17023         DF_REF_EXTRACT_OFFSET.
17024         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
17025         DF_BYTE_LR_OUT, df_byte_lr): New macro.
17026         (df_mm): New enum.
17027         (df_ref_extract): Added mode field.
17028         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
17029         DF_REF_EXTRACT_OFFSET.
17030         (DF_REF_EXTRACT_MODE): New macro.
17031         (df_byte_lr_bb_info): New structure.
17032         (df_print_byte_regset, df_compute_accessed_bytes,
17033         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
17034         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
17035         df_byte_lr_simulate_uses,
17036         df_byte_lr_simulate_artificial_refs_at_top,
17037         df_byte_lr_simulate_artificial_refs_at_end,
17038         df_compute_accessed_bytes): New function.
17039         (df_ref_create): Add parameter.
17040         (df_byte_lr_get_bb_info): New inline function.
17041         * df-scan.c (df_ref_record, df_uses_record,
17042         df_ref_create_structure): Added mode parameter.
17043         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
17044         df_defs_record, df_uses_record, df_get_conditional_uses,
17045         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
17046         df_entry_block_defs_collect, df_exit_block_uses_collect):
17047         Added mode parameter to calls to df_ref_record, df_uses_record,
17048         df_ref_create_structure.
17049         (df_ref_equal_p, df_ref_compare): Added test for modes.
17050         (df_ref_create_structure): Added code to set mode.  Renamed
17051         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
17052         DF_REF_EXTRACT_OFFSET.
17053         * df-core.c (df_print_byte_regset): New function.
17054         * df-byte-scan.c: New file.
17055         * df-problems.c (df_rd_transfer_function): Removed unnecessary
17056         calls to BITMAP_FREE.
17057         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
17058         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
17059         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
17060         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
17061         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
17062         df_byte_lr_local_compute, df_byte_lr_init,
17063         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
17064         df_byte_lr_transfer_function, df_byte_lr_free,
17065         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
17066         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
17067         df_byte_lr_simulate_uses,
17068         df_byte_lr_simulate_artificial_refs_at_top,
17069         df_byte_lr_simulate_artificial_refs_at_end): New function.
17070         * dce.c (byte_dce_process_block): New function.
17071         (dce_process_block): au is now passed in rather than computed
17072         locally.  Changed loops that look at artificial defs to not look
17073         for conditional or partial ones, because there never are any.
17074         (fast_dce): Now is able to drive byte_dce_process_block or
17075         dce_process_block depending on the kind of dce being done.
17076         (rest_of_handle_fast_dce): Add parameter to fast_dce.
17077         (rest_of_handle_fast_byte_dce): New function.
17078         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
17079         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
17080
17081 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
17082
17083         PR fortran/35019
17084         * gcc.h: Added fortran options that take arguments to
17085         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
17086         macros.
17087
17088 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
17089
17090         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
17091         scalarization if on the LHS and not a full access.
17092
17093 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17094
17095         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
17096
17097 2008-04-18  Rafael Espíndola  <espindola@google.com>
17098
17099         * tree-vrp.c (find_case_label_index): Fix the binary search.
17100         (find_case_label_range): New.
17101         (vrp_visit_switch_stmt): Use find_case_label_range.
17102         (simplify_switch_using_ranges): Use find_case_label_range.
17103
17104 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
17105
17106         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
17107         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
17108
17109 2008-04-18  Tom Tromey  <tromey@redhat.com>
17110
17111         PR libcpp/15500:
17112         * doc/cpp.texi (Implementation-defined behavior): Mention
17113         -finput-charset.
17114
17115 2008-04-18  Ian Lance Taylor  <iant@google.com>
17116
17117         * fold-const.c (pointer_may_wrap_p): New static function.
17118         (fold_comparison): Add another test for pointer overflow.  Use
17119         pointer_may_wrap_p to disable some false positives.
17120
17121 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
17122
17123         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
17124         (fname_as_string): Match updated cpp_interpret_string prototype.
17125         (fix_string_type): Support char16_t* and char32_t*.
17126         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
17127         derivative) nodes.  Register as builtin if C++0x.
17128         (c_parse_error): Support CPP_CHAR{16,32}.
17129         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
17130         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
17131         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
17132         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
17133         CTI_CHAR32_ARRAY_TYPE>: New elements.
17134         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
17135         char32_type_node, signed_char32_type_node, char16_array_type_node,
17136         char32_array_type_node): New defines.
17137         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
17138         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
17139         (lex_string): Support CPP_STRING{16,32}, match updated
17140         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
17141         (lex_charconst): Support CPP_CHAR{16,32}.
17142         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
17143         and CPP_STRING{16,32}.
17144
17145 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
17146
17147         PR bootstrap/35457
17148         * aclocal.m4: Regenerate.
17149         * configure: Regenerate.
17150
17151 2008-04-18  Jan Hubicka  <jh@suse.cz>
17152
17153         * except.c (dw2_size_of_call_site_table,
17154         sjlj_size_of_call_site_table): Use vector API for call_site_record.
17155
17156         * cgraphbuild.c (build_cgraph_edges): Update.
17157         * tree-pass.h: Update comment.
17158         * final.c (leaf_function_p): Update.
17159         (leaf_renumber_regs): Update.
17160         (rest_of_clean_state): Update.
17161         * omp-low.c (expand_omp_parallel): Update.
17162         * ipa-reference.c (analyze_function): Update.
17163         * reorg.c (find_end_label): Update.
17164         (optimize_skip): Update.
17165         (fill_simple_delay_slots): Update.
17166         (fill_simple_delay_slots): Update.
17167         (make_return_insns): Update.
17168         (dbr_schedule): Update.
17169         * gimple-low.c (record_vars_into): Update.
17170         * cfgbuild.c (make_edges): Update.
17171         * function.c (assign_stack_local): Update.
17172         (assign_parm_adjust_stack_rtl): Update.
17173         (locate_and_pad_parm): Update.
17174         (allocate_struct_function): Do not initialize stack_alignment_needed
17175         and preferred_stack_boundary here.
17176         (stack_protect_prologue): Update.
17177         (stack_protect_epilogue): Update.
17178         (expand_function_start): Initialize stack_alignment_needed,
17179         preferred_stack_boundary and max_jumptable_ents.
17180         (expand_function_end): Update.
17181         (free_after_compilation): Do not NULLify epilogue_delay_list.
17182         * function.h (struct rtl_data): Add stack_protect_guard,
17183         stack_alignment_needed,
17184         preferred_stack_boundary, epilogue_delay_list.
17185         (struct function): Remove value_histograms, stack_alignment_needed,
17186         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
17187         last_label_uid,
17188         unexpanded_var_list, stack_protect_guard.
17189         (current_function_epilogue_delay_list): Remove.
17190         * ipa-type-escape.c (analyze_function): Update.
17191         * gimplify.c (pop_gimplify_context): Update comment.
17192         * calls.c (expand_call): Update.
17193         (emit_library_call_value_1): Update.
17194         * except.c (set_nothrow_function_flags): Update.
17195         * cfgexpand.c (get_decl_align_unit): Update.
17196         (create_stack_guard): Update.
17197         (estimated_stack_frame_size): Update.
17198         (expand_used_vars): Update.
17199         (tree_expand_cfg): Free histogram earliers, init expansion variables.
17200         * explow.c (allocate_dynamic_stack_space): Update.
17201         * tree-ssa-live.c (remove_unused_locals): Update.
17202         * varasm.c (mark_constant_pool): Update.
17203         * tree-inline.c (remap_decls): Update.
17204         (initialize_cfun): Update.
17205         (declare_return_variable): Update.
17206         (inline_forbidden_p): Update.
17207         (expand_call_inline): Update.
17208         (declare_inline_vars): Update.
17209         (tree_function_versioning): Update.
17210         * tree-flow.h (value_histograms): New.
17211         (VALUE_HISTOGRAMS): New macro.
17212         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
17213         last_label_uid.
17214         * tree-cfg.c (set_bb_for_stmt): Update.
17215         (replace_by_duplicate_decl): Update.
17216         (move_block_to_fn): Update.
17217         (new_label_mapper): Update.
17218         (dump_function_to_file): Update.
17219         * ipa-struct-reorg.c (build_data_structure): Update.
17220         * cfgrtl.c (print_rtl_with_bb): Update.
17221         * reload1.c (reload): Update.
17222         (reload): Update.
17223         * config/i386/i386.c (setup_incoming_varargs_64,
17224         ix86_compute_frame_layout): Update.
17225         * config/arc/arc.c (arc_output_function_epilogue): Update.
17226
17227 2008-04-18  Marius Strobl <marius@FreeBSD.org>
17228
17229         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
17230         for FreeBSD as well.
17231         * gthr-posix95.h: Likewise.
17232
17233 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
17234
17235         PR rtl-optimization/35838
17236         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
17237         out the byte offset of the first subreg.
17238
17239 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
17240
17241         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
17242         to split_ti instead of three separate calls with single member arrays.
17243         (subti3 splitter): Ditto.
17244         (adddi3 splitter): Ditto with split_di.
17245         (subdi3 splitter): Ditto.
17246         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
17247         two separate calls with single member arrays.  Swap match_dup
17248         operands 1 and 2 to better fit into the array.
17249         (negdi2 splitter): Ditto with split_di.
17250         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
17251         two separate calls with single member arrays.  Swap match_dup operands
17252         6 and 7 to better fit into the array.
17253
17254 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
17255
17256         * config/i386/i386.c (sse_builtin_type): New.
17257         (bdesc_sse_args): Likewise.
17258         (bdesc_sse_3arg): Removed.
17259         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
17260         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
17261         IX86_BUILTIN_ROUNDPS.
17262         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
17263         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
17264         IX86_BUILTIN_ROUNDPS.
17265         (ix86_expand_sse_4_operands_builtin): Removed.
17266         (ix86_expand_sse_operands_builtin): New.
17267         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
17268         and CODE_FOR_sse4_1_roundps.
17269         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
17270         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
17271
17272 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
17273
17274         PR target/35907
17275         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
17276         regs before frame pop when needed.  If use_backchain_to_restore_sp
17277         then load backchain into a temp reg to restore vr and vrsave.  Add
17278         code to restore vr after frame pop if possible.
17279
17280 2008-04-17  Richard Guenther  <rguenther@suse.de>
17281
17282         * tree-vn.c (expressions_equal_p): Do not check type
17283         equality or compatibility before calling operand_equal_p.
17284         * fold-const.c (operand_equal_p): Check equivalence of
17285         integer constants before bailing out due to signedness or
17286         precision differences.
17287         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
17288         spurious differences in type qualification.  Ignore types
17289         for COMPONENT_REFs at all.
17290
17291 2008-04-17  Christian Bruel  <christian.bruel@st.com>
17292
17293         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
17294         msw_skip comparison.
17295
17296 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
17297
17298         PR c/35739
17299         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
17300         reg type.
17301
17302         PR tree-optimization/35899
17303         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
17304         rather than TREE_OPERAND.
17305
17306 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
17307
17308         PR target/35944
17309         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
17310         temporary registers.  Change operand predicate to general_operand.
17311         (remainderxf3): Ditto.
17312
17313 2008-04-16  Richard Guenther  <rguenther@suse.de>
17314
17315         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
17316         * tree-affine.c (aff_combination_expand): Look through some
17317         conversions.
17318
17319 2008-04-15  Doug Kwan  <dougkwan@google.com>
17320
17321         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
17322         for hex printing.
17323         * tree-pretty-print.c (dump_generic_node): Ditto.
17324         * final.c (output_addr_const): Ditto.
17325         * dwarf2out.c (output_cfi): Ditto.
17326         * c-pretty-print.c (pp_c_integer_constant): Ditto.
17327         * print-rtl.c (print_rtx): Ditto.
17328         * print-tree.c (print_node_brief, print_node): Ditto.
17329         * c-common.c (match_case_to_enum_1): Ditto.
17330         * sched-vis.c (print_value): Ditto.
17331         * config/i386/i386.c (print_operand): Cast to long unsigned int
17332         for hex printing.
17333
17334 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
17335         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
17336         MS Windows VirtualProtect function.
17337
17338 2008-04-15  Jan Hubicka  <jh@suse.cz>
17339
17340         * gengtype.c (write_root): Param_is argument is OK.
17341         * expr.c (expand_expr_real_1): Update call of get_exception_*.
17342         * function.h: Include varray.h
17343         (rtl_eh): New stucture based on except.c one.
17344         (call_site_record): New forward declaration and vector type.
17345         * calls.c (emit_call_1): Do not call
17346         note_current_region_may_contain_throw.
17347         * except.c (eh_status): Remove cur_region, try_region since they are
17348         unused.
17349         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
17350         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
17351         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
17352         Remove call_site_data_used, call_site_data_size.
17353         Turn call_site_record into vector in function.h.
17354         (note_current_region_may_contain_throw): Remove.
17355         (get_exception_pointer, get_exception_filter): Do not take struct
17356         function argument; update.
17357         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
17358         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
17359         build_post_landing_pads, dw2_build_landing_pads,
17360         sjlj_assign_call_site_values, sjlj_mark_call_sites,
17361         sjlj_emit_function_enter, sjlj_emit_function_enter,
17362         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
17363         sjlj_build_landing_pads, finish_eh_generation,
17364         remove_exception_handler_label, remove_eh_handler,
17365         maybe_remove_eh_handler, add_reachable_handler,
17366         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
17367         add_action_record, collect_one_action_chain, add_call_site,
17368         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
17369         sjlj_output_call_site_table, output_function_exception_table,
17370         * except.h (note_current_region_may_contain_throw): Remove
17371         (get_exception_pointer, get_exception_filter): Do not take struct
17372         function argument.
17373         * Makefile.in (GTFILES): Put varargs before struct function.
17374
17375 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
17376
17377         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
17378         punt for STRING_CST.
17379         (get_constraint_for): Deal with STRING_CST here instead.
17380
17381 2008-04-15  Richard Guenther  <rguenther@suse.de>
17382
17383         * tree-ssa-propagate.c (substitute_and_fold): Substitute
17384         statements in a basic-block with a backward walk.  Do not
17385         substitute into dead statements but instead remove those.
17386
17387 2008-04-15  Richard Guenther  <rguenther@suse.de>
17388
17389         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
17390         to zero, thus disable creation of SFTs.
17391
17392 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
17393
17394         * tree-predcom.c (suitable_reference_p): Return false if the
17395         reference can throw.
17396
17397 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
17398
17399         PR c/35751
17400         * c-decl.c (finish_decl): If extern or static var has variable
17401         size, set TREE_TYPE (decl) to error_mark_node.
17402
17403 2008-04-15  Rafael Espíndola  <espindola@google.com>
17404
17405         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
17406         variable arg1.
17407
17408 2008-04-15  Richard Guenther  <rguenther@suse.de>
17409
17410         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
17411         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
17412         (visit_reference_op_load): Do walk vuse-vdef chains on
17413         vn_reference_lookup.
17414         (visit_reference_op_store): But do not here.
17415         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
17416         vn_reference_lookup.
17417         (vn_lookup_with_vuses): But do so here.
17418
17419 2008-04-14  Ian Lance Taylor  <iant@google.com>
17420
17421         * fold-const.c (fold_overflow_warning): Remove assertion.
17422
17423 2008-04-15  Ben Elliston  <bje@au.ibm.com>
17424
17425         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
17426         temp1 local variables.
17427
17428 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
17429
17430         PR target/35661
17431         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
17432         ".text.unlikely" section as executable.
17433
17434 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
17435
17436         * config/ia64/ia64.c (rtx_needs_barrier): Handle
17437         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
17438         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
17439         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
17440         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
17441         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
17442         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
17443
17444 2008-04-14  Ian Lance Taylor  <iant@google.com>
17445
17446         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
17447         * fold-const.c (fold_comparison): If appropriate, test
17448         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
17449         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
17450         reassociating a pointer type.
17451         * doc/invoke.texi (Optimize Options): Document that
17452         -fstrict-overflow applies to pointer wraparound.
17453
17454 2008-04-13  Jan Hubicka  <jh@suse.cz>
17455
17456         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
17457
17458 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
17459
17460         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
17461         we are going to "save the world".
17462
17463 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
17464
17465         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
17466         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
17467         operand 0 constraint, not "=".
17468
17469 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
17470
17471         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
17472
17473 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
17474
17475         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
17476         of size of positions_needed * CHAR_BIT.
17477
17478 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
17479
17480         PR middle-end/35897
17481         * dse.c (store_info): Change positions_needed to unsigned
17482         HOST_WIDE_INT.
17483         (lowpart_bitmask): New.
17484         (record_store): Cast to unsigned HOST_WIDE_INT for
17485         positions_needed.  Assert width <= size of positions_needed *
17486         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
17487         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
17488         lowpart_bitmask to set mask.
17489
17490 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
17491
17492         * config/bfin/constraints.md: New file.
17493         * config/bfin/bfin.md: Include it.
17494         (adddi3): Use satisfies_constraint functions instead of the old macros.
17495         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
17496         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
17497         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
17498         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
17499         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
17500         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
17501         EXTRA_CONSTRAINT): Delete.
17502         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
17503         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
17504         of the old macros.
17505         * config/bfin/bfin.c: Include "tm-constrs.h".
17506         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
17507         Use satisfies_constraint functions instead of the old macros.
17508         * doc/md.texi (Blackfin Constraints): Update file name reference.
17509
17510 2008-04-11  Richard Guenther  <rguenther@suse.de>
17511
17512         PR tree-optimization/35869
17513         * tree-vrp.c (execute_vrp): Move switch statement update after
17514         jump threading.  Schedule another cfg cleanup run.
17515
17516 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
17517
17518         PR c/35744
17519         * attribs.c (decl_attributes): Return early on errorneous node.
17520
17521 2008-04-10  Oleg Ryjkov  <olegr@google.com>
17522
17523         * tree.h (struct tree_base): Added a new flag default_def_flag.
17524         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
17525
17526 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
17527
17528         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
17529
17530 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17531
17532         PR target/35768
17533         * pa.md: Define mode iterator P.  Define mode attribute dwc.
17534         (dcacheflush): Update pattern to use iterator P and attribute dwc.
17535         (icacheflush): Likewise.
17536         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
17537         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
17538
17539 2008-04-11  Ben Elliston  <bje@au.ibm.com>
17540
17541         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
17542
17543 2008-04-10  Rafael Espíndola  <espindola@google.com>
17544
17545         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
17546         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
17547         (extract_range_from_expr): The same.
17548
17549 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
17550
17551         * config/mips/mips.md (GPR2): New mode iterator.
17552         (seq): Add comment.
17553         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
17554         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
17555         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
17556         Rewrite these to take two modes, the mode of comparison and the
17557         mode of the destination.
17558         * config/mips/mips.c (mips_expand_scc): Instead of having
17559         paradoxical subreg as destination, expand "narrowing" scc if mode
17560         of comparison is SI and target is requested in DI mode.
17561         (mips_emit_int_order_test): Update comment.  Make mode of
17562         comparison match CMP0 rather than TARGET.  When creating inverse
17563         target use mode of TARGET.
17564
17565 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
17566
17567         * gcov-dump.c (tag_summary): Only print summaries for the first
17568         GCOV_COUNTERS_SUMMABLE counters.
17569
17570 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
17571
17572         * config/i386/i386.md (absneg): New code iterator.
17573         (absnegprefix): New code attribute.
17574         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
17575         patterns using absneg code iterator.
17576         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
17577         using absneg code iterator.
17578         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
17579         *neg<mode>2 patterns using absneg code iterator.
17580         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
17581         *negextendsfdf2 patterns using absneg code iterator.
17582         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
17583         *negextendsfxf2 patterns using absneg code iterator.
17584         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
17585         *negextendsfdf2 patterns using absneg code iterator.
17586         * config/i386/sse.md (<code><mode>2): Macroize expander from
17587         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
17588
17589 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
17590
17591         * config/s390/s390.h: Remove the remains of the recent search
17592         & replace action of current_function_outgoing_args_size.
17593
17594 2008-04-10  Ira Rosen  <irar@il.ibm.com>
17595
17596         PR tree-optimization/35821
17597         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
17598         NEW_STMT_LIST is not NULL.
17599
17600 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
17601
17602         PR libstdc++/35597
17603         * toplev.c (process_options): Remove -ffunction-sections debugging
17604         warning.
17605
17606 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
17607
17608         PR middle-end/PR28690
17609         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
17610         than gen_rtx_fmt_ee to perform more canonicalizations.
17611
17612 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17613
17614         PR driver/35665
17615         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
17616
17617 2008-04-09  Richard Guenther  <rguenther@suse.de>
17618
17619         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
17620         (dump_function_to_file): Dump function arguments with types.
17621
17622 2008-04-08  Richard Guenther  <rguenther@suse.de>
17623
17624         * fold-const.c (fold_widened_comparison): Do not allow
17625         sign-changes that change the result.
17626
17627 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
17628
17629         PR target/35839
17630         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
17631         kinds of indirect references.
17632
17633 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
17634
17635         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
17636         GNU Fortran language string.
17637
17638 2008-04-08  Rafael Espíndola  <espindola@google.com>
17639
17640         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
17641         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
17642         * tree.h (tree_call_nonnegative_warnv_p): New.
17643
17644 2008-04-08  Jan Hubicka  <jh@suse.cz>
17645
17646         * function.c (free_after_compilation): Clear out regno_reg_rtx
17647         pointer.
17648
17649 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
17650
17651         Revert
17652         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
17653
17654         PR middle-end/PR28690
17655         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
17656         same precedence as REG_POINTER and MEM_POINTER operands.
17657
17658 2008-04-08  Richard Guenther  <rguenther@suse.de>
17659
17660         PR middle-end/35834
17661         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
17662         for adding index to base.
17663
17664 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
17665
17666         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
17667         (MINGW_ENABLE_EXECUTE_STACK): New.
17668         (IN_LIBGCC2): For libgcc include windows.h file for
17669         function declarations.
17670
17671 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
17672
17673         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
17674         and tem2 if tem1 is not a REG or MULT.
17675
17676 2008-04-08  Jan Hubicka  <jh@suse.cz>
17677
17678         * function.h (incomming_args): Break out of struct function.
17679         (function_subsections): Break out of struct function.
17680         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
17681         return_rtx and hard_reg_initial_vals from struct function.
17682         Kill inl_max_label_num.
17683         (current_function_pops_args, current_function_args_info,
17684         current_function_args_size, current_function_args_size,
17685         current_function_pretend_args_size,
17686         current_function_outgoing_args_size,
17687         current_function_internal_arg_pointer, current_function_return_rtx):
17688         Kill compatibility accestor macros.
17689         * builtins.c (expand_builtin_apply_args_1): Update.
17690         (expand_builtin_next_arg): Update.
17691         * df-scan.c (df_get_call_refs): Update.
17692         * dbxout.c (dbxout_function_end): Update.
17693         * dwarf2out.c (dwarf2out_switch_text_section): Update.
17694         (output_line_info): Update.
17695         (secname_for_decl): Update.
17696         (dwarf2out_var_location): Update.
17697         * function.c (free_after_compilation): Update.
17698         (assign_parm_find_stack_rtl): Update.
17699         (assign_parms): Update.
17700         (expand_dummy_function_end): Update.
17701         (expand_function_end): Update.
17702         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
17703         (expand_call): Update.
17704         (emit_library_call_value_1): Update.
17705         (store_one_arg): Update.
17706         * varasm.c (initialize_cold_section_name): Update.
17707         (unlikely_text_section): Update.
17708         (unlikely_text_section_p): Update.
17709         (assemble_start_function): Update.
17710         (assemble_end_function): Update.
17711         (default_section_type_flags): Update.
17712         (switch_to_section): Update.
17713         * integrate.c (set_decl_abstract_flags): Update.
17714         (get_hard_reg_initial_val): Update.
17715         (has_hard_reg_initial_val): Update.
17716         (allocate_initial_values): Update.
17717         * resource.c (init_resource_info): Update.
17718         * config/alpha/alpha.c (NUM_ARGS): Update.
17719         (direct_return): Update.
17720         (alpha_va_start): Update.
17721         (alpha_sa_size): Update.
17722         (alpha_initial_elimination_offset): Update.
17723         (alpha_expand_prologue): Update.
17724         (alpha_start_function): Update.
17725         (alpha_expand_epilogue): Update.
17726         (unicosmk_initial_elimination_offset):
17727         * config/alpha/alpha.md (call expander): Update.
17728         * config/s390/s390.c (s390_register_info): Update.
17729         (s390_register_info): Update.
17730         (s390_frame_info): Update.
17731         (s390_initial_elimination_offset): Update.
17732         (s390_build_builtin_va_list): Update.
17733         (s390_va_start): Update.
17734         * config/spu/spu.c (direct_return): Update.
17735         (spu_expand_prologue): Update.
17736         (spu_initial_elimination_offset): Update.
17737         (spu_build_builtin_va_list): Update.
17738         (spu_va_start): Update.
17739         * config/sparc/sparc.c (sparc_init_modes): Update.
17740         (sparc_compute_frame_size): Update.
17741         (function_value): Update.
17742         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
17743         * config/i386/i386.md (return expander): Update.
17744         * config/i386/i386.c (ix86_va_start): Update.
17745         (ix86_can_use_return_insn_p): Update.
17746         (ix86_compute_frame_layout): Update.
17747         (ix86_expand_epilogue): Update.
17748         * config/sh/sh.c (output_stack_adjust): Update.
17749         (calc_live_regs): Update.
17750         (sh_expand_prologue): Update.
17751         (sh_builtin_saveregs): Update.
17752         (sh_va_start): Update.
17753         (initial_elimination_offset): Update.
17754         (sh_allocate_initial_value): Update.
17755         (sh_function_ok_for_sibcall): Update.
17756         (sh_get_pr_initial_val): Update.
17757         * config/sh/sh.md (return expander): Update.
17758         * config/avr/avr.c (frame_pointer_required_p): UPdate.
17759         * config/crx/crx.c (crx_compute_frame): UPdate.
17760         (crx_initial_elimination_offset): UPdate.
17761         * config/xtensa/xtensa.c (compute_frame_size): Update
17762         (xtensa_builtin_saveregs): Update.
17763         (xtensa_va_start): Update.
17764         (order_regs_for_local_alloc): Update.
17765         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
17766         (xstormy16_expand_builtin_va_start): Update.
17767         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
17768         * config/m68hc11/m68hc11.md (return expanders): Update.
17769         * config/m68hc11/m68hc11.c (expand_prologue): Update.
17770         (expand_epilogue): Update.
17771         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
17772         (cris_simple_epilogue): Update.
17773         (cris_expand_prologue): Update.
17774         (cris_expand_epilogue): Update.
17775         * config/iq2000/iq2000.c (iq2000_va_start): Update.
17776         (compute_frame_size): Update.
17777         * config/mt/mt.c (mt_compute_frame_size): Update.
17778         * config/mn10300/mn10300.c (expand_prologue): Update.
17779         (expand_epilogue): Update.
17780         (initial_offset): Update.
17781         (mn10300_builtin_saveregs):
17782         * config/mn10300/mn10300.md (return expander): Update.
17783         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
17784         (ia64_initial_elimination_offset): Update.
17785         (ia64_initial_elimination_offset): Update.
17786         (ia64_expand_prologue): Update.
17787         * config/m68k/m68k.md (return expander): Update.
17788         * config/rs6000/rs6000.c (rs6000_va_start): Update.
17789         (rs6000_stack_info): Update.
17790         * config/mcore/mcore.c (layout_mcore_frame): Update.
17791         (mcore_expand_prolog): Update.
17792         * config/arc/arc.c (arc_compute_frame_size): Update.
17793         * config/score/score3.c (score3_compute_frame_size): Update.
17794         * config/score/score7.c (score7_compute_frame_size): Update.
17795         * config/arm/arm.c (use_return_insn): Update.
17796         (thumb_find_work_register): Update.
17797         (arm_compute_save_reg_mask): Update.
17798         (arm_output_function_prologue): Update.
17799         (arm_output_epilogue): Update.
17800         (arm_size_return_regs): Update.
17801         (arm_get_frame_offsets): Update.
17802         (arm_expand_prologue): Update.
17803         (thumb_exit): Update.
17804         (thumb_unexpanded_epilogue): Update.
17805         (thumb1_output_function_prologue): Update.
17806         * config/pa/pa.md (return expander): Update.
17807         * config/pa/pa.c (compute_frame_size): Update.
17808         (hppa_builtin_saveregs): Update.
17809         * config/mips/mips.c (mips_va_start): Update.
17810         (mips16_build_function_stub): Update.
17811         (mips_compute_frame_info): Update.
17812         (mips_restore_gp): Update.
17813         (mips_output_function_prologue): Update.
17814         (mips_expand_prologue): Update.
17815         * config/v850/v850.c (compute_frame_size): Update.
17816         (expand_prologue): * config/mmix/mmix.c (along): update.
17817         (mmix_initial_elimination_offset): update.
17818         (mmix_reorg): update.
17819         (mmix_use_simple_return): update.
17820         (mmix_expand_prologue): update.
17821         (mmix_expand_epilogue): Update.
17822         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
17823         (emit_link_insn): Update.
17824
17825 2008-04-08  Anatoly Sokolov <aesok@post.ru>
17826
17827         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
17828         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
17829         instructions.
17830         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
17831         atmega103 device.
17832
17833 2008-04-07  Jan Hubicka  <jh@suse.cz>
17834
17835         * function.h (rtl): Rename to x_rtl.
17836         (crtl): New define.
17837         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
17838         frame_offset, stack_check_probe_note, arg_pointer_save_area,
17839         used_temp_slots avail_temp_slots, temp_slot_level,
17840         nonlocal_goto_handler_labels): Update accesstors.
17841         (rtl): New global variable.
17842         (struct function): Move some fileds to rtl_data.
17843         (get_arg_pointer_save_area): Update prototype.
17844         * builtins.c (expand_builtin_setjmp_receiver): Update call of
17845         get_arg_pointer_save_area.
17846         * expr.c (init_expr): Update
17847         * function.c (get_frame_size): Update
17848         (assign_stack_local): Update
17849         (expand_function_end): Update.
17850         (get_art_pointer_save_area): Update
17851         * function.h
17852         * emit-rtl.c (rtl): Declare.
17853         (regno_reg_rtx): Declare.
17854         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
17855         Update.
17856         (gen_reg_rtx): Update.
17857         * varasm.c (n_deferred_constatns): Update accestor.
17858         (init_varasm_status): Do not allocate varasm_status.
17859         (force_const_mem, get_pool_size, output_constant_pool): Update.
17860         * stmt.c (force_label_rtx): Do not use x_ prefixes.
17861         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
17862         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
17863         * sparc/sparc.h (INIT_EXPANDERS): Update.
17864         * ia64/ia64.h (INIT_EXPANDERS): Update.
17865
17866 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
17867
17868         * reload.c (push_secondary_reload): Add missing break to for loop.
17869
17870 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
17871
17872         PR middle-end/PR28690
17873         * rtlanal.c: Update copyright years.
17874         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
17875         as REG_POINTER and MEM_POINTER operands.
17876         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
17877         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
17878         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
17879         * gcse.c: Update copyright years.
17880         (pre_delete): Call gen_reg_rtx_and_attrs.
17881         (hoist_code): Likewise.
17882         (build_store_vectors): Likewise.
17883         (delete_store): Likewise.
17884         * loop-invariant.c (move_invariant_reg): Likewise.
17885         Update copyright years.
17886
17887 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
17888
17889         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
17890         control string instead of quoted.
17891
17892 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
17893
17894         * doc/rtl.texi: Rewrite of subreg section.
17895
17896 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
17897
17898         PR/35842
17899         * config/i386/i386.c (legitimize_pic_address): Add treating
17900         of dllimport SYM_REF's.
17901         (legitimize_dllimport_symbol): Add prototype.
17902
17903 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
17904
17905         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
17906         reference in constructor with non self-referential type.
17907
17908 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
17909
17910         Removal of Return with Depressed Stack Pointer support
17911         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
17912         (ECF_SP_DEPRESSED): Likewise.
17913         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
17914         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
17915         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17916         (expand_call): Do not test ECF_SP_DEPRESSED.
17917         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17918         * function.c (keep_stack_depressed): Delete.
17919         (handle_epilogue_set): Likewise.
17920         (update_epilogue_consts): Likewise.
17921         (emit_equiv_load): Likewise.
17922         (thread_prologue_and_epilogue_insns): Remove support for Return with
17923         Depressed Stack Pointer.
17924         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
17925
17926 2008-04-06  Richard Guenther  <rguenther@suse.de>
17927
17928         PR tree-optimization/35400
17929         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
17930         information from SSA_NAMEs.
17931
17932 2008-04-06  Anatoly Sokolov <aesok@post.ru>
17933
17934         * config/avr/avr.h (avr_mega_p): Remove declaration.
17935         (AVR_MEGA): Remove macro.
17936         * config/avr/avr.c (avr_mega_p): Remove variable.
17937         (avr_override_options): Remove inicializion of avr_mega_p.
17938         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
17939         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
17940         (avr_jump_mode): (Ditto.).
17941         (avr_output_progmem_section_asm_op): (Ditto.).
17942         (avr_asm_init_sections): (Ditto.).
17943         (avr_asm_init_sections): (Ditto.).
17944         (avr_rtx_costs): (Ditto.).
17945         * config/avr/avr.md: (Ditto.).
17946         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
17947         '__AVR_MEGA__'.
17948
17949 2008-04-06  Richard Guenther  <rguenther@suse.de>
17950
17951         PR tree-optimization/35842
17952         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
17953         is_gimple_invariant_address.
17954
17955 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17956
17957         * gcc.c (default_compilers): Sync Fortran extensions list with
17958         that in fortran/lang-specs.h.
17959         * doc/invoke.texi: Likewise.
17960         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
17961         * dwarf2out.c (gen_compile_unit_die): Likewise.
17962
17963 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
17964
17965         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
17966
17967 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
17968
17969         PR target/12329
17970         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
17971         attribute is used for nested functions.
17972
17973 2008-04-05  Jan Hubicka  <jh@suse.cz>
17974
17975         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
17976
17977         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
17978         letter argument.
17979         (dump_files): Update.
17980         (enable_rtl_dump_file): Do not accept letter argument.
17981         * tree-pass.h (dump_file_info): Remove letter argument.
17982         * toplev.c (decode_d_option): Update -da handling.
17983         * toplev.h (enable_rtl_dump_file): Update prototype.
17984         * passes.c (register_one_dump_file): Do not accept IPA argument; work
17985         it out based on pass type.
17986         (register_dump_files_1): Likewise.
17987         (init_optimization_passes): Update register_one_dump_file calls.
17988         (execute_one_pass): Sanity check that IPA passes are called at IPA
17989         level and RTL passes at RTL level.
17990         (execute_pass_list): IPA pass can not be after or subpass of
17991         GIMPLE/RTL pass.
17992         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
17993         disallov RTL subpasses of IPA subpasses.
17994
17995 2008-04-05  Ben Elliston  <bje@au.ibm.com>
17996
17997         * tree-cfg.c (need_fake_edge_p): Return false for calls to
17998         builtins that return exactly once and do not throw. Cache call to
17999         call_expr_flags.
18000
18001 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
18002
18003         PR rtl-optimization/34916
18004         PR middle-end/35519
18005         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
18006         between instruction pairs.
18007
18008 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
18009
18010         * doc/invoke.texi: Document -mbitops for SH.
18011         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
18012         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
18013         * config/sh/sh.c (print_operand): Add %t operand code.
18014         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
18015         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
18016         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
18017         (extendqihi2): Likewise.
18018         (movqi_i): Likewise.
18019         (insv): Use bset, bclr and bst instructions for SH2A if possible.
18020         (extv): Use bld instruction for SH2A if possible.
18021         (extzv): Likewise.
18022         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
18023         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
18024         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
18025         (bset.b, bclr.b): Define peepholes.
18026         * config/sh/sh.opt (mbitops): New option.
18027
18028 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
18029
18030         PR target/35620
18031         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
18032         and view convert expression.
18033
18034 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
18035
18036         PR target/35364
18037         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
18038
18039 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
18040
18041         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
18042
18043         * config/i386/cpuid.h (bit_AES): New.
18044         (bit_PCLMUL): Likewise.
18045
18046         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
18047         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
18048         SSE2 if AES or PCLMUL is enabled.
18049         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
18050         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
18051         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
18052         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
18053         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
18054         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
18055         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
18056         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
18057         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
18058         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
18059         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
18060         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
18061         __builtin_ia32_aeskeygenassist128 and
18062         __builtin_ia32_pclmulqdq128.
18063         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
18064         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
18065         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
18066
18067         * config/i386/i386.h (TARGET_AES): New.
18068         (TARGET_PCLMUL): Likewise.
18069         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
18070
18071         * config/i386/i386.md (UNSPEC_AESENC): New.
18072         (UNSPEC_AESENCLAST): Likewise.
18073         (UNSPEC_AESDEC): Likewise.
18074         (UNSPEC_AESDECLAST): Likewise.
18075         (UNSPEC_AESIMC): Likewise.
18076         (UNSPEC_AESKEYGENASSIST): Likewise.
18077         (UNSPEC_PCLMUL): Likewise.
18078
18079         * config/i386/i386.opt (maes): New.
18080         (mpclmul): Likewise.
18081
18082         * config/i386/sse.md (aesenc): New pattern.
18083         (aesenclast): Likewise.
18084         (aesdec): Likewise.
18085         (aesdeclast): Likewise.
18086         (aesimc): Likewise.
18087         (aeskeygenassist): Likewise.
18088         (pclmulqdq): Likewise.
18089
18090         * config/i386/wmmintrin.h: New.
18091
18092         * doc/extend.texi: Document AES and PCLMUL built-in function.
18093
18094         * doc/invoke.texi: Document -maes and -mpclmul.
18095
18096 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
18097
18098         * function.c (free_after_parsing): Replace with
18099         cxx_push_function_context from C++ front-end.
18100         (allocate_struct_function): Don't call langhook.
18101         * langhooks.h (struct lang_hooks_for_functions): Delete.
18102         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
18103         member "function".
18104         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
18105         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
18106         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
18107         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
18108         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
18109         remove LANG_HOOKS_FUNCTION_INITIALIZER.
18110         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
18111
18112         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
18113         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
18114
18115 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
18116
18117         PR c/35440
18118         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
18119         for all types.
18120
18121 2008-04-04  Richard Guenther  <rguenther@suse.de>
18122
18123         PR middle-end/35823
18124         * fold-const.c (optimize_minmax_comparison): Use the correct
18125         type for the constant in the simplified comparison.
18126
18127 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
18128
18129         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
18130         Pass L2 size as "--param l2-cache-size" to the compiler.
18131         (decode_l2_cache): New function to decode L2 cache parameters using
18132         0x8000006 extended cpuid function.
18133         (detect_caches_amd): Determine parameters of L2 cache using
18134         decode_l2_caches function.
18135         (decode_caches_intel): Decode L2 cache parameters.
18136         (detect_caches_intel): Determine L2 cache parameters using
18137         decode_caches_intel and decode_l2_caches functions.
18138
18139 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
18140
18141         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
18142         secondary input reload for subword loads from the constant pool.
18143
18144 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
18145
18146         PR target/35713
18147         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
18148           constants of the appropriate size for runtime calculations.
18149
18150         PR c/35712
18151         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
18152           decimal-float literal constant zero.
18153
18154 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
18155
18156         PR c/35738
18157         * c-parser.c (c_parser_omp_atomic): Call
18158         default_function_array_conversion on the RHS.
18159
18160         PR middle-end/35818
18161         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
18162         call is_variable_sized if decl has incomplete type.
18163
18164 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
18165
18166         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
18167
18168 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
18169
18170         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
18171         iterators.
18172         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
18173         (sgt<u>): Merge sgt and sgtu into new expander.
18174         (sgt, sgtu): Remove expanders.
18175         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
18176         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
18177         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
18178         *sgtu_<mode>_mips16 into new pattern.
18179         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
18180         (sge<u>): Merge sge and sgeu into new expander.
18181         (sge, sgeu): Remove expanders.
18182         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
18183         new pattern.
18184         (*sge_<mode>, second *sge_<mode>): Remove patterns.
18185         (slt<u>): Merge slt and sltu into new expander.
18186         (slt, sltu): Remove expanders.
18187         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
18188         (*slt_<mode>, *sltu_<mode>): Remove patterns.
18189         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
18190         *sltu_<mode>_mips16 into new pattern.
18191         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
18192         (sle<u>): Merge sle and sleu into new expander.
18193         (sle, sleu): Remove expanders.
18194         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
18195         (*sle_<mode>, *sleu_<mode>): Remove patterns.
18196         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
18197         *sleu_<mode>_mips16 into new pattern.
18198         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
18199
18200 2008-04-03  Jan Hubicka  <jh@suse.cz>
18201
18202         PR tree-optimization/35795
18203         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
18204         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
18205         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
18206         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
18207         * score/score3.c (score3_output_mi_thunk): Likewise.
18208         * score/score7.c (score7_output_mi_thunk): Likewise.
18209         * mips/mips.c (mips_output_mi_thunk): Likewise.
18210
18211 2008-04-03  Richard Guenther  <rguenther@suse.de>
18212
18213         * tree-vrp.c (extract_range_from_unary_expr): Handle all
18214         conversions.  Simplify code.
18215
18216 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
18217
18218         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
18219
18220 2008-04-03  Tom Tromey  <tromey@redhat.com>
18221             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18222
18223         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
18224         * config/bfin/t-bfin-linux (generated_files): Add
18225         linux-sysroot-suffix.h.
18226         * doc/install.texi (Prerequisites): Require make 3.80.
18227         * doc/sourcebuild.texi (Front End Directory): Document new
18228         variable.
18229         * Makefile.in (generated_files): New variable.
18230         (ALL_HOST_OBJS): New variable.
18231         ($(ALL_HOST_OBJS)): New target.
18232
18233 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
18234
18235         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
18236         (remap_block): Call id->transform_lang_insert_block instead
18237         of langhook.
18238         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
18239         Set id.transform_lang_insert_block to NULL.
18240         (clone_body): Move to cp/optimize.c
18241         * tree-inline.h (struct copy_body_data): Change
18242         transform_lang_insert_block to function pointer.
18243         (copy_generic_body, copy_decl_no_change): Export.
18244         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
18245         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
18246         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
18247
18248         * c-tree.h (insert_block): Kill.
18249         * c-decl.c (insert_block): Kill.
18250
18251 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
18252
18253         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
18254         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
18255         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
18256         argument.
18257         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
18258         argument, call {push,pop}_function_context from here.
18259         * c-parser.c: Use c_{push,pop}_function_context.
18260
18261         * function.c (push_function_context_to): Move meat ...
18262         (push_function_context): ... here.  Simplify.
18263         * function.c (pop_function_context_from): Move meat ...
18264         (pop_function_context): ... here.  Simplify.
18265         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
18266         leave_nested).
18267         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
18268         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
18269         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
18270         * tree.h (push_function_context_to, pop_function_context_from): Remove.
18271
18272 2008-04-03  Ben Elliston  <bje@au.ibm.com>
18273
18274         * expmed.c (extract_force_align_mem_bit_field): Remove.
18275
18276 2008-04-03  Richard Guenther  <rguenther@suse.de>
18277
18278         PR middle-end/35800
18279         * expr.h (try_casesi): Adjust prototype.
18280         * expr.c (try_casesi): Take fallback label as extra parameter.
18281         Use that for gen_casesi if default_label is NULL.
18282         * stmt.c (expand_case): Pass fallback label to try_casesi,
18283         make sure to fill gaps with a fallback label if default_label
18284         is not present.
18285
18286 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
18287
18288         PR target/35801
18289         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
18290
18291 2008-04-03  Ben Elliston  <bje@au.ibm.com>
18292
18293         * expmed.c (extract_split_bit_field): Remove if (0) code.
18294         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
18295         (do_ds_constraint): Likewise.
18296
18297 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
18298
18299         * doc/cppopts.texi (-dU): Document.
18300         * c-common.h (flag_dump_macros): Update comment.
18301         * c-opts.c (handle_OPT_d): Handle -dU.
18302         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
18303         dump_queued_macros, cb_used_define, cb_used_undef): New.
18304         (init_pp_output): Handle -dU.
18305         (cb_line_change): Call dump_queued_macros.
18306         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
18307
18308 2008-04-02  Anatoly Sokolov <aesok@post.ru>
18309
18310         * config/avr/predicates.md (io_address_operand): New predicate.
18311         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
18312         * config/avr/avr.c (avr_io_address_p): Remove function.
18313         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
18314         'avr_io_address_p' function.
18315         (out_movhi_r_mr): (Ditto.).
18316         (out_movqi_mr_r): (Ditto.).
18317         (out_movhi_mr_r): (Ditto.).
18318         (avr_address_cost): (Ditto.).
18319
18320 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
18321
18322         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
18323         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
18324         in 32bit mode when XMM registers are available to avoid store
18325         forwarding stalls.
18326         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
18327         corresponding post-reload splitters.
18328
18329 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
18330
18331         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
18332         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
18333         __builtin_ia32_roundss.
18334         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
18335         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
18336         __builtin_ia32_roundss.
18337         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
18338         IX86_BUILTIN_SHUFPD here.
18339
18340 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
18341
18342         * config/i386/i386.md (plogic): New.
18343         (plogicprefix): Likewise.
18344
18345         * config/i386/mmx.md (mmx_<code><mode>3): New.
18346         (mmx_and<mode>3): Removed.
18347         (mmx_ior<mode>3): Likewise.
18348         (mmx_xor<mode>3): Likewise.
18349
18350         * config/i386/sse.md (<code><mode>3): New.
18351         (*<code><mode>3): Likewise.
18352         (*<code><mode>3): Likewise.
18353         (<code><mode>3): Likewise.
18354         (*sse_<code><mode>3): Likewise.
18355         (*sse2_<code><mode>3): Likewise.
18356         (<code>tf3): Likewise.
18357         (*<code>tf3): Likewise.
18358         (and<mode>3): Likewise.
18359         (*and<mode>3): Likewise.
18360         (ior<mode>3): Removed.
18361         (*ior<mode>3): Likewise.
18362         (xor<mode>3): Likewise.
18363         (*xor<mode>3): Likewise.
18364         (*and<mode>3): Likewise.
18365         (*ior<mode>3): Likewise.
18366         (*xor<mode>3): Likewise.
18367         (and<mode>3): Likewise.
18368         (*sse_and<mode>3): Likewise.
18369         (*sse2_and<mode>3): Likewise.
18370         (andtf3): Likewise.
18371         (*andtf3): Likewise.
18372         (ior<mode>3): Likewise.
18373         (*sse_ior<mode>3): Likewise.
18374         (*sse2_ior<mode>3): Likewise.
18375         (iortf3): Likewise.
18376         (*iortf3): Likewise.
18377         (xor<mode>3): Likewise.
18378         (*sse_xor<mode>3): Likewise.
18379         (*sse2_xor<mode>3): Likewise.
18380         (xortf3): Likewise.
18381         (*xortf3): Likewise.
18382
18383 2008-04-02  Richard Guenther  <rguenther@suse.de>
18384
18385         PR tree-optimization/14495
18386         PR tree-optimization/34793
18387         * tree-vrp.c (struct switch_update): New structure.
18388         (to_remove_edges, to_update_switch_stmts): New VECs.
18389         (simplify_switch_using_ranges): New function.  Remove not taken
18390         case labels and edges.
18391         (simplify_stmt_using_ranges): Call it.
18392         (identify_jump_threads): Mark edges we have queued for removal
18393         so we don't thread them.
18394         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
18395         case label vector.
18396         * tree-cfg.c (group_case_labels): Deal with missing default label.
18397         (tree_verify_flow_info): Allow missing default label.
18398         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
18399         (emit_case_nodes): Likewise.
18400         (expand_case): Do not rely on the default label to be present.
18401         * expr.c (try_casesi): Deal with NULL default_label.
18402         (do_tablejump): Likewise.
18403
18404 2008-04-02  Richard Guenther  <rguenther@suse.de>
18405
18406         PR tree-optimization/14495
18407         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
18408         SWITCH_EXPR here ...
18409         (vrp_visit_switch_stmt): ... but here (new function).
18410         (find_case_label_index): New helper function.
18411         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
18412
18413 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18414
18415         * fwprop.c: Fix ISO-C99ism.
18416
18417 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18418
18419         PR bootstrap/35752
18420         * Makefile.in (objdir): Set it here.
18421         * configure.ac: Not here.  Find dynamic linker characteristics.
18422         * exec-tool.in: Use them.
18423         * aclocal.m4: Regenerate.
18424         * configure: Regenerate.
18425
18426 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18427
18428         * expr.c (expand_var): Delete it.
18429         * expr.h (expand_var): Delete prototype.
18430         * function.c (expand_function_start): Use expand_decl instead.
18431         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
18432         langhook.
18433
18434 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
18435
18436         PR rtl-optimization/35542
18437         * fwprop.c (forward_propagate_and_simplify): Replace
18438         loc_reg_mentioned_in_p with reg_mentioned_p.
18439
18440 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18441
18442         PR rtl-optimization/35281
18443         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
18444         (propagate_rtx_1): Handle PR_HANDLE_MEM.
18445         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
18446         (varying_mem_p): Move above propagate_rtx.
18447         (all_uses_available_at): Do not check MEMs.
18448
18449 2008-04-02  Rafael Espíndola  <espindola@google.com>
18450
18451         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
18452         (register_edge_assert_for_2): Split the cond argument.
18453         (register_edge_assert_for_1): Adjust for the change in
18454         register_edge_assert_for_2.
18455         (register_edge_assert_for): Split the cond argument.
18456         (find_switch_asserts): Adjust for the change in
18457         register_edge_assert_for.
18458
18459 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
18460
18461         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
18462         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
18463         offsets for 64-bit mingw.
18464         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
18465         abi for x86_64-pc-mingw.
18466
18467 2008-04-02  Richard Guenther  <rguenther@suse.de>
18468
18469         * tree-vrp.c (extract_range_from_assert): Make sure to not
18470         produce range min/max with TREE_OVERFOW set.
18471         If merging a anti-range and a range keep the anti-range if
18472         the range covers all values of the type.
18473         (register_edge_assert_for_2): Only allow sign-changing
18474         conversions in detecting canonical range checks.  Also
18475         register an assert for the unsigned name if useful.
18476
18477         PR tree-optimization/35787
18478         * tree-vrp.c (vrp_val_max): New function.
18479         (vrp_val_min): Likewise.
18480         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
18481         (vrp_val_is_min): Likewise.
18482         (supports_overflow_infinity): Use vrp_val_{min,max}.
18483         (negative_overflow_infinity): Likewise.
18484         (positive_overflow_infinity): Likewise.
18485         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
18486         (is_positive_overflow_infinity): Likewise.
18487         (is_overflow_infinity): Likewise.
18488         (avoid_overflow_infinity): Use vrp_val_{min,max} and
18489         vrp_val_is_{min,max}.
18490         (set_and_canonicalize_value_range): Canonicalize anti-ranges
18491         to ranges if possible.  Avoid empty ranges.
18492
18493 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18494
18495         PR middle-end/35705
18496         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
18497         the expression is a function address.
18498
18499 2008-04-01  George Helffrich  <george@gcc.gnu.org>
18500
18501         PR fortran/35154, fortran/23057
18502         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
18503         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
18504         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
18505         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
18506         in common.
18507         (dbxout_syms): Check for COMMON-based symbol and wrap in
18508         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
18509         in bracket for efficiency.
18510
18511         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
18512         using DW_TAG_common_block + member offset.
18513         (add_pubname_string): New function.
18514         (dw_expand_expr): New function to find block name and offset for
18515         COMMON var.
18516         (common_check): New function to check whether symbol in Fortran COMMON.
18517         (gen_variable_die): If COMMON, use DW_TAG_common_block.
18518
18519 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
18520
18521         PR c/35436
18522         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
18523
18524 2008-04-02  Ben Elliston  <bje@au.ibm.com>
18525
18526         * config/v850/v850.md (casesi): Remove if (0) code.
18527         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
18528         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
18529
18530 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
18531
18532         * config/i386/i386.md (rex64suffix): New mode attribute.
18533         (floathi<mode>2): Disable expander for SSE math.
18534         (*floathi<mode>2_1): New insn insn_and_split pattern.
18535         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
18536         corresponding post-reload splitters.
18537         (*floathi<mode>2_i387): New macroized insn pattern.
18538         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
18539         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
18540         insn_and_split pattern.
18541         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
18542         New macroized instruction patterns and corresponding post-reload
18543         splitters.
18544         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
18545         and corresponding post-reload splitters.
18546         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
18547         New macroized instruction patterns.
18548         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
18549         macroized instruction patterns and corresponding post-reload splitters.
18550         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
18551         corresponding post-reload splitters.
18552         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
18553         New macroized instruction patterns.
18554         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
18555         corresponding post-reload splitters.
18556         (*floatsi<mode>2_i387): New macroized instruction patterns.
18557
18558 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
18559
18560         * config/i386/i386.md (smaxmin): New.
18561         (umaxmin): Likewise.
18562         (maxminiprefix): Likewise.
18563         (maxminfprefix): Likewise.
18564         (<code><mode>3): Likewise.
18565         (smin<mode>3): Removed.
18566         (smax<mode>3): Likewise.
18567
18568         * config/i386/mmx.md (mmx_<code>v2sf3): New.
18569         (mmx_<code>v4hi3): Likewise.
18570         (mmx_<code>v8qi3): Likewise.
18571         (mmx_smaxv2sf3): Removed.
18572         (mmx_sminv2sf3): Likewise.
18573         (mmx_umaxv8qi3): Likewise.
18574         (mmx_smaxv4hi3): Likewise.
18575         (mmx_uminv8qi3): Likewise.
18576         (mmx_sminv4hi3): Likewise.
18577
18578         * config/i386/sse.md (<addsub><mode>3): New.
18579         (*<addsub><mode>3): Likewise.
18580         (<sse>_vm<addsub><mode>3): Likewise.
18581         (<maxmin><mode>3): Likewise.
18582         (*<maxmin><mode>3_finite): Likewise.
18583         (*<maxmin><mode>3): Likewise.
18584         (<sse>_vm<maxmin><mode>3): Likewise.
18585         (sse3_h<addsub>v4sf3): Likewise.
18586         (sse3_h<addsub>v2df3): Likewise.
18587         (<maxmin>v16qi3): Likewise.
18588         (*<maxmin>v16qi3): Likewise.
18589         (<maxmin>v8hi3): Likewise.
18590         (*<maxmin>v8hi3): Likewise.
18591         (*sse4_1_<maxmin><mode>3): Likewise.
18592         (*sse4_1_<maxmin><mode>3): Likewise.
18593         (add<mode>3): Removed.
18594         (*add<mode>3): Likewise.
18595         (<sse>_vmadd<mode>3): Likewise.
18596         (sub<mode>3): Likewise.
18597         (*sub<mode>3): Likewise.
18598         (<sse>_vmsub<mode>3): Likewise.
18599         (smin<mode>3): Likewise.
18600         (*smin<mode>3_finite): Likewise.
18601         (*smin<mode>3): Likewise.
18602         (<sse>_vmsmin<mode>3): Likewise.
18603         (smax<mode>3): Likewise.
18604         (*smax<mode>3_finite): Likewise.
18605         (*smax<mode>3): Likewise.
18606         (<sse>_vmsmax<mode>3): Likewise.
18607         (sse3_haddv4sf3): Likewise.
18608         (sse3_haddv2df3): Likewise.
18609         (sse3_hsubv4sf3): Likewise.
18610         (sse3_hsubv2df3): Likewise.
18611         (umaxv16qi3): Likewise.
18612         (*umaxv16qi3): Likewise.
18613         (smaxv8hi3): Likewise.
18614         (*smaxv8hi3): Likewise.
18615         (*sse4_1_smax<mode>3): Likewise.
18616         (*sse4_1_umax<mode>3): Likewise.
18617         (uminv16qi3): Likewise.
18618         (*uminv16qi3): Likewise.
18619         (sminv8hi3): Likewise.
18620         (*sminv8hi3): Likewise.
18621         (*sse4_1_smin<mode>3): Likewise.
18622         (*sse4_1_umin<mode>3): Likewise.
18623
18624 2008-04-01  Rafael Espíndola  <espindola@google.com>
18625
18626         * tree-cfg.c (verify_expr): remove in_phi.
18627         (verify_stmt): Don't call walk_tree with verify_expr. Use
18628         is_gimple_min_invariant instead of is_gimple_val.
18629
18630 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
18631
18632         * doc/include/gpl_v3.texi: Update for manpage generation.
18633         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
18634         gpl.texi.
18635         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
18636         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
18637         gpl_v3.texi instead of gpl.texi.
18638         (gpl.pod): New.
18639
18640 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
18641
18642         PR pch/13675
18643         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
18644
18645 2008-04-01  Rafael Espíndola  <espindola@google.com>
18646
18647         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
18648         (extract_code_and_val_from_cond): Use
18649         extract_code_and_val_from_cond_with_ops.
18650
18651 2008-04-01  Jan Hubicka  <jh@suse.cz>
18652
18653         * function.c (free_after_compilation): Free epilogue_delay_list.
18654         (prepare_function_start): Assert that previous compilation was freed.
18655
18656 2008-04-01  Jan Hubicka  <jh@suse.cz>
18657             Jim Wilson  <wilson@tuliptree.org>
18658             Andreas Tobler <andreast@gcc.gnu.org>
18659
18660         PR middle-end/35781
18661         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
18662         rtl.emit instead cfun->emit.
18663         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
18664         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
18665
18666 2008-04-01  Ben Elliston  <bje@au.ibm.com>
18667
18668         * doc/c-tree.texi (Function Basics): Fix grammatical error.
18669
18670 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
18671
18672         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
18673         New options
18674         (fprofile-use): Add var flag_profile_use
18675         * coverage.c (coverage_begin_output): Do not open a gcno file for
18676         output only if -ftest-coverage is set.
18677         Do not add getpwd() to gcda file path.
18678         (build_gcov_info): Check the new flag
18679         flag_profile_datafile_relative_path.
18680         (coverage_init): Use profile_data_prefix.
18681         Read profile counter only if flag_profile_use is set.
18682         * opts.c (common_handle_option): New option fprofile-use=,
18683         fprofile-dir=, fprofile-generate=.
18684         * toplev.c (profile_data_prefix): New variable definition.
18685         * toplev.h (profile_data_prefix): New declaration.
18686         * doc/invoke.tex (Option Summary, Optimization Options):
18687         Add new options.
18688
18689 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
18690
18691         * varasm.c (output_constant_pool_1): In LABEL_REF check,
18692         use tmp consistently.
18693
18694         PR target/35695
18695         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
18696         * config/ia64/ia64.c (rtx_needs_barrier): Handle
18697         UNSPEC_FR_RECIP_APPROX_RES.
18698         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
18699
18700 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
18701
18702         PR c/35750
18703         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
18704
18705 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18706
18707         PR middle-end/30186
18708         * fold-const.c (fold_indirect_ref_1): Support accessing non first
18709         element of the vector via a pointer.
18710
18711 2008-03-31  Ian Lance Taylor  <iant@google.com>
18712
18713         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
18714
18715 2008-03-31  Jan Hubicka  <jh@suse.cz>
18716
18717         * builtins.c (expand_builtin_setjmp_receiver): Update call of
18718         get_arg_pointer_save_area.
18719         * expr.c (init_expr): Just clear out rtl.expr.
18720         * function.c (free_after_compilation): Clear out whole RTL structure.
18721         (get_func_frame_size): Merge into ...
18722         (get_frame_size): ... this one.
18723         (assign_stack_local_1): Merge into ...
18724         (assign_stack_local): ... this one.
18725         (expand_function_end): Update call of get_arg_pointer_save_area.
18726         (get_art_pointer_save_area): Remove cfun argument.
18727         * function.h (emit_status): regno_pointer_align does not need length
18728         attribute. Move x_regno_reg_rtx to ...
18729         (regno_reg_rtx): ... new global array.
18730         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
18731         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
18732         apply_args_value, forced_labels, stack_pointer_delta):
18733         Update accestors.
18734         (struct varasm_status): Move here from varasm.c
18735         (struct rtl_data): New. Move here some fields from struct function.
18736         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
18737         frame_offset, stack_check_probe_note, arg_pointer_save_area,
18738         used_temp_slots avail_temp_slots, temp_slot_level,
18739         nonlocal_goto_handler_labels): Update accesstors.
18740         (rtl): New global variable.
18741         (struct function): Move some fileds to rtl_data.
18742         (get_arg_pointer_save_area): Update prototype.
18743         * emit-rtl.c (rtl): Declare.
18744         (regno_reg_rtx): Declare.
18745         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
18746         Update.
18747         (gen_reg_rtx): Update.
18748         (init_virtual_regs): Do not tate emit_status argument.
18749         (init_emit): Do not allocate emit.
18750         * varasm.c (varasm_statuc): Move to function.h.
18751         (n_deferred_constatns): Update accestor.
18752         (init_varasm_status): Do not allocate varasm_status.
18753         (force_const_mem, get_pool_size, output_constant_pool): Update.
18754         * stmt.c (force_label_rtx): Do not use x_ prefixes.
18755         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
18756
18757 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
18758
18759         PR rtl-optimization/35729
18760         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
18761         references.
18762
18763 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
18764
18765         PR target/32000
18766         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
18767         load/store if memory is unaligned.
18768         (*movti_rex64): Likewise.
18769
18770         * config/i386/predicates.md (misaligned_operand): New.
18771
18772 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
18773
18774         PR tree-opt/35431
18775         * tree-ssa-phiopt.c (conditional_replacement): Return early for
18776         complex types.
18777
18778 2008-03-31  Jan Beulich  <jbeulich@novell.com>
18779
18780         * config/ia64/constraints.md: Add 'j' constraint.
18781         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
18782         (movdi_internal): Likewise.
18783
18784 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
18785
18786         PR c/35748
18787         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
18788
18789 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
18790
18791         PR target/35757
18792         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
18793         proper error message for the third argument on blendpd and
18794         blendps.
18795
18796         * config/i386/sse.md (blendbits): New.
18797         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
18798
18799 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
18800
18801         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
18802
18803 2008-03-30  Richard Guenther  <rguenther@suse.de>
18804
18805         PR middle-end/31023
18806         * fold-const.c (fold_sign_changed_comparison): Do leave
18807         conversions to base-types alone.
18808
18809 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18810
18811         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
18812         the link register if one altivec register is be saved.
18813
18814 2008-03-30  Ben Elliston  <bje@au.ibm.com>
18815
18816         * final.c (final_scan_insn): Remove if (0) code.
18817
18818 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
18819
18820         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
18821
18822 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
18823
18824         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
18825         of V4SFmode to ix86_binary_operator_ok.
18826
18827 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
18828
18829         * config/i386/i386.c (override_options): Initialize
18830         ix86_veclib_handler to ix86_veclibabi_svml when
18831         -mveclibabi=svml is used.
18832         (ix86_veclibabi_svml): New function for SVML ABI style
18833         vectorization support.
18834         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
18835
18836 2008-03-28  Rafael Espíndola  <espindola@google.com>
18837
18838         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
18839         (tree_binary_nonnegative_warnv_p): Make it public.
18840         (tree_single_nonnegative_warnv_p): Make it public.
18841         (tree_invalid_nonnegative_warnv_p): Make it public.
18842         (tree_unary_nonzero_warnv_p): Make it public.
18843         (tree_binary_nonzero_warnv_p): Make it public
18844         (tree_single_nonzero_warnv_p): Make it public.
18845         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
18846         (extract_range_from_binary_expr): Split the expr argument.
18847         (extract_range_from_unary_expr): Split the expr argument.
18848         (extract_range_from_comparison): Split the expr argument.
18849         (extract_range_from_expr): Use the new aux functions.
18850         (vrp_evaluate_conditional_warnv): Use
18851         vrp_evaluate_conditional_warnv_with_ops.
18852         * tree.h (tree_unary_nonzero_warnv_p): Declare.
18853         (tree_binary_nonzero_warnv_p): Declare.
18854         (tree_single_nonzero_warnv_p): Declare.
18855         (tree_expr_nonzero_warnv_p): Declare.
18856         (tree_unary_nonnegative_warnv_p): Declare.
18857         (tree_binary_nonnegative_warnv_p): Declare.
18858         (tree_single_nonnegative_warnv_p): Declare.
18859         (tree_invalid_nonnegative_warnv_p): Declare.
18860
18861 2008-03-28  Richard Guenther  <rguenther@suse.de>
18862
18863         PR tree-optimization/30317
18864         PR tree-optimization/30911
18865         PR tree-optimization/34793
18866         * tree-vrp.c (set_and_canonicalize_value_range): New function.
18867         (struct assert_locus_d): New member EXPR.
18868         (register_new_assert_for): Add EXPR parameter to support
18869         ASSERT_EXPR <name, expr OP limit>.
18870         (register_edge_assert_for_1): Adjust callers.
18871         (find_assert_locations): Likewise.
18872         (process_assert_insertions_for): Build condition from expression.
18873         (extract_range_from_assert): Handle ASSERT_EXPRs
18874         of the form ASSERT_EXPR <name, expr OP limit>.
18875         (register_edge_assert_for_2): New helper registering
18876         asserts for comparisons.  Recognize range tests of the form
18877         (unsigned)i - CST1 OP CST2.
18878         (register_edge_assert_for_1): Use it.
18879         (register_edge_assert_for): Likewise.
18880         (needs_overflow_infinity): Integer sub-types
18881         do not need overflow infinities.
18882         (vrp_val_is_max): The extreme values of integer sub-types
18883         are those of the base type.
18884         (vrp_val_is_min): Likewise.
18885         * tree.def (ASSERT_EXPR): Document extra allowed conditional
18886         expressions.
18887
18888 2008-03-28  Nick Clifton  <nickc@redhat.com>
18889
18890         PR target/31110
18891         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
18892         Return GENERAL_REGS for stack adjustment reloads.
18893
18894 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18895
18896         PR target/31334
18897         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
18898         const_vector when all the vectors are constant.
18899
18900 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
18901
18902         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
18903         comparisons.
18904         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
18905         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
18906         (scc_sf): New.
18907         (s<code>_sf): Use new scc_sf attribute for opcode names.
18908
18909 2008-03-27  Tom Tromey  <tromey@redhat.com>
18910
18911         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
18912         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
18913         config/spu/t-spu-elf, config/i386/t-interix,
18914         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
18915         config/i386/x-darwin, config/i386/x-mingw32,
18916         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
18917         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
18918         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
18919         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
18920         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
18921         config/rs6000/x-darwin, config/rs6000/t-rs6000,
18922         config/score/t-score-elf, config/arm/t-strongarm-pe,
18923         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
18924         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
18925         Revert automatic dependency patch.
18926
18927 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
18928
18929         PR target/35657
18930         * config/i386/i386.c (ix86_function_arg_boundary): Align
18931         decimal floating point to its natural boundary.
18932
18933 2008-03-27  Richard Guenther  <rguenther@suse.de>
18934
18935         PR middle-end/35716
18936         * fold-const.c (fold_comparison): Restrict distinct decl
18937         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
18938         solely rely on operand_equal_p.
18939
18940 2008-03-27  Richard Guenther  <rguenther@suse.de>
18941
18942         PR c/32511
18943         * c-common.c (handle_weak_attribute): Reject combination of
18944         weak and inline.
18945
18946 2008-03-27  Richard Guenther  <rguenther@suse.de>
18947
18948         PR tree-optimization/32810
18949         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
18950         conversions from DECL_INITIAL.
18951         (fold_const_aggregate_ref): Likewise from constructor elements.
18952
18953 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
18954
18955         * tree-affine.h (aff_combination_expand): Declare.
18956         (get_inner_reference_aff): Likewise.
18957         * tree-affine.c (aff_combination_expand): Split out from
18958         tree_to_aff_combination_expand.
18959         (get_inner_reference_aff): New function.
18960         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
18961         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
18962         (struct lim_aux_data): sm_done field removed.
18963         (mem_ref_loc_p, mem_ref_locs_p): New types.
18964         (struct mem_ref): Added id, stored, accesses_in_loop,
18965         indep_loop, dep_loop, indep_ref, dep_ref fields.
18966         Removed is_stored, locs and next fields.
18967         (memory_accesses): New variable.
18968         (movement_possibility): Do not allow moving statements
18969         that store to memory.
18970         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
18971         New functions.
18972         (determine_max_movement): For statements with memory references,
18973         find the outermost loop in that the reference is independent.
18974         (move_computations_stmt): Mark the virtual operands for renaming.
18975         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
18976         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
18977         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
18978         add_vop_ref_mapping, create_vop_ref_mapping_loop,
18979         create_vop_ref_mapping, analyze_memory_references,
18980         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
18981         get_all_locs_in_loop, ref_always_accessed_p,
18982         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
18983         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
18984         store_motion_loop, store_motion): New functions.
18985         (struct vop_to_refs_elt): New type.
18986         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
18987         memref_hash, memref_eq, hoist_memory_references): Rewritten.
18988         (schedule_sm): Replaced by...
18989         (execute_sm): ... this.
18990         (determine_lsm_ref, hoist_memory_references,
18991         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
18992         find_more_ref_vops, free_mem_ref, free_mem_refs,
18993         determine_lsm_loop, determine_lsm): Removed.
18994         (tree_ssa_lim_finalize): Free data structures used by store motion.
18995         (tree_ssa_lim): Call analyze_memory_references.  Use
18996         store_motion instead of determine_lsm.
18997
18998 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
18999
19000         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
19001         rename tmake_file to m68hc11/t-m68hc11.
19002         (mcore): Set inhibit_libc to true.
19003         * config.host (alpha*-dec-*vms*): Set extra_programs.
19004         (interix3*): Don't use host_xmake_file.
19005         * configure.ac: Let config.gcc override inhibit_libc.
19006         * configure: Regenerate.
19007
19008         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
19009         * config/t-openbsd-thread: Remove commented out lines.
19010
19011         * config/x-interix: Remove.
19012
19013         * config/m68hc11/t-m68hc11-gas: Rename to...
19014         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
19015
19016         * config/mcore/t-mcore: Remove T_CFLAGS.
19017         * config/mcore/t-mcore-pe: Likewise.
19018
19019 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
19020
19021         * configure.ac: Replace custom __GNU_SOURCE test with
19022         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
19023         * aclocal.m4: Regenerate.
19024         * configure: Regenerate.
19025         * config.in: Regenerate.
19026
19027 2008-03-27  Richard Guenther  <rguenther@suse.de>
19028
19029         * fold-const.c (target.h): Include.
19030         (fold_comparison): Fold comparison of addresses of decls
19031         that bind locally or of constants.  Consolidate address folding code.
19032         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
19033         results from fold_binary_to_constant.
19034         (compare_values_warnv): Likewise.
19035
19036 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
19037
19038         PR middle-end/35429
19039         * fold-const.c (fold_truthop): Check for integeral types when folding
19040         a == 0 && b == 0 and a != 0 || b != 0 .
19041
19042 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
19043
19044         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
19045
19046 2008-03-26  Andreas Schwab  <schwab@suse.de>
19047
19048         * doc/invoke.texi: Fix use of @item vs. @itemx.
19049
19050 2008-03-26  Tom Tromey  <tromey@redhat.com>
19051
19052         * Makefile.in (build/gensupport.o, build/print-rtl.o,
19053         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
19054         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
19055         build/gencodes.o, build/genconditions.o, build/genconfig.o,
19056         build/genconstants.o, build/genemit.o, build/genextract.o,
19057         build/genflags.o, build/genmddeps.o, build/genopinit.o,
19058         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
19059         options.h.
19060
19061 2008-03-26  Richard Guenther  <rguenther@suse.de>
19062
19063         Revert
19064         2008-03-26  Richard Guenther  <rguenther@suse.de>
19065
19066         * fold-const.c (target.h): Include.
19067         (fold_comparison): Fold comparison of addresses of two decls
19068         that bind locally.  Consolidate address folding code.
19069
19070 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19071
19072         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
19073         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
19074         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
19075         dconstsqrt2, dconstthird, dconste and/or dconst10.
19076         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
19077         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
19078         dconstsqrt2, dconste): Delete.
19079         (init_emit_once): Likewise.  Simplify initializing dconstm1.
19080         Constify variable.
19081         * real.c (get_real_const): New.
19082         * real.h (dconst3, dconst10, dconstm2, dconstthird,
19083         dconstsqrt2, dconste): Delete.
19084         (real_value_const, get_real_const): New.
19085
19086 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
19087
19088         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
19089
19090         * config/i386/i386.c (ix86_function_arg_boundary): Check
19091         BIGGEST_ALIGNMENT instead of 128.
19092         (setup_incoming_varargs_64): Likewise.
19093
19094 2008-03-26  Tom Tromey  <tromey@redhat.com>
19095
19096         * Makefile.in (DEPFILES): Add missing '/'.
19097
19098 2008-03-26  Richard Guenther  <rguenther@suse.de>
19099
19100         * fold-const.c (target.h): Include.
19101         (fold_comparison): Fold comparison of addresses of two decls
19102         that bind locally.  Consolidate address folding code.
19103
19104 2008-03-26  Nick Clifton  <nickc@redhat.com>
19105
19106         PR target/31232
19107         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
19108         not allow INT+INT as a legitimate addressing mode.
19109
19110 2008-03-26  Richard Guenther  <rguenther@suse.de>
19111
19112         * tree-flow.h (widen_bitfield): Remove declaration.
19113         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
19114         (widen_bitfield): Remove function.
19115         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
19116         code.
19117
19118 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19119
19120         PR target/31558
19121         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
19122         error_mark_node's.
19123
19124 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
19125
19126         PR rtl-optimization/35232
19127         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
19128         (forget_old_reloads_1, forget_marked_reloads): Don't clear
19129         reg_reloaded_call_part_clobbered here.
19130         (reload_regs_reach_end_p): New function.
19131         (reload_reg_rtx_for_input): New variable.
19132         (reload_reg_rtx_for_output): Likewise.
19133         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
19134         when reassigning a pseudo register.  Load reloadreg from
19135         reload_reg_rtx_for_input, moving the mode and register
19136         calculation to...
19137         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
19138         instead of the original when deciding whether an input reload
19139         would be a no-op or whether an output reload can be deleted.
19140         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
19141         when setting up new_spill_reg_store.  Load it from
19142         reload_reg_rtx_for_output, moving the mode and register
19143         calculation to...
19144         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
19145         instead of the original when deciding whether an output reload
19146         would be a no-op.  Do the same when modifying insn notes.
19147         Use rtx_equal_p instead of == to compare the registers.
19148         (inherit_piecemeal_p): Take a mode and two register numbers
19149         as argument.
19150         (emit_reload_insns): Clear new_spill_reg_store for every hard
19151         register in the reload register.  Remove spill registers
19152         from reg_reloaded_valid before considering whether to record
19153         inheritance information for them.  Use reload_reg_rtx_for_output
19154         instead of reg_rtx when recording output reloads.  Use
19155         reload_reg_rtx_for_input instead of reg_rtx when recording
19156         input reloads.  Set or clear reg_reloaded_call_part_clobbered
19157         at the same time as setting reg_reloaded_valid.
19158         (delete_output_reload): Add a new_reload_reg parameter and use it
19159         instead of rld[j].reg_rtx.
19160         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
19161         calls accordingly.
19162
19163 2008-03-25  Tom Tromey  <tromey@redhat.com>
19164
19165         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
19166         (build/genattr.o): Likewise.
19167         (build/genattrtab.o): Likewise.
19168         (build/gencodes.o): Likewise.
19169         (build/genconfig.o): Likewise.
19170         (build/genconstants.o): Likewise.
19171         (build/genemit.o): Likewise.
19172         (build/genextract.o): Likewise.
19173         (build/genflags.o): Likewise.
19174
19175 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
19176
19177         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
19178         instead of size_int for integer types.
19179         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
19180         to match type of MINUS_EXPR.
19181
19182 2008-03-25  Tom Tromey  <tromey@redhat.com>
19183
19184         * configure: Rebuilt.
19185         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
19186         Makefile.
19187
19188 2008-03-25  Tom Tromey  <tromey@redhat.com>
19189
19190         * config/x-solaris (host-solaris.o): Update.
19191         * config/x-linux (host-linux.o): Update.
19192         * config/x-hpux (host-hpux.o): Update.
19193         * config/x-darwin (host-darwin.o): Update.
19194         * config/v850/t-v850e (v850-c.o): Update.
19195         * config/v850/t-v850 (v850-c.o): Update.
19196         * config/t-vxworks (vxworks.o): Update.
19197         * config/t-sol2 (sol2-c.o, sol2.o): Update.
19198         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
19199         * config/spu/t-spu-elf (spu-c.o): Update.
19200         (spu.o): Remove.
19201         * config/sh/t-symbian (sh-c.o): Update.
19202         (symbian.o): Update.
19203         * config/sh/t-sh (sh-c.o): Update.
19204         * config/score/t-score-elf (score7.o, score3.o): Update.
19205         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
19206         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
19207         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
19208         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
19209         (rs6000.o): Remove.
19210         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
19211         * config/m32c/t-m32c (m32c-pragma.o): Update.
19212         * config/ia64/t-ia64 (ia64-c.o): Update.
19213         * config/i386/x-mingw32 (host-mingw32.o): Update.
19214         * config/i386/x-i386 (driver-i386.o): Update.
19215         * config/i386/x-darwin (host-i386-darwin.o): Update.
19216         * config/i386/x-cygwin (host-cygwin.o): Update.
19217         * config/i386/t-nwld (nwld.o): Update.
19218         * config/i386/t-netware (netware.o): Update.
19219         * config/i386/t-interix (winnt.o): Update.
19220         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
19221         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
19222         msformat-c.o): Update.
19223         * config/bfin/t-bfin-linux (generated_files): Add
19224         linux-sysroot-suffix.h.
19225         * config/arm/t-wince-pe (pe.o): Update.
19226         * config/arm/t-strongarm-pe (pe.o): Update.
19227         * config/arm/t-pe (pe.o): Update.
19228         * config/arm/t-arm (arm-c.o): Update.
19229         * doc/install.texi (Prerequisites): Require make 3.80.
19230         * Makefile.in: Remove .o targets.
19231         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
19232         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
19233         (simple_generated_h, simple_generated_c): Move earlier.
19234         (generated_files): New variable.
19235         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
19236         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
19237         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
19238         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
19239         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
19240         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
19241         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
19242         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
19243         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
19244         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
19245         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
19246         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
19247         (.c.o): Remove.
19248         (COMPILE.base, COMPILE): New variables.
19249         (%.o): New pattern rule.
19250         (ALL_HOST_OBJS): New variable.
19251         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
19252         (dummy-checksum.o, cc1-checksum.o): Remove.
19253         (DRIVER_SHLIB): New variable.
19254         (DRIVER_DEFINES): Use it.
19255         (gencondmd.c): Move out of build/.
19256         (s-conditions): Update.
19257         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
19258         (ALL_BUILD_OBJS): Likewise.
19259         (build/%.o): Use BUILDCOMPILE.
19260         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
19261         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
19262         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
19263         build/gencheck.o, build/gencodes.o, build/genconditions.o,
19264         build/genconfig.o, build/genconstants.o, build/genemit.o,
19265         build/genextract.o, build/genflags.o, build/genmddeps.o,
19266         build/genopinit.o, build/genoutput.o, build/genpeep.o,
19267         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
19268         build/gen-protos.o, build/scan.o, build/fix-header.o,
19269         build/scan-decls.o): Simplify.
19270         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
19271         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
19272         prefix.o, toplev.o): Reduce to variable setting.
19273         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
19274         ($(out_object_file), gcc-options.o): New targets.
19275         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
19276         * configure: Rebuilt.
19277         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
19278         * doc/sourcebuild.texi (Front End Directory): Document new variable.
19279
19280 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
19281
19282         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
19283         complain when we hit an error, return ERROR_MARK_NODE.
19284
19285 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19286
19287         * config/sh/constraints.md (Pso, Psz): New constraints.
19288         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
19289         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
19290
19291 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19292
19293         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
19294         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
19295
19296 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19297
19298         * config/sh/sh.md (prefetch): Add condition for SH2A target.
19299         (prefetch_sh2a): New.
19300
19301 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
19302             Naveen.H.S  <naveen.hs@kpitcummins.com>
19303
19304         * config/sh/constraints.md (I28): New constraint.
19305         * config/sh/sh.c (broken_move): Add support for movi20s.
19306         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
19307
19308 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
19309             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
19310             Naveen.H.S  <naveen.hs@kpitcummins.com>
19311
19312         * config/sh/sh.c (SH_ATTRIBUTES): Define.
19313         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19314         (print_operand): Handle resbank in %@ operand code.
19315         (sh_encode_section_info): New.
19316         (push_regs): Add conditions for resbank.
19317         (sh_expand_epilogue): Likewise.
19318         (sh_insert_attributes): Likewise.
19319         (sh_attribute_table): Likewise.
19320         (sh_handle_resbank_handler_attribute): New.
19321         (sh2a_handle_function_vector_handler_attribute): New.
19322         (sh2a_is_function_vector_call): New.
19323         (sh2a_get_function_vector_number): New.
19324         (sh2a_function_vector_p): New.
19325         (sh_cfun_resbank_handler_p): New.
19326         * config/sh/sh.md (calli): Emit jsr/n if possible.
19327         (calli_tbr_rel): New.
19328         (calli_pcrel): Emit jsr/n if possible.
19329         (return_i): Emit rts/n if possible.
19330         (call_valuei_tbr_rel): New.
19331         (call_valuei_pcrel): Add condition for SH2A target.
19332         (call_value): Likewise.
19333         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
19334         (sh2a_get_function_vector_number): Likewise.
19335         (sh2a_is_function_vector_call): Likewise.
19336         * doc/extend.texi: Document TBR relative addressing of SH2A.
19337         (resbank): Add description for SH2A.
19338
19339 2008-03-24  Richard Guenther  <rguenther@suse.de>
19340
19341         PR c/22371
19342         * gimplify.c (gimplify_modify_expr): For frontend type-correct
19343         pointer assignments change conversions according to middle-end rules.
19344         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
19345         * configure.ac: Include type checking in yes.
19346         * configure: Regenerate.
19347
19348 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19349
19350         * diagnostic.c (diagnostic_count_diagnostic): Delete.
19351         (diagnostic_report_diagnostic): Update. Handle ICEs here.
19352
19353 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
19354
19355         * gthr-vxworks.h (UNUSED): Define.
19356
19357 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
19358
19359         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
19360
19361 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
19362
19363         * doc/extend.texi (Function Attributes): Add missing comma in the
19364         example of the "alloc_size" attribute.
19365
19366 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
19367
19368         Revert:
19369         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
19370
19371         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
19372         32bit host.
19373
19374         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
19375
19376         PR target/35496
19377         * stor-layout.c (update_alignment_for_field): Set minimum alignment
19378         of the underlying type of a MS bitfield layout to the natural
19379         alignment of the type.
19380
19381         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
19382
19383         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
19384         to their natural alignment to avoid store forwarding stalls.
19385
19386 2008-03-22  Richard Guenther  <rguenther@suse.de>
19387
19388         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
19389         For PHI nodes verify the address is invariant.
19390         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
19391         (get_symbol_constant_value): Use is_gimple_min_invariant.
19392         (maybe_fold_stmt_indirect): Likewise.
19393
19394 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
19395
19396         PR rtl-optimization/33927
19397         * Makefile.in (dse.o): Depend on $(TM_P_H).
19398         * expr.h (extract_low_bits): Declare.
19399         * expmed.c (extract_low_bits): New function.
19400         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
19401         * dse.c: Include tm_p.h.
19402         (find_shift_sequence): Remove the read_reg argument and return the
19403         read value.  Emit the instructions instead of returning them.
19404         Iterate on new_mode rather than calculating it each time.
19405         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
19406         source to NEW_MODE and extract_low_bits to convert the shifted
19407         value to READ_MODE.
19408         (replace_read): Allow the load and store to have different mode
19409         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
19410         or extraction instructions before trying the replacement.  Update
19411         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
19412
19413 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
19414
19415         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
19416         to their natural alignment to avoid store forwarding stalls.
19417
19418 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19419
19420         PR target/27946
19421         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
19422         encouraging but not allowing gprs for input;
19423         change the input constraint to !f#r.
19424         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
19425         gprs for output;
19426         change the output constraint to !f#r.
19427
19428 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
19429
19430         PR target/13958
19431         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
19432         corresponding post-reload splitters.
19433         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
19434         when x87 FP math is selected.
19435         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
19436         New function prototype.
19437         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
19438         unreachable function to ease macroization of insn patterns.
19439
19440 2008-03-21  Martin Jambor  <mjambor@suse.cz>
19441
19442         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
19443         reference dumps if ddr is NULL or dependence is unknown.
19444
19445 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19446
19447         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
19448         unsigned extension into account.
19449         (ATOMIC_COMPARE_AND_SWAP): Likewise.
19450         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
19451         Do computations on a scratch register.
19452
19453 2008-03-21  Richard Guenther  <rguenther@suse.de>
19454
19455         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19456         Use is_gimple_min_invariant instead of TREE_INVARIANT.
19457         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
19458         * tree-ssa-dom.c (record_equality): Likewise.
19459         * tree-inline.c (copy_body_r): Likewise.
19460         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
19461         TREE_INVARIANT.
19462
19463 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19464
19465         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
19466         as 'delete_unused' argument.
19467
19468 2008-03-20  Richard Guenther  <rguenther@suse.de>
19469
19470         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
19471         special casing of constant qualifiers.
19472         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
19473         care about them in general.
19474         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
19475         regardless of their type.
19476         (fold_stmt_r): Forcefully fold *& if we end up with that.
19477
19478 2008-03-20  Paul Brook  <paul@codesourcery.com>
19479
19480         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
19481         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
19482         linker flags.
19483         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
19484         definition.
19485         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
19486         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
19487
19488 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
19489
19490         * common.opt (Wmudflap): New option.
19491         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
19492         (mx_register_decls): Likewise.
19493         (mudflap_finish_file): Likewise.
19494         * doc/invoke.texi: Document -Wno-mudflap.
19495
19496 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
19497
19498         * c-format.c (replace_format_name_to_system_name): New.
19499         (cmp_attribs): New.
19500         (convert_format_name_to_system_name): New.
19501         (decode_format_attr): Add use of convert_format_name_to_system_name.
19502         (format_types_orig): Add gnu_ prefix to names.
19503         (check_format_info_main): Special treating of \0 escaped names for
19504         supporting multi-character format specifiers as I32, I64.
19505         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
19506         (gnu_target_overrides_format_attributes): New.
19507         * c-format.h: Add structure target_ovr_attr to hold
19508         system specific formatter names.
19509         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
19510         msformat-c.o file to c_target_objs and cxx_target_objs.
19511         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
19512         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
19513         (TARGET_N_FORMAT_TYPES): New.
19514         * config/i386/msformat-c.c: New.
19515         * config/i386/t-cygming: Add build rule for msformat-c.o.
19516         * doc/extend.texi: Add new format names gnu_* and ms_* and
19517         further details.
19518         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
19519
19520 2008-03-20  Ira Rosen  <irar@il.ibm.com>
19521
19522         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
19523         optimizations turned on under -O3.
19524         (ftree-vectorize): Add that the flag is turned on with -O3.
19525
19526 2008-03-20  Ben Elliston  <bje@au.ibm.com>
19527
19528         * regmove.c (try_auto_increment): Fix spelling error in comment.
19529         * final.c (final_scan_insn): Likewise.
19530
19531 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
19532
19533         PR target/14552
19534         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
19535         allocator preferences for "y" and "r" class registers.
19536         ("*mov<mode>_internal"): Ditto.
19537         ("*movv2sf_internal_rex64"): Ditto.
19538         ("*movv2sf_internal"): Ditto.
19539
19540 2008-03-19  Michael Matz  <matz@suse.de>
19541
19542         PR middle-end/35616
19543         * calls.c (expand_call): Check overlap of arguments with call
19544         address for sibcalls.
19545
19546 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
19547
19548         PR target/35496
19549         * stor-layout.c (update_alignment_for_field): Set minimum alignment
19550         of the underlying type of a MS bitfield layout to the natural
19551         alignment of the type.
19552
19553 2008-03-19  Jan Hubicka  <jh@suse.cz>
19554
19555         PR other/35094
19556         * toplev.c (decode_d_option): Handle all CPP flags.
19557         * tree-vrp.c: Update tree_pass descriptors.
19558         * regrename.c: Update tree_pass descriptors.
19559         * fwprop.c: Update tree_pass descriptors.
19560         * doc/invoke.texi: Remove documentation of dropped -d? flags.
19561         * tree-into-ssa.c: Update tree_pass descriptors.
19562         * tree-dump.c: Update tree_pass descriptors.
19563         * tree-complex.c: Update tree_pass descriptors.
19564         * tree-dump.h: Update tree_pass descriptors.
19565         * see.c: Update tree_pass descriptors.
19566         * cgraphbuild.c: Update tree_pass descriptors.
19567         * tracer.c: Update tree_pass descriptors.
19568         * tree-loop-distribution.c: Update tree_pass descriptors.
19569         * cgraph.c: Update tree_pass descriptors.
19570         * postreload-gcse.c: Update tree_pass descriptors.
19571         * postreload.c: Update tree_pass descriptors.
19572         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
19573         * tree-tailcall.c: Update tree_pass descriptors.
19574         * tree-pass.h (tree_opt_pass): Rename to ...
19575         (opt_pass) ... this one; add "type" field and remove letter field.
19576         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
19577         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
19578         all_lowering_passes): Update declaration.
19579         * ipa-cp.c: Update tree_pass descriptors.
19580         * final.c: Update tree_pass descriptors.
19581         * omp-low.c: Update tree_pass descriptors.
19582         * tree-ssa-dse.c: Update tree_pass descriptors.
19583         * ipa-reference.c: Update tree_pass descriptors.
19584         * tree-ssa-uncprop.c: Update tree_pass descriptors.
19585         * auto-inc-dec.c: Update tree_pass descriptors.
19586         * reorg.c: Update tree_pass descriptors.
19587         * cgraphunit.c: Update tree_pass descriptors.
19588         * tree-ssa-copyrename.c: Update tree_pass descriptors.
19589         * tree-ssa-ccp.c: Update tree_pass descriptors.
19590         * df-core.c: Update tree_pass descriptors.
19591         * mode-switching.c: Update tree_pass descriptors.
19592         * tree-nomudflap.c: Update tree_pass descriptors.
19593         * modulo-sched.c: Update tree_pass descriptors.
19594         * ipa-pure-const.c: Update tree_pass descriptors.
19595         * cse.c: Update tree_pass descriptors.
19596         * web.c: Update tree_pass descriptors.
19597         * tree-stdarg.c: Update tree_pass descriptors.
19598         * tree-ssa-math-opts.c: Update tree_pass descriptors.
19599         * tree-ssa-dom.c: Update tree_pass descriptors.
19600         * tree-nrv.c: Update tree_pass descriptors.
19601         * tree-ssa-alias.c: Update tree_pass descriptors.
19602         * loop-init.c: Update tree_pass descriptors.
19603         * gimple-low.c: Update tree_pass descriptors.
19604         * ipa-inline.c: Update tree_pass descriptors.
19605         * tree-ssa-sink.c: Update tree_pass descriptors.
19606         * global.c: Update tree_pass descriptors.
19607         * ifcvt.c: Update tree_pass descriptors.
19608         * jump.c: Update tree_pass descriptors.
19609         * predict.c: Update tree_pass descriptors.
19610         * tree-ssa-loop.c: Update tree_pass descriptors.
19611         * recog.c: Update tree_pass descriptors.
19612         * dse.c: Update tree_pass descriptors.
19613         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
19614         * tree-eh.c: Update tree_pass descriptors.
19615         * regmove.c: Update tree_pass descriptors.
19616         * local-alloc.c
19617         * function.c: Update tree_pass descriptors.
19618         * tree-vectorizer.c: Update tree_pass descriptors.
19619         * gcse.c: Update tree_pass descriptors.
19620         * ipa-type-escape.c: Update tree_pass descriptors.
19621         * tree-if-conv.c: Update tree_pass descriptors.
19622         * init-regs.c: Update tree_pass descriptors.
19623         * ipa.c: Update tree_pass descriptors.
19624         * tree-ssa-phiopt.c: Update tree_pass descriptors.
19625         * rtl-factoring.c: Update tree_pass descriptors.
19626         * lower-subreg.c: Update tree_pass descriptors.
19627         * bt-load.c: Update tree_pass descriptors.
19628         * tree-dfa.c: Update tree_pass descriptors.
19629         * except.c: Update tree_pass descriptors.
19630         * emit-rtl.c: Update tree_pass descriptors.
19631         * cfgexpand.c: Update tree_pass descriptors.
19632         * tree-cfgcleanup.c: Update tree_pass descriptors.
19633         * cfgcleanup.c: Update tree_pass descriptors.
19634         * tree-ssa-pre.c: Update tree_pass descriptors.
19635         * tree-sra.c: Update tree_pass descriptors.
19636         * tree-mudflap.c: Update tree_pass descriptors.
19637         * tree-ssa-copy.c: Update tree_pass descriptors.
19638         * cfglayout.c: Update tree_pass descriptors.
19639         * tree-ssa-forwprop.c: Update tree_pass descriptors.
19640         * tree-ssa-dce.c: Update tree_pass descriptors.
19641         * tree-ssa.c: Update tree_pass descriptors.
19642         * regclass.c: Update tree_pass descriptors.
19643         * integrate.c: Update tree_pass descriptors.
19644         * tree-optimize.c: Update tree_pass descriptors.
19645         * tree-ssa-phiprop.c: Update tree_pass descriptors.
19646         * tree-object-size.c: Update tree_pass descriptors.
19647         * combine.c: Update tree_pass descriptors.
19648         * tree-outof-ssa.c: Update tree_pass descriptors.
19649         * bb-reorder.c: Update tree_pass descriptors.
19650         * stack-ptr-mod.c: Update tree_pass descriptors.
19651         * var-tracking.c: Update tree_pass descriptors.
19652         * tree-profile.c: Update tree_pass descriptors.
19653         * tree-vect-generic.c: Update tree_pass descriptors.
19654         * reg-stack.c: Update tree_pass descriptors.
19655         * sched-rgn.c: Update tree_pass descriptors.
19656         * tree-ssa-structalias.c: Update tree_pass descriptors.
19657         * tree-cfg.c: Update tree_pass descriptors.
19658         * passes.c (current_pass): Update declaration.
19659         (finish_optimization_passes): Update.
19660         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
19661         (register_one_dump_file, register_dump_files_1, next_pass_1):
19662         Update arguments.
19663         (init_optimization_passes): Update handling of new types.
19664         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
19665         * ipa-struct-reorg.c: Update tree_pass descriptors.
19666         * tree-ssa-reassoc.c: Update tree_pass descriptors.
19667         * combine-stack-adj.c: Update tree_pass descriptors.
19668         * cfgrtl.c: Update tree_pass descriptors.
19669         * dce.c: Update tree_pass descriptors.
19670         * tree-ssanames.c: Update tree_pass descriptors.
19671
19672 2008-03-19  Richard Guenther  <rguenther@suse.de>
19673
19674         PR middle-end/35609
19675         * tree-ssa.c (walk_data): New structure.
19676         (warn_uninitialized_var): If not always_executed warn with "maybe"
19677         instead of "is".
19678         (execute_early_warn_uninitialized): Compute post-dominators.
19679         Initialize always_executed before processing each basic block.
19680
19681 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
19682
19683         PR target/35504
19684         * config/i386/i386.c (x86_this_parameter): Calculate correct location
19685         of "this" pointer when "regparm = N" or "fastcall" is in effect.
19686
19687 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19688
19689         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
19690
19691 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
19692
19693         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
19694         is true.
19695         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
19696         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
19697         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
19698         target after ignore has been set, and move there also the commputation
19699         of subtarget and original_target.
19700         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
19701         (LANG_HOOKS_INITIALIZER): Remove it.
19702         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
19703
19704 2008-03-18  Richard Guenther  <rguenther@suse.de>
19705
19706         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
19707         found an expression with constants, note that in the VN for the lhs.
19708         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
19709         fold them to constants if possible.  Run cleanup_cfg if done so.
19710         (execute_pre): Return todo.
19711         (do_pre): Likewise.
19712         (execute_fre): Likewise.
19713         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
19714         of constants.
19715         (get_prop_source_stmt): Look through pointer conversions.
19716
19717 2008-03-18  Jan Hubicka  <jh@suse.cz>
19718
19719         * tree-pretty-print.c: Include predict.h.
19720         (dump_generic_node): Dump predictor.
19721         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
19722         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
19723         * gimple-low.c (lower_stmt): Likewise.
19724         * expr.c (expand_expr_real): Likewise.
19725         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
19726         them.
19727         (build_predict_expr, build_predict_expr): New.
19728         * predict.h (predictor_name, build_predict_expr): Update.
19729         * c-typeck.c (c_finish_bc_stmt): Add prediction.
19730         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
19731         * predict.def (PRED_CONTINUE): Update hitrate.
19732         * tree.def (PREDICT_EXPR): Define.
19733         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
19734         do not handle BIND_EXPR.
19735         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
19736         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
19737         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
19738         operands.
19739
19740 2008-03-18  Michael Matz  <matz@suse.de>
19741
19742         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
19743
19744 2008-03-18  Richard Guenther  <rguenther@suse.de>
19745
19746         * tree-gimple.h (is_gimple_invariant_address): Declare.
19747         (is_gimple_constant): Likewise.
19748         * tree-gimple.c (is_gimple_constant): New function.
19749         (is_gimple_invariant_address): Likewise.
19750         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
19751         and is_gimple_invariant_address.
19752         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
19753         previous change.
19754         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
19755         an addressable base.
19756
19757 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
19758
19759         PR middle-end/35611
19760         * gimplify.c (gimplify_expr): Gimplify second operand of
19761         OMP_ATOMIC_LOAD.
19762
19763 2008-03-17  Richard Guenther  <rguenther@suse.de>
19764
19765         PR tree-optimization/19637
19766         * fold-const.c (fold_unary): Remove restrictions of removing
19767         intermediate pointer-conversions (P2)(P1)P0.
19768         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
19769         conversion to void pointer.
19770         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
19771
19772 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
19773
19774         PR debug/31510
19775         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
19776         emulated thread local variables.
19777
19778 2008-03-16  Richard Guenther  <rguenther@suse.de>
19779
19780         PR middle-end/35607
19781         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
19782         expand TREE_INVARIANT operations that are not gimple invariant.
19783
19784 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
19785
19786         * doc/extend.texi (Alignment): Say that the ABI controls
19787         the __alignof__ for non-strict-alignment targets rather
19788         than being a recommendation.
19789
19790 2008-03-15  Paul Brook  <paul@codesourcery.com>
19791
19792         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
19793         annotations.
19794         (arm_output_fn_unwind): Mark functions that can not be unwound.
19795
19796 2008-03-15  Paul Brook  <paul@codesourcery.com>
19797
19798         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
19799         extension instructions.
19800
19801 2008-03-15  Richard Guenther  <rguenther@suse.de>
19802
19803         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
19804         and fold constant aggregate refs.
19805         (fold_const_aggregate_ref): Handle string constants
19806         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
19807         (evaluate_stmt): Simplify now that ccp_fold folds constant
19808         aggregate refs.
19809
19810 2008-03-15  Paul Brook  <paul@codesourcery.com>
19811
19812         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
19813         (extzv): Use gen_extzv_t2.
19814         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
19815
19816 2008-03-15  Richard Guenther  <rguenther@suse.de>
19817
19818         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
19819         (fold_const_aggregate_ref): Likewise.
19820         (get_value): Return NULL if we don't have any values.
19821         (ccp_finalize): Set const_val to NULL after freeing it.
19822         * tree-flow.h (get_symbol_constant_value): Declare.
19823         (fold_const_aggregate_ref): Likewise.
19824         * tree-ssa-sccvn.c (try_to_simplify): Use them.
19825
19826 2008-03-15  Richard Guenther  <rguenther@suse.de>
19827
19828         PR middle-end/35593
19829         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
19830         to not produce negative array indices if not allowed.  Add
19831         parameter to indicate that.
19832         (maybe_fold_offset_to_component_ref): Allow negative array
19833         indices only for the first member of a structure.
19834         (maybe_fold_offset_to_reference): Allow negative array indices.
19835         (maybe_fold_stmt_addition): Likewise.
19836
19837 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
19838             Anatoly Sokolov <aesok@post.ru>
19839
19840         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
19841         (avr_arch): Add ARCH_AVR6.
19842         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
19843         (initial_elimination_offset): Initialize and use 'avr_pc_size'
19844         instead of fixed value 2.
19845         (print_operand_address): Use gs() asm specifier instead of pm().
19846         (avr_assemble_integer): (Ditto.).
19847         (avr_output_addr_vec_elt): (Ditto.).
19848         (print_operand): Handle "!" code.
19849         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
19850         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
19851         (AVR_HAVE_EIJMP_EICALL): Define.
19852         (AVR_3_BYTE_PC): Redefine.
19853         (AVR_2_BYTE_PC): (Ditto.).
19854         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
19855         (LINK_SPEC): Add atmega2560 and atmega2561.
19856         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
19857         (crtm2561.o).
19858         * config/avr/avr.md (call_insn): Use eicall instead of icall
19859         for 3 byte PC devices.
19860         (call_value_insn): (Ditto.).
19861         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
19862         (indirect_jump): Use only for for 2 byte PC devices.
19863         (*tablejump): (Ditto.).
19864         (*indirect_jump_avr6): Add insn.
19865         (*tablejump_rjmp): Don't use for 3 byte PC devices.
19866         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
19867         instead of ijmp for 3 byte PC devices.
19868         (__tablejump2__): (Ditto.).
19869         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
19870         (MULITLIB_DIRNAMES): (Ditto.).
19871         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
19872
19873 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
19874
19875         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
19876         "sse2_umulsidi3".  Use V1DI mode for operand 0.
19877         ("mmx_psadbw"): Use V1DI mode for operand 0.
19878         * config/i386/i386-modes.def (V1SI): New vector mode.
19879         * config/i386/i386.c (struct builtin_description)
19880         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
19881         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
19882         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
19883         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
19884         v1di_ftype_v8qi_v8qi type.
19885         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
19886
19887         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
19888         __builtin_ia32_pmuludq]: Fix the mode of return value.
19889
19890 2008-03-15  Richard Guenther  <rguenther@suse.de>
19891
19892         PR middle-end/35595
19893         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
19894         being a PHI_NODE.
19895
19896 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
19897
19898         * doc/invoke.texi (Option Summary, Xtensa Options): Document
19899         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
19900         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
19901         unless TARGET_SERIALIZE_VOLATILE is enabled.
19902         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
19903         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
19904         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
19905
19906 2008-03-14  Richard Guenther  <rguenther@suse.de>
19907
19908         PR tree-optimization/34172
19909         * tree-flow.h (refs_may_alias_p): Declare.
19910         (get_single_def_stmt): Likewise.
19911         (get_single_def_stmt_from_phi): Likewise.
19912         (get_single_def_stmt_with_phi): Likewise.
19913         * tree-dfa.c (refs_may_alias_p): New function.
19914         (get_single_def_stmt): Likewise.
19915         (get_single_def_stmt_from_phi): Likewise.
19916         (get_single_def_stmt_with_phi): Likewise.
19917         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
19918         (vn_reference_lookup_1): New helper function.
19919         (vn_reference_lookup): Walk the virtual use-def chain to
19920         continue searching for a match if the def does not alias the
19921         reference we are looking for.
19922
19923 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
19924
19925         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
19926         archive and Perzl.  Update The Written Word listing.
19927
19928 2008-03-14  Richard Guenther  <rguenther@suse.de>
19929
19930         PR tree-optimization/34043
19931         PR tree-optimization/33989
19932         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
19933         when doing FRE.
19934         (bitmap_find_leader): Use extra argument to verify dominance
19935         relationship inside a basic-block.
19936         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
19937         (find_leader_in_sets): Adjust.
19938         (create_component_ref_by_pieces): Take extra argument for
19939         dominance check, handle lookup failures.
19940         (find_or_generate_expression): Likewise.
19941         (create_expression_by_pieces): Likewise.
19942         (insert_into_preds_of_block): Adjust.
19943         (create_value_expr_from): If asked for, verify all operands
19944         are in the blocks AVAIL_OUT set.
19945         (make_values_for_stmt): Check for SSA_NAMEs that are life
19946         over an abnormal edge.
19947         (compute_avail): Remove such check.
19948         (do_SCCVN_insertion): New function.
19949         (eliminate): If we do not find a leader suitable for replacement
19950         insert a replacement expression from SCCVN if available.
19951         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
19952         (struct vn_ssa_aux): Add needs_insertion flag.
19953         * tree-ssa-sccvn.c (may_insert): New global flag.
19954         (copy_reference_ops_from_ref): Value-number union member access
19955         based on its size, not type and member if insertion is allowed.
19956         (visit_reference_op_load): For a weak match from union type
19957         punning lookup a view-converted value and insert a SSA_NAME
19958         for that value if that is not found.
19959         (visit_use): Make dumps shorter.  Do not disallow value numbering
19960         SSA_NAMEs that are life over an abnormal edge to constants.
19961         (free_scc_vn): Release inserted SSA_NAMEs.
19962         (run_scc_vn): New flag to specify whether insertion is allowed.
19963         Process SSA_NAMEs in forward order.
19964         * tree-ssa-loop-im.c (for_each_index): Handle invariant
19965         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
19966         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
19967         pointer type to/from integral types that do not change the
19968         precision to regular conversions.
19969
19970 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
19971
19972         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
19973         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
19974         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
19975         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
19976         input arguments and the mode of return value.  Built-in functions
19977         that operate on whole 64-bit MMX register now use V1DI mode.
19978
19979 2008-03-13  Alon Dayan  <alond@il.ibm.com>
19980             Olga Golovanevsky  <olga@il.ibm.com>
19981
19982         PR tree-optimization/35041
19983         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
19984         to locate the right position in a statement.
19985
19986 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
19987
19988         PR target/34000
19989         PR target/35553
19990         * config/i386/xmmintrin.h:  Change all static inline functions to
19991         extern inline and add __gnu_inline__ attribute.
19992         * config/i386/bmintrin.h: Ditto.
19993         * config/i386/smmintrin.h: Ditto.
19994         * config/i386/tmmintrin.h: Ditto.
19995         * config/i386/mmintrin-common.h: Ditto.
19996         * config/i386/ammintrin.h: Ditto.
19997         * config/i386/emmintrin.h: Ditto.
19998         * config/i386/pmmintrin.h: Ditto.
19999         * config/i386/mmintrin.h: Ditto.
20000         * config/i386/mm3dnow.h: Ditto.
20001
20002 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
20003
20004         PR middle-end/35185
20005         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
20006         (lower_omp_2): New function.
20007         (lower_omp_1, lower_omp): Rewritten.
20008
20009 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
20010
20011         PR 35054
20012         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
20013         with the phrase "Microsoft Windows compilers".
20014         (Push/Pop Macro Pragmas): New subsection. Document
20015         #pragma push_macro and pragma pop_macro.
20016
20017 2008-03-12  Paul Brook  <paul@codesourcery.com>
20018
20019         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
20020
20021 2008-03-12  Paul Brook  <paul@codesourcery.com>
20022
20023         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
20024         (thumb2_alusi3_short): Exclude PLUS and MINUS.
20025         (thumb2_addsi_shortim): Rename ...
20026         (thumb2_addsi_short): ... to this.  Allow register operands.
20027         (thumb2_subsi_short): New pattern.
20028         (thumb2_one_cmplsi2_short,
20029         thumb2_negsi2_short): New patterns and peepholes.
20030
20031 2008-03-12  Paul Brook  <paul@codesourcery.com>
20032
20033         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
20034
20035 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
20036
20037         * config/i386/i386.md (int_cond): New code iterator.
20038         (fp_cond): Ditto.
20039         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
20040         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
20041         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
20042         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
20043         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
20044         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
20045         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
20046         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
20047
20048 2008-03-12  Paul Brook  <paul@codesourcery.com>
20049
20050         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
20051         instead of {arm,thumb}_compute_save_reg_mask.
20052         (output_return_instruction): Ditto.
20053         (thumb_unexpanded_epilogue): Ditto.
20054         (thumb1_expand_prologue): Ditto.
20055         (thumb1_output_function_prologue): Ditto.
20056         (arm_set_return_address): Ditto.
20057         (thumb_set_return_address): Ditto.
20058         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
20059         regs to achieve stack alignment.
20060         (thumb1_compute_save_reg_mask): Fix compiler warning.
20061         (arm_output_epilogue): Use offsets->saved_regs_mask.
20062         Adjust stack pointer by poping call clobered registers.
20063         (arm_expand_prologue): Use offsets->saved_regs_mask.
20064         Adjust stack pointer by pushing extra registers.
20065         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
20066
20067 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
20068
20069         PR tree-opt/35422
20070         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
20071         conversion to the operands of a multiplication.
20072
20073 2008-03-12  Richard Guenther  <rguenther@suse.de>
20074
20075         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
20076         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
20077         * timevar.def (TV_TREE_PHIPROP): Add.
20078         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
20079         pass description.  Use TV_TREE_PHIPROP.
20080         * tree-ssa-forwprop.c: Remove phiprop code.
20081
20082 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
20083
20084         PR middle-end/35549
20085         * omp-low.c (maybe_lookup_decl): Constify first argument.
20086         (use_pointer_for_field): Change last argument from bool to
20087         omp_context *.  Disallow shared copy-in/out in nested
20088         parallel if decl is shared in outer parallel too.
20089         (build_outer_var_ref, scan_sharing_clauses,
20090         lower_rec_input_clauses, lower_copyprivate_clauses,
20091         lower_send_clauses, lower_send_shared_vars): Adjust callers.
20092
20093 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
20094             Ira Rosen  <irar@il.ibm.com>
20095
20096         * tree-vectorizer.c (free_stmt_vec_info): New function.
20097         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
20098         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
20099         * tree-vectorizer.h (free_stmt_vec_info): Declare.
20100         * tree-vect-transform.c (vectorizable_conversion): Free
20101         vec_oprnds0 if it was allocated.
20102         (vect_permute_store_chain): Remove unused VECs.
20103         (vectorizable_store): Free VECs that are allocated in the..
20104         function.
20105         (vect_transform_strided_load, vectorizable_load): Likewise.
20106         (vect_remove_stores): Simplify the code.
20107         (vect_transform_loop): Move code to vect_remove_stores().
20108         Call vect_remove_stores() and free_stmt_vec_info().
20109
20110 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20111
20112         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
20113         TARGET_HPUX.  Revise comment.
20114         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
20115         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
20116         Use sr4 variant of `be' instruction when not generating PIC code.
20117         (attr_length_call): Adjust for above change.
20118
20119 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20120
20121         * ipa-reference.c (static_execute): Remove module_statics_const and
20122         associated setting code.
20123
20124 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
20125
20126         PR target/35540
20127         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
20128         predicate for operand 1.
20129         (paritysi2_cmp): Use register_operand predicate for operand 2.
20130         Use earlyclobber modifier for operand 1.  Remove support for
20131         memory operands.
20132         (paritydi2_cmp): Use register_operand predicate for operand 3.
20133         Use earlyclobber modifier for operand 1.  Remove support for
20134         memory operands.
20135
20136 2008-03-11  Paul Brook  <paul@codesourcery.com>
20137             Vladimir Prus  <vladimir@codesourcery.com>
20138
20139         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
20140         (arm_compute_save_reg0_reg12_mask): Always
20141         check if register 11 must be saved.  Always safe hard frame pointer
20142         when frame_pointer_needeed.
20143         (arm_compute_save_reg_mask): Save IP and PC
20144         only with apcs frames.
20145         (arm_output_epilogue): Adjust Thumb2 codepath to
20146         be also invoked and work for ARM non-apcs frames.
20147         (arm_expand_prologue): Don't bother saving IP
20148         for non-apcs frame, since it's not clobbered by
20149         prologue code.  Implement non-apcs frame
20150         layout.
20151
20152 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
20153
20154         PR rtl-optimization/35281
20155         * expr.c (convert_move): Use a new pseudo for the intermediate
20156         from_mode->word_mode result.
20157
20158 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
20159
20160         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
20161         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
20162         * toplev.c (compile_file): Don't call it.
20163
20164 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
20165
20166         PR middle-end/35526
20167         * expr.c (store_expr): Call emit_block_move if the mode
20168         of "temp" RTX is BLKmode.
20169
20170 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20171             Richard Guenther  <rguenther@suse.de>
20172
20173         PR tree-optimization/31358
20174         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
20175         the step with a NULL_TREE.
20176         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
20177         to sizetype if type is a pointer type.
20178         (add_candidate_1): Don't convert the base and step to
20179         the generic type if the orginal type is a pointer type.
20180         (add_iv_value_candidates): Use sizetype for the step
20181         if type is a pointer type.
20182         (cand_value_at): Likewise.
20183         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
20184         for pointer types.
20185         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
20186         Don't convert the tem affine to the type.
20187         (add_elt_to_tree): Use sizetype for the step if a pointer.
20188         Use POINTER_PLUS_EXPR for pointers.
20189         (aff_combination_to_tree): Use sizetype for the step if a
20190         pointer.
20191
20192 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
20193
20194         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
20195         Remove commutativity hint.
20196
20197 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
20198
20199         PR c/35438
20200         PR c/35439
20201         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
20202         errorneous type.  Check that v is a VAR_DECL.
20203
20204         PR middle-end/35099
20205         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
20206
20207 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
20208
20209         PR tree-optimization/35494
20210         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
20211         may be overriden at link and run time.
20212
20213 2008-03-10  Richard Guenther  <rguenther@suse.de>
20214
20215         PR tree-optimization/34677
20216         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
20217         (poolify_tree): Likewise.
20218         (modify_expr_template): Likewise.
20219         (poolify_modify_stmt): Likewise.
20220         (insert_fake_stores): Handle all component-ref style stores
20221         in addition to INDIRECT_REF.  Also handle complex types.
20222         Do not poolify the inserted load.
20223         (realify_fake_stores): Do not rebuild the tree but only
20224         make it a SSA_NAME copy.
20225         (init_pre): Remove initialzation of modify_expr_template.
20226         Do not allocate modify_expr_node_pool.
20227         (fini_pre): Do not free modify_expr_node_pool.
20228
20229 2008-03-10  Paul Brook  <paul@codesourcery.com>
20230
20231         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
20232         to avoid conflicts.
20233
20234 2008-03-10  Paul Brook  <paul@codesourcery.com>
20235             Mark Shinwell  <shinwell@codesourcery.com>
20236
20237         * config/arm/cortex-r4.md: New.
20238         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
20239         insn attributes.
20240         * config/arm/arm.md: Include cortex-r4.md.
20241         (insn): Add smmls, sdiv and udiv values.
20242         (generic_sched): Don't use generic scheduling for Cortex-R4.
20243         (arm_issue_rate): New function.
20244         (TARGET_SCHED_ISSUE_RATE): Define.
20245
20246 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
20247
20248         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
20249
20250 2008-03-10  Richard Guenther  <rguenther@suse.de>
20251
20252         * tree-ssa-pre.c (get_sccvn_value): Simplify.
20253         (compute_avail): Do not add stmt uses to AVAIL_OUT.
20254
20255 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
20256
20257         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
20258         Set default to true.
20259
20260 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20261
20262         * c.opt (Wsynth): Deprecate.
20263         * doc/invoke.texi (Option Summary, Warning Options): Document
20264         -Wno-format-contains-nul.
20265
20266 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
20267
20268         PR target/35496
20269         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
20270         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
20271
20272 2008-03-09  Ira Rosen  <irar@il.ibm.com>
20273
20274         * config/rs6000/rs6000.c (builtin_description): Rename vector
20275         left shift operations.
20276         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
20277         (altivec_vsl<VI_char>): Rename to ...
20278         (ashl<mode>3): ... new name.
20279         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
20280         gen_ashlv4si3.
20281         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
20282
20283 2008-03-08  Richard Guenther  <rguenther@suse.de>
20284
20285         * coverage.h (tree_coverage_counter_addr): Declare.
20286         * coverage.c (tree_coverage_counter_addr): New function.
20287         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
20288         before using again.
20289         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
20290         (tree_gen_one_value_profiler): Likewise.
20291         (tree_gen_ic_profiler): Likewise.
20292         (tree_gen_average_profiler): Likewise.
20293         (tree_gen_ior_profiler): Likewise.
20294
20295 2008-03-08  Richard Guenther  <rguenther@suse.de>
20296
20297         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
20298         (vn_binary_op_insert): Likewise.
20299         (vn_unary_op_lookup): Likewise.
20300         (vn_unary_op_insert): Likewise.
20301         (vn_nary_op_lookup): Declare.
20302         (vn_nary_op_insert): Likewise.
20303         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
20304         and binary hashes, use a single obstack for unary_op_pool
20305         and binary_op_pool.
20306         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
20307         a single struct vn_nary_op_s.  Store tree code length and
20308         a variable number of operands.
20309         (struct vn_reference_op_struct): Remove unused op2.
20310         (vn_reference_op_eq): Do not compare op2.
20311         (vn_reference_op_compute_hash): Do not compute hash of op2.
20312         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
20313         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
20314         with vn_nary_op_compute_hash.
20315         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
20316         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
20317         vn_nary_op_lookup.
20318         (vn_unary_op_insert, vn_binary_op_insert): Replace with
20319         vn_nary_op_insert.
20320         (visit_unary_op): Call nary functions.
20321         (visit_binary_op): Likewise.
20322         (process_scc): Adjust for struct vn_tables_s changes.
20323         (allocate_vn_table): Likewise.
20324         (free_vn_table): Likewise.
20325         * tree-vn.c (vn_add): Call nary functions.
20326         (vn_lookup): Likewise.
20327
20328 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
20329
20330         PR target/35498
20331         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
20332         wdst back after sync_compare_and_swapqhi_internal.
20333
20334 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
20335
20336         PR target/22152
20337         * config/i386/i386-modes.def (V1DI): New vector mode.
20338         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
20339         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
20340         (MMXMODE248): Ditto.
20341         (MMXMODE): Add V1DI mode.
20342         (mmxvecsize): Change DI mode to V1DI mode.
20343         ("mov<mode>): Use MMXMODEI8 mode iterator.
20344         ("*mov<mode>_internal_rex64"): Ditto.
20345         ("*mov<mode>_internal"): Ditto.
20346         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
20347         ("mmx_sub<mode>3"): Ditto.
20348         ("mmx_adddi3"): Remove insn pattern.
20349         ("mmx_subdi3"): Ditto.
20350         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
20351         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
20352         ("mmx_ashl<mode>3"): Ditto.
20353         ("mmx_lshrdi3"): Remove insn pattern.
20354         ("mmx_ashldi3"): Ditto.
20355         * config/i386/i386.c (classify_argument): Handle V1DImode.
20356         (function_arg_advance_32): Ditto.
20357         (function_arg_32): Ditto.
20358         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
20359         mmx_addv1di3 insn pattern.
20360         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
20361         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
20362         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
20363         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
20364         Remove definitions of built-in functions.
20365         (V1DI_type_node): New node.
20366         (v1di_ftype_v1di_int): Ditto.
20367         (v1di_ftype_v1di_v1di): Ditto.
20368         (v2si_ftype_v2si_si): Ditto.
20369         (v4hi_ftype_v4hi_di): Remove node.
20370         (v2si_ftype_v2si_di): Ditto.
20371         (ix86_init_mmx_sse_builtins): Handle V1DImode.
20372         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
20373         Redefine builtins using def_builtin_const with *_ftype_*_int node.
20374         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
20375         Add new builtins using def_builtin_const.
20376         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
20377         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
20378         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
20379         * config/i386/mmintrin.h (__v1di): New typedef.
20380         (_mm_add_si64): Cast arguments to __v1di type.
20381         (_mm_sub_si64): Ditto.
20382         (_mm_sll_pi16): Cast __count to __v4hi type.
20383         (_mm_sll_pi32): Cast __count to __v2si type.
20384         (_mm_sll_si64): Cast arguments to __v1di type.
20385         (_mm_srl_pi16): Cast __count to __v4hi type.
20386         (_mm_srl_pi32): Cast __count to __v2si type.
20387         (_mm_srl_si64): Cast arguments to __v1di type.
20388         (_mm_sra_pi16): Cast __count to __v4hi type.
20389         (_mm_sra_pi32): Cast __count to __v2si type.
20390         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
20391         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
20392         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
20393         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
20394         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
20395         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
20396         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
20397         (_mm_srai_pi32): Use __builtin_ia32_psradi.
20398         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
20399         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
20400         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
20401         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
20402
20403 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
20404
20405         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
20406
20407 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
20408
20409         PR target/35373
20410         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
20411         reg+const addressing for Altivec modes.  Don't generate reg+reg
20412         addressing for TFmode or TDmode quantities.
20413
20414 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
20415
20416         * c-common.c (vector_types_convertible_p): Call langhook
20417         instead of comptypes.
20418
20419 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20420
20421         PR tree-opt/35402
20422         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
20423         integral and scalar float variables which have a
20424         NULL DECL_INITIAL.
20425
20426 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
20427
20428         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
20429         dwarf_register_span hook when emitting unwind information for
20430         register-to-memory saves.
20431         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
20432         (rs6000_frame_related): Remove call to spe_synthesize_frame.
20433
20434 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
20435
20436         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
20437         for the same VAR_DECL.
20438
20439 2008-03-06  Tom Tromey  <tromey@redhat.com>
20440
20441         * treelang: Delete.
20442         * doc/standards.texi (Standards): Don't mention treelang.
20443         * doc/invoke.texi (Overall Options): Don't mention treelang.
20444         * doc/install.texi (Prerequisites): Don't mention bison or
20445         treelang.
20446         (Configuration): Don't mention treelang.
20447         (Building): Likewise.
20448         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
20449
20450 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
20451
20452         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
20453         word-extractions out of a multi-word object.
20454
20455 2008-03-06  Richard Guenther  <rguenther@suse.de>
20456
20457         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
20458         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
20459         result type and precision.
20460         * expr.c (get_inner_reference): Set unsignedp based on the result
20461         type of BIT_FIELD_REF.
20462         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
20463         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
20464         (try_instantiate_multiple_fields): Likewise.  Use the correct type
20465         for BIT_FIELD_REF.
20466         (sra_build_assignment): Likewise.
20467         (sra_build_elt_assignment): Likewise.
20468         (sra_explode_bitfield_assignment): Likewise.
20469         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
20470         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
20471         set BIT_FIELD_REF_UNSIGNED.
20472         (vectorizable_load): Likewise.
20473
20474 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
20475
20476         * cse.c (cse_extended_basic_block): Invalidate artificial defs
20477         at bb start.
20478
20479 2008-03-06  Richard Guenther  <rguenther@suse.de>
20480
20481         * alias.c (struct alias_set_entry): Move has_zero_child field
20482         to pack with alias_set.
20483
20484 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
20485
20486         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
20487         32bit host.
20488
20489 2008-03-05  Ian Lance Taylor  <iant@google.com>
20490
20491         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
20492
20493 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
20494
20495         * fwprop.c (update_df): Support width and offset parameters of
20496         df_ref_create.
20497         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
20498         global_conflicts): Change DF_REF_EXTRACT to either
20499         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20500         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20501         * df-scan.c (df_ref_record, df_defs_record,
20502         df_ref_create_structure, df_def_record_1, df_uses_record,
20503         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
20504         df_bb_refs_collect, df_entry_block_defs_collect,
20505         df_exit_block_uses_collect): Support new width and offset fields.
20506         (ref_extract_pool): New storage pool.
20507         (df_free_ref): New function.
20508         (df_reg_chain_unlink, df_free_collection_rec,
20509         df_sort_and_compress_refs): Call df_free_ref.
20510         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
20511         of df_ref_extract.
20512         (df_ref_create_structure): Allocate df_ref_extract if offset and
20513         width fields are used.
20514         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
20515         (df_uses_record): Get offset and width from ZERO_EXTRACT
20516         and SIGN_EXTRACT.
20517         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
20518         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20519         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20520         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
20521         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20522         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20523         (df_ref_extract): New structure.
20524         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
20525         (df_ref_create): Add width and offset parameters.
20526
20527 2008-03-05  Richard Guenther  <rguenther@suse.de>
20528
20529         * tree-ssa-structalias.c (get_constraint_for_component_ref):
20530         Use ranges_overlap_p.
20531         (offset_overlaps_with_access): Rename
20532         to ranges_overlap_p and move ...
20533         * tree-flow-inline.h (ranges_overlap_p): ... here.
20534
20535         * tree.h (get_inner_reference, handled_component_p): Update
20536         comments.
20537
20538         * tree.h (record_component_aliases, get_alias_set,
20539         alias_sets_conflict_p, alias_sets_must_conflict_p,
20540         objects_must_conflict_p): Move declarations ...
20541         * alias.h (record_component_aliases, get_alias_set,
20542         alias_sets_conflict_p, alias_sets_must_conflict_p,
20543         objects_must_conflict_p): ... here.
20544         Include coretypes.h.
20545         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
20546
20547 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
20548
20549         * cfg.c: Include tree-flow.h.
20550         (remove_edge_raw): Call redirect_edge_var_map_clear.
20551         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
20552         * tree-flow-inline.h (redirect_edge_var_map_def): New.
20553         (redirect_edge_var_map_result): New.
20554         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
20555         PENDING_STMT use with redirect_edge_var_map_*.
20556         * tree-ssa.c (edge_var_maps): New definition.
20557         (redirect_edge_var_map_add): New.
20558         (redirect_edge_var_map_clear): New.
20559         (redirect_edge_var_map_dup): New.
20560         (redirect_edge_var_map_vector): New.
20561         (redirect_edge_var_map_destroy): New.
20562         (ssa_redirect_edge): Replace PENDING_STMT use with
20563         redirect_edge_var_map_*.
20564         (flush_pending_stmts): Same.
20565         (delete_tree_ssa): Destroy edge var map.
20566         * tree-flow.h (struct _edge_var_map): New.
20567         Define edge_var_map vector type.
20568         Declare redirect_edge_var_map_* prototypes.
20569         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
20570         * tree-cfg.c (reinstall_phi_args): Replace
20571         PENDING_STMT use with redirect_edge_var_map_*.
20572
20573 2008-03-05  Richard Guenther  <rguenther@suse.de>
20574
20575         PR tree-optimization/35472
20576         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
20577         whose single use_stmt has a overlapping set of loaded and
20578         stored symbols as that use_stmt might be a noop assignment then.
20579
20580 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
20581
20582         * gthr-rtems.h: Implement __gthread_mutex_destroy.
20583
20584 2008-03-05  Richard Guenther  <rguenther@suse.de>
20585
20586         PR c++/35336
20587         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
20588         should be constants.
20589         * tree-cfg.c (verify_expr): Verify it.
20590         * fold-const.c (fold_truthop): Remove code generating
20591         BIT_FIELD_REFs of structure bases.
20592         (fold_binary): Likewise.
20593         (fold_ternary): Position and size of BIT_FIELD_REFs are
20594         always host integers.
20595         (make_bit_field_ref): Remove.
20596         (optimize_bit_field_compare): Remove.
20597         (all_ones_mask_p): Remove.
20598
20599 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
20600
20601         PR gcc/33009
20602         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
20603         (split_block_and_df_analyze): New. Split basic block and rebuild
20604         dataflow.
20605         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
20606         SPLIT_BLOCK.
20607         (split_pattern_seq): Likewise.
20608         (erase_matching_seqs): Likewise.
20609         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
20610
20611 2008-03-04  Geoff Keating  <geoffk@apple.com>
20612
20613         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
20614         declaration and code.
20615         (tree_invalid_nonnegative_warnv_p): Likewise.
20616
20617 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
20618
20619         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
20620         examples.  Truncate option-names then causing overfull hbox.
20621
20622 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20623
20624         PR target/35222
20625         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
20626         on hpux10.
20627         * configure: Rebuilt.
20628
20629 2008-03-04  Rafael Espíndola  <espindola@google.com>
20630
20631         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
20632         (tree_unary_nonnegative_warnv_p): New.
20633         (tree_binary_nonnegative_warnv_p): New.
20634         (tree_single_nonnegative_warnv_p): New.
20635         (tree_invalid_nonnegative_warnv_p): New.
20636         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
20637
20638 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20639
20640         PR 28322
20641         * opts.c (handle_option): Postpone 'unknown option' errors only for
20642         warning options.
20643
20644 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
20645
20646         PR target/35453
20647         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
20648         (_SIDD_XXX): This.
20649
20650 2008-03-04  Rafael Espíndola  <espindola@google.com>
20651
20652         * fold-const.c (tree_unary_nonzero_warnv_p): New.
20653         (tree_binary_nonzero_warnv_p): New.
20654         (tree_single_nonzero_warnv_p): New.
20655         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
20656
20657 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
20658
20659         PR middle-end/35456
20660         * fold-const.c (fold_cond_expr_with_comparison): Prevent
20661         transformations for modes that have signed zeros.
20662         * ifcvt.c (noce_try_abs): Ditto.
20663
20664 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
20665
20666         * config/i386/i386.c (override_options): Force
20667         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
20668
20669 2008-03-04  Jan Hubicka  <jh@suse.cz>
20670
20671         PR c++/35262
20672         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
20673         in last commit.
20674
20675 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
20676
20677         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
20678         label to probe the stack.
20679
20680 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
20681
20682         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
20683         (__gthr_win32_mutex_destroy): Declare.
20684         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
20685         __gthr_win32_mutex_destroy.
20686         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
20687
20688 2008-03-03  Jan Hubicka  <jh@suse.cz>
20689
20690         PR c++/35262
20691         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
20692         aggressive on inlining cold calls.
20693
20694 2008-03-03  Richard Guenther  <rguenther@suse.de>
20695
20696         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
20697         struct copies into the expression table.
20698         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
20699         (try_to_simplify): Likewise.
20700         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
20701         integral and pointer arguments which do not change the
20702         precision to NOP_EXPRs.
20703         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
20704         VIEW_CONVERT_EXPR case.
20705
20706 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
20707
20708         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
20709         defined in a loop at depth 0 is invariant.
20710         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
20711         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
20712         be called at loop depth 0.
20713
20714 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
20715
20716         PR driver/35420
20717         * gcc.c (process_command): Update copyright notice dates.
20718         * gcov.c (print_version): Likewise.
20719         * gcov-dump.c (print_version): Likewise.
20720         * mips-tfile.c (main): Likewise.
20721         * mips-tdump.c (main): Likewise.
20722
20723 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20724
20725         PR 24924
20726         * c-common.c (flag_permissive): Delete.
20727         (constant_expression_warnings): Check flags first.
20728         (constant_expression_error): New.
20729         * c-common.h (flag_permissive): Delete.
20730         (constant_expression_error): Declare.
20731         * flags.h (flag_permissive): Declare. Update description.
20732         * diagnostic.c (pedwarn): Update.
20733         (permerror): New.
20734         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
20735         (permissive_error_kind): New.
20736         * toplev.c (flag_permissive): Define. Update description.
20737         * toplev.h (permissive_error_kind): Declare.
20738         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
20739         (pedwarn_c90): Use pedantic_warning_kind.
20740         * c-opts.c (c_common_post_options): flag_permissive does not affect
20741         flag_pedantic_errors.
20742
20743 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
20744
20745         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
20746         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
20747         __absvsi2, __absvDI2): Use unsigned arithmetic.
20748
20749 2008-03-02  Andi Kleen  <ak@suse.de>
20750             Richard Guenther  <rguenther@suse.de>
20751
20752         * struct-equiv.c: Remove file.
20753         * cfg_cleanup.c (condjump_equiv_p): Remove.
20754         * Makefile.in (OBJS-common): Remove struct-equiv.o.
20755         (struct-equiv.o): Remove rule.
20756         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
20757         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
20758         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
20759
20760 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20761
20762         * ifcvt.c (noce_process_if_block): Try to handle only the then
20763         block if the else block exists but isn't suitable.
20764
20765 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
20766
20767         PR gcc/35063
20768         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
20769         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
20770         regression from previous patch.
20771
20772 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
20773
20774         PR gcc/35063
20775         * gthr.h: Add __gthread_mutex_destroy as a function that must be
20776         implemented.
20777         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
20778         * gthr-single.h (__gthread_mutex_destroy): Likewise.
20779         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
20780         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
20781         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
20782         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
20783         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
20784         (__gthread_mutex_destroy_function): Rename to
20785         __gthread_mutex_destroy.
20786         * gthr-dce.h (__gthread_mutex_destroy): Call
20787         pthread_mutex_destroy.
20788         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
20789         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
20790         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
20791
20792 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20793
20794         * df-scan.c (df_ref_chain_change_bb): Simplify.
20795         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
20796         set_block_for_insn if there's any change.
20797         * df.h ((df_insn_change_bb): Fix prototype.
20798         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
20799         df_insn_change_bb, don't call set_block_for_insn.
20800         * emit-rtl.c (reorder_insns): Likewise.
20801         * haifa-sched.c (move_insn): Likewise.
20802
20803 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20804
20805         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
20806
20807 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
20808
20809         * tree-flow-inline.h (next_readonly_imm_use): Return
20810         NULL_USE_OPERAND_P after the end.
20811
20812 2008-03-01  Richard Guenther  <rguenther@suse.de>
20813
20814         PR tree-optimization/35411
20815         * tree-sra.c (sra_build_assignment): Split conversion to
20816         final type to a separate statement if we are not assigning
20817         to a register.
20818
20819 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
20820
20821         * fold-const.c (fold_convertible_p): Correct the logic to follow
20822         that in fold_convert().
20823
20824 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
20825
20826         PR c++/35315
20827         * tree-inline.c (build_duplicate_type): When we make a
20828         duplicate type, make it unique in the canonical types system.
20829
20830 2008-02-29  Tom Tromey  <tromey@redhat.com>
20831
20832         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
20833         input_file_stack_history, input_file_stack_restored): Remove.
20834         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
20835         * input.h (struct file_stack): Remove.
20836         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
20837         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
20838         Likewise.
20839         * diagnostic.h (struct diagnostic_context) <last_module>: Change
20840         type.
20841         (diagnostic_last_module_changed): Add 'map' argument.
20842         (diagnostic_set_last_function): Likewise.
20843         * diagnostic.c (undiagnostic_report_current_module): Iterate using
20844         line map, not input_file_stack.
20845         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
20846
20847 2008-02-29  Paul Brook  <paul@codesourcery.com>
20848
20849         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
20850
20851 2008-02-29  Paul Brook  <paul@codesourcery.com>
20852
20853         * config/arm/ieee754-df.S (muldf3): Use RET macros.
20854
20855 2008-02-29  Richard Guenther  <rguenther@suse.de>
20856
20857         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
20858         vn_lookup_or_add.
20859         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
20860         value for comparing for a store match.
20861         (simplify_unary_expression): Do nothing for SSA_NAMEs.
20862         (try_to_simplify): Do not do a full-blown reference lookup.
20863
20864 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
20865
20866         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
20867         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
20868
20869         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
20870
20871 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
20872
20873         * tree-loop-linear.c (try_interchange_loops): Compare memory access
20874         strides against cache sizes.
20875
20876 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
20877
20878         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
20879         constant to fpul.
20880
20881 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
20882
20883         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
20884         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
20885         is smaller than the original promoted value.
20886         (simplify_subreg): If OP is a SUBREG, try to preserve its
20887         SUBREG_PROMOTED_VAR_P information.
20888
20889 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
20890
20891         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
20892         (VN_INFO_GET): Allocate new objects on the obstack.
20893         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
20894         for rpo_numbers_temp, for consistency.
20895         (free_scc_vn): Free the obstack.
20896
20897 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
20898
20899         * doc/invoke.texi: Document -ftree-loop-distribution.
20900         * tree-loop-distribution.c: New.
20901         * tree-pass.h (pass_loop_distribution): New.
20902         * graphds.h (struct graph): Add htab_t indices.
20903         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
20904         * tree-vectorizer.c (rename_variables_in_loop): Extern.
20905         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
20906         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
20907         * tree-data-ref.c (debug_data_dependence_relations): New.
20908         (dump_data_dependence_relation): Also print data references.
20909         (free_data_ref): Extern.
20910         (same_access_functions): Moved...
20911         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
20912         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
20913         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
20914         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
20915         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
20916         (stmts_from_loop): Skip LABEL_EXPR.
20917         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
20918         New.
20919         (build_rdg): Initialize rdg->indices htab.
20920         (free_rdg, stores_from_loop, ref_base_address,
20921         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
20922         have_similar_memory_accesses_1, ref_base_address_1,
20923         remove_similar_memory_refs): New.
20924         * tree-data-ref.h: Depend on tree-chrec.h.
20925         (debug_data_dependence_relations, free_data_ref): Declared.
20926         (same_access_functions): ... here.
20927         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
20928         New.
20929         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
20930         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
20931         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
20932         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
20933         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
20934         rdg_vertex_for_stmt): Declared.
20935         (struct rdg_edge): Add level.
20936         (RDGE_LEVEL): New.
20937         (free_rdg, stores_from_loop, remove_similar_memory_refs,
20938         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
20939         Declared.
20940         (rdg_has_similar_memory_accesses): New.
20941         * tree-vect-analyze.c: Remove unused static decls.
20942         * lambda.h (dependence_level): New.
20943         * common.opt (ftree-loop-distribution): New.
20944         * tree-flow.h (mark_virtual_ops_in_bb,
20945         slpeel_tree_duplicate_loop_to_edge_cfg,
20946         rename_variables_in_loop): Declared.
20947         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
20948         (OBJS-common): Add tree-loop-distribution.o.
20949         (tree-loop-distribution.o): New rule.
20950         * tree-cfg.c (mark_virtual_ops_in_bb): New.
20951         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
20952         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
20953
20954 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
20955
20956         PR target/33963
20957         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
20958         other than structures and unions.
20959
20960 2008-02-28  Richard Guenther  <rguenther@suse.de>
20961
20962         Revert:
20963         2008-02-26  Richard Guenther  <rguenther@suse.de>
20964
20965         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
20966         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
20967         (lookup_decl_from_uid): Declare.
20968         (remove_decl_from_map): Likewise.
20969         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
20970         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
20971         (decl_for_uid_map): New global hashtable mapping DECL_UID
20972         to the decl tree.
20973         (init_ttree): Allocate it.
20974         (insert_decl_to_uid_decl_map): New helper function.
20975         (make_node_stat): Insert new decls into the map.
20976         (copy_node_stat): Likewise.
20977         (lookup_decl_from_uid): New function.
20978         (remove_decl_from_map): Likewise.
20979         (print_decl_for_uid_map_statistics): New helper.
20980         (dump_tree_statistics): Call it.
20981
20982         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
20983         (referenced_var_iterator): Adjust.
20984         (FOR_EACH_REFERENCED_VAR): Adjust.
20985         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
20986         (num_referenced_vars): Adjust.
20987         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
20988         (first_referenced_var): Remove.
20989         (end_referenced_vars_p): Likewise.
20990         (next_referenced_var): Likewise.
20991         (referenced_var_iterator_set): New helper function.
20992         * tree-dfa.c (referenced_var_lookup): Adjust.
20993         (referenced_var_check_and_insert): Likewise.
20994         (remove_referenced_var): Likewise.
20995         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
20996         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
20997         (verify_call_clobbering): Likewise.
20998         (verify_memory_partitions): Likewise.
20999         (init_tree_ssa): Allocate bitmap instead of hashtable for
21000         referenced_vars.
21001         (delete_tree_ssa): Adjust.
21002         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21003         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21004         (compute_tag_properties): Likewise.
21005         (set_initial_properties): Likewise.
21006         (find_partition_for): Likewise.
21007         (update_reference_counts): Likewise.
21008         (dump_may_aliases_for): Likewise.
21009         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21010         (add_call_clobber_ops): Likewise.
21011         (add_call_read_ops): Likewise.
21012         (get_asm_expr_operands): Likewise.
21013         * tree-into-ssa.c (dump_decl_set): Likewise.
21014         (update_ssa): Likewise.
21015         * tree-sra.c (scan_function): Likewise.
21016         (decide_instantiations): Likewise.
21017         (scalarize_parms): Likewise.
21018         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21019         (dsa_named_for): Likewise.
21020         * tree-ssa-structalias.c (update_alias_info): Likewise.
21021         (merge_smts_into): Likewise.
21022
21023 2008-02-27  David Daney  <ddaney@avtrex.com>
21024
21025         PR target/34409
21026         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
21027         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
21028         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
21029         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
21030         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
21031
21032 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
21033
21034         PR target/25477
21035         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
21036         (BUILT_IN_NEXTTOWARD): Remove.
21037         (BUILT_IN_NEXTTOWARDF): Ditto.
21038         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
21039         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
21040
21041 2008-02-27  Tom Tromey  <tromey@redhat.com>
21042
21043         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
21044         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
21045
21046 2008-02-27  Jan Beulich  <jbeulich@novell.com>
21047
21048         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
21049         update the respective field on newdecl.
21050
21051 2008-02-27  Revital Eres  <eres@il.ibm.com>
21052
21053         PR rtl-optimization/34999
21054         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
21055         crossing edges that ends with a call insn.
21056         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
21057         call insn and clear the EDGE_CROSSING flag of the crossing edge
21058         when fixing fallthru edges.
21059
21060 2008-02-27  Richard Guenther  <rguenther@suse.de>
21061
21062         PR middle-end/35390
21063         * fold-const.c (fold_unary): Return the correct argument,
21064         converted to the result type.
21065
21066 2008-02-27  Richard Guenther  <rguenther@suse.de>
21067
21068         PR middle-end/34971
21069         * expr.c (expand_expr_real_1): Assert on rotates that operate
21070         on partial modes.
21071         * fold-const.c (fold_binary): Use the types precision, not the
21072         bitsize of the mode if folding rotate expressions.  Build rotates
21073         only for full modes.
21074
21075 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
21076
21077         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
21078         and CPP_PRAGMA_EOL.
21079         * c-pragma.c (pragma_ns_name): New typedef.
21080         (registered_pp_pragmas): New variable.
21081         (c_pp_lookup_pragma): New function.
21082         (c_register_pragma_1): If flag_preprocess_only, do nothing
21083         for non-expanded pragmas, for expanded ones push pragma's
21084         namespace and name into registered_pp_pragmas vector.
21085         (c_invoke_pragma_handler): Register OpenMP pragmas even when
21086         flag_preprocess_only, don't register GCC pch_preprocess
21087         pragma if flag_preprocess_only.
21088         * c-opts.c (c_common_init): Call init_pragma even if
21089         flag_preprocess_only.
21090         * c-pragma.c (c_pp_lookup_pragma): New prototype.
21091         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
21092         cpp_register_pragma if flag_preprocess_only.
21093
21094 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21095
21096         PR c/28800
21097         * c-parser.c (c_parser_translation_unit): Warn for empty
21098         translation unit, not empty source file.
21099
21100 2008-02-26  Paul Brook  <paul@codesourcery.com>
21101
21102         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
21103         operand for Thumb-2.
21104         * config/arm/arm.h (reg_class): Add CORE_REGS.
21105         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
21106         (BASE_REG_CLASS): Use CORE_REGS.
21107         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
21108         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
21109         (REGNO_OK_FOR_INDEX_P): Exclude SP.
21110         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
21111         ARM_REGNO_OK_FOR_INDEX_P.
21112         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
21113         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
21114         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
21115         (ldm/stm peepholes): Ditto.
21116         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
21117         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
21118         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
21119         * config/arm/constraints.md: Enable "k" constraint on ARM.
21120
21121 2008-02-27  Ben Elliston  <bje@au.ibm.com>
21122
21123         * config/rs6000/rs6000.c: Annotate cache line size field in all
21124         instances of struct processor_costs.
21125
21126 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
21127
21128         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
21129         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
21130         jump_bypass): New counters.
21131         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
21132         * dce.c (gate_ud_dce): Same.
21133         (gate_fast_dce): Same.
21134         * dse.c (gate_dse1): New function.
21135         (gate_dse2): New function.
21136         (gate_dse): Merge results of new gate functions.
21137         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
21138         (gate_handle_jump_bypass): Add dbg_cnt.
21139         (gate_handle_gcse): Add dbg_cnt.
21140         * ifcvt.c (gate_handle_if_conversion): Same.
21141         (gate_handle_if_after_combine): Same.
21142         (gate_handle_if_after_reload): Same.
21143         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
21144
21145 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
21146
21147         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
21148         line sizes.
21149         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
21150
21151 2008-02-26  Jason Merrill  <jason@redhat.com>
21152
21153         PR c++/35315
21154         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
21155         alone if it's the naming decl for the type's main variant.
21156
21157 2008-02-26  Tom Tromey  <tromey@redhat.com>
21158
21159         * system.h (USE_MAPPED_LOCATION): Poison.
21160         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
21161         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
21162         (make_goto_expr_edges): Likewise.
21163         (remove_bb): Likewise.
21164         (execute_warn_function_return): Likewise.
21165         * basic-block.h (struct edge_def) <goto_locus>: Change type to
21166         location_t.
21167         * c-common.c (fname_decl): Remove old location code.
21168         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
21169         location code.
21170         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
21171         variant.
21172         (ASM_INPUT_SOURCE_LOCATION): Likewise.
21173         (gen_rtx_ASM_INPUT): Likewise.
21174         (gen_rtx_ASM_INPUT_loc): Likewise.
21175         (get_rtx_asm_OPERANDS): Remove.
21176         * cfglayout.c (insn_locators_alloc): Remove old location code.
21177         (set_curr_insn_source_location): Likewise.
21178         (curr_insn_locator): Likewise.
21179         * print-tree.c (print_node): Remove old location code.
21180         * tree-mudflap.c (mf_varname_tree): Remove old location code.
21181         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
21182         * cfgexpand.c (expand_gimple_cond_expr): Don't use
21183         location_from_locus.
21184         (construct_exit_block): Remove old location code.
21185         * emit-rtl.c (force_next_line_note): Remove old location code.
21186         * profile.c (branch_prob): Remove old location code.
21187         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
21188         LOC_LINE): Remove old-location variants.
21189         * langhooks.c (lhd_print_error_function): Remove old location
21190         code.
21191         * configure, config.in: Rebuilt.
21192         * configure.ac (--enable-mapped-location): Remove.
21193         * c-decl.c (c_init_decl_processing): Remove old location code.
21194         (finish_function): Likewise.
21195         * recog.c (decode_asm_operands): Remove old location code.
21196         * c-pch.c (c_common_read_pch): Remove old location code.
21197         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
21198         variants.
21199         * gimple-low.c (lower_function_body): Remove old location code.
21200         * toplev.c (unknown_location): Remove.
21201         (push_srcloc): Remove old-location variant.
21202         (process_options): Remove old location code.
21203         (lang_dependent_init): Likewise.
21204         * input.h (UNKNOWN_LOCATION): Move definition.
21205         (location_t): Undeprecate.
21206         (source_locus): Remove.
21207         (location_from_locus): Remove.
21208         (struct location_s): Remove.
21209         Remove all old-location code.
21210         (input_line, input_filename): Remove.
21211         * final.c (final_scan_insn): Remove old location code.
21212         * diagnostic.c (diagnostic_build_prefix): Remove
21213         USE_MAPPED_LOCATION test.
21214         * tree.h (gimple_stmt) <locus>: Now a location_t.
21215         (tree_exp) <locus>: Likewise.
21216         (DECL_IS_BUILTIN): Remove old-location variant.
21217         (annotate_with_file_line, annotate_with_locus): Likewise.
21218         (expr_locus, set_expr_locus): Update.
21219         * tree.c (build1_stat): Remove old location code.
21220         (last_annotated_node): Remove.
21221         (annotate_with_file_line): Remove old-location variant.
21222         (annotate_with_locus): Likewise.
21223         (expr_location): Remove old location code.
21224         (set_expr_location): Likewise.
21225         (expr_has_location): Likewise.
21226         (expr_locus): Likewise.
21227         (set_expr_locus): Likewise.
21228         (expr_filename): Don't use location_from_locus.
21229         (expr_lineno): Likewise.
21230         * rtl-error.c (location_for_asm): Remove old location code.
21231         * c-lex.c (cb_line_change): Remove old location code.
21232         (fe_file_change): Likewise.
21233         (cb_def_pragma): Likewise.
21234         (c_lex_with_flags): Likewise.
21235         * gengtype.c (do_typedef): Don't special-case location types.
21236         (define_location_structures): Remove.
21237         (main): Don't call define_location_structures.
21238         * tree-pretty-print.c (dump_implicit_edges): Remove old location
21239         code.
21240
21241 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21242
21243         PR 26264
21244         * builtins.def (BUILT_IN_STDARG_START): Remove.
21245         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
21246         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
21247         * tree-inline.c (inline_forbidden_p_1): Likewise.
21248
21249 2008-02-26  Richard Guenther  <rguenther@suse.de>
21250
21251         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21252         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21253         (lookup_decl_from_uid): Declare.
21254         (remove_decl_from_map): Likewise.
21255         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21256         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21257         (decl_for_uid_map): New global hashtable mapping DECL_UID
21258         to the decl tree.
21259         (init_ttree): Allocate it.
21260         (insert_decl_to_uid_decl_map): New helper function.
21261         (make_node_stat): Insert new decls into the map.
21262         (copy_node_stat): Likewise.
21263         (lookup_decl_from_uid): New function.
21264         (remove_decl_from_map): Likewise.
21265         (print_decl_for_uid_map_statistics): New helper.
21266         (dump_tree_statistics): Call it.
21267
21268         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21269         (referenced_var_iterator): Adjust.
21270         (FOR_EACH_REFERENCED_VAR): Adjust.
21271         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21272         (num_referenced_vars): Adjust.
21273         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21274         (first_referenced_var): Remove.
21275         (end_referenced_vars_p): Likewise.
21276         (next_referenced_var): Likewise.
21277         (referenced_var_iterator_set): New helper function.
21278         * tree-dfa.c (referenced_var_lookup): Adjust.
21279         (referenced_var_check_and_insert): Likewise.
21280         (remove_referenced_var): Likewise.
21281         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21282         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21283         (verify_call_clobbering): Likewise.
21284         (verify_memory_partitions): Likewise.
21285         (init_tree_ssa): Allocate bitmap instead of hashtable for
21286         referenced_vars.
21287         (delete_tree_ssa): Adjust.
21288         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21289         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21290         (compute_tag_properties): Likewise.
21291         (set_initial_properties): Likewise.
21292         (find_partition_for): Likewise.
21293         (update_reference_counts): Likewise.
21294         (dump_may_aliases_for): Likewise.
21295         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21296         (add_call_clobber_ops): Likewise.
21297         (add_call_read_ops): Likewise.
21298         (get_asm_expr_operands): Likewise.
21299         * tree-into-ssa.c (dump_decl_set): Likewise.
21300         (update_ssa): Likewise.
21301         * tree-sra.c (scan_function): Likewise.
21302         (decide_instantiations): Likewise.
21303         (scalarize_parms): Likewise.
21304         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21305         (dsa_named_for): Likewise.
21306         * tree-ssa-structalias.c (update_alias_info): Likewise.
21307         (merge_smts_into): Likewise.
21308
21309 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21310
21311         PR 34351
21312         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
21313         * c-opts.c (c_common_handle_option): Wall enables
21314         Wvolatile-register-var.
21315         * common.opt: Move Wvolatile-register-var to...
21316         * c.opt: ...here.
21317
21318 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21319
21320         * common.opt (Wlarger-than=): New.
21321         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
21322         -Wlarger-than=.
21323         * opts.c (common_handle_option): Handle -Wlarger-than=.
21324         * optc-gen.awk: Likewise.
21325         * opth-gen.awk: Likewise.
21326         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
21327         * tree-optimize.c (tree_rest_of_compilation): Likewise.
21328
21329 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
21330
21331         * c-common.c (match_case_to_enum_1): Add appropriate
21332         OPT_W* parameter to warning.
21333         (c_do_switch_warnings): Likewise.
21334         * c-typeck.c (warning_init): Add one more parameter following
21335         'warning' function.
21336         (push_init_level): Update call to warning_init.
21337         (pop_init_level): Likewise.
21338         (add_pending_init): Likewise.
21339         (output_init_element: Likewise.
21340
21341 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21342
21343         PR 28322
21344         * toplev.c (toplev_main): If there are warnings or error, print
21345         errors for ignored options.
21346         * opts.c (ignored_options): New static variable.
21347         (postpone_unknown_option_error): New.
21348         (print_ignored_options): New.
21349         (handle_option): Postpone errors for unknown -Wno-* options.
21350         * opts.h (print_ignored_options): Declare.
21351
21352 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
21353
21354         * config/mips/mips.md (loadgp_blockage, blockage): Change type
21355         to "ghost".
21356
21357 2008-02-25  Richard Guenther  <rguenther@suse.de>
21358
21359         Revert:
21360         2008-02-25  Richard Guenther  <rguenther@suse.de>
21361
21362         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21363         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21364         (lookup_decl_from_uid): Declare.
21365         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21366         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21367         (decl_for_uid_map): New global hashtable mapping DECL_UID
21368         to the decl tree.
21369         (init_ttree): Allocate it.
21370         (insert_decl_to_uid_decl_map): New helper function.
21371         (make_node_stat): Insert new decls into the map.
21372         (copy_node_stat): Likewise.
21373         (lookup_decl_from_uid): New function.
21374         (print_decl_for_uid_map_statistics): New helper.
21375         (dump_tree_statistics): Call it.
21376
21377         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21378         (referenced_var_iterator): Adjust.
21379         (FOR_EACH_REFERENCED_VAR): Adjust.
21380         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21381         (num_referenced_vars): Adjust.
21382         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21383         (first_referenced_var): Remove.
21384         (end_referenced_vars_p): Likewise.
21385         (next_referenced_var): Likewise.
21386         (referenced_var_iterator_set): New helper function.
21387         * tree-dfa.c (referenced_var_lookup): Adjust.
21388         (referenced_var_check_and_insert): Likewise.
21389         (remove_referenced_var): Likewise.
21390         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21391         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21392         (verify_call_clobbering): Likewise.
21393         (verify_memory_partitions): Likewise.
21394         (init_tree_ssa): Allocate bitmap instead of hashtable for
21395         referenced_vars.
21396         (delete_tree_ssa): Adjust.
21397         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21398         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21399         (compute_tag_properties): Likewise.
21400         (set_initial_properties): Likewise.
21401         (find_partition_for): Likewise.
21402         (update_reference_counts): Likewise.
21403         (dump_may_aliases_for): Likewise.
21404         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21405         (add_call_clobber_ops): Likewise.
21406         (add_call_read_ops): Likewise.
21407         (get_asm_expr_operands): Likewise.
21408         * tree-into-ssa.c (dump_decl_set): Likewise.
21409         (update_ssa): Likewise.
21410         * tree-sra.c (scan_function): Likewise.
21411         (decide_instantiations): Likewise.
21412         (scalarize_parms): Likewise.
21413         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21414         (dsa_named_for): Likewise.
21415         * tree-ssa-structalias.c (update_alias_info): Likewise.
21416         (merge_smts_into): Likewise.
21417
21418 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
21419
21420         PR fortran/29549
21421         * doc/invoke.texi (-fcx-limited-range): Document new option.
21422         * toplev.c (process_options): Handle -fcx-fortran-rules.
21423         * common.opt: Add documentation for -fcx-fortran-rules.
21424
21425 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
21426
21427         PR c/35162
21428         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
21429         actual behaviour and C99.
21430
21431 2008-02-26  Ben Elliston  <bje@au.ibm.com>
21432
21433         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
21434         (ASM_CPU_POWER6_SPEC): Likewise.
21435         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
21436         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
21437         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
21438
21439 2008-02-25  Richard Guenther  <rguenther@suse.de>
21440
21441         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21442         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21443         (lookup_decl_from_uid): Declare.
21444         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21445         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21446         (decl_for_uid_map): New global hashtable mapping DECL_UID
21447         to the decl tree.
21448         (init_ttree): Allocate it.
21449         (insert_decl_to_uid_decl_map): New helper function.
21450         (make_node_stat): Insert new decls into the map.
21451         (copy_node_stat): Likewise.
21452         (lookup_decl_from_uid): New function.
21453         (print_decl_for_uid_map_statistics): New helper.
21454         (dump_tree_statistics): Call it.
21455
21456         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21457         (referenced_var_iterator): Adjust.
21458         (FOR_EACH_REFERENCED_VAR): Adjust.
21459         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21460         (num_referenced_vars): Adjust.
21461         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21462         (first_referenced_var): Remove.
21463         (end_referenced_vars_p): Likewise.
21464         (next_referenced_var): Likewise.
21465         (referenced_var_iterator_set): New helper function.
21466         * tree-dfa.c (referenced_var_lookup): Adjust.
21467         (referenced_var_check_and_insert): Likewise.
21468         (remove_referenced_var): Likewise.
21469         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21470         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21471         (verify_call_clobbering): Likewise.
21472         (verify_memory_partitions): Likewise.
21473         (init_tree_ssa): Allocate bitmap instead of hashtable for
21474         referenced_vars.
21475         (delete_tree_ssa): Adjust.
21476         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21477         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21478         (compute_tag_properties): Likewise.
21479         (set_initial_properties): Likewise.
21480         (find_partition_for): Likewise.
21481         (update_reference_counts): Likewise.
21482         (dump_may_aliases_for): Likewise.
21483         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21484         (add_call_clobber_ops): Likewise.
21485         (add_call_read_ops): Likewise.
21486         (get_asm_expr_operands): Likewise.
21487         * tree-into-ssa.c (dump_decl_set): Likewise.
21488         (update_ssa): Likewise.
21489         * tree-sra.c (scan_function): Likewise.
21490         (decide_instantiations): Likewise.
21491         (scalarize_parms): Likewise.
21492         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21493         (dsa_named_for): Likewise.
21494         * tree-ssa-structalias.c (update_alias_info): Likewise.
21495         (merge_smts_into): Likewise.
21496
21497 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
21498
21499         PR target/35258
21500         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
21501         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
21502         * alias.h (nonoverlapping_memrefs_p): Likewise.
21503
21504 2008-02-25  Jan Beulich  <jbeulich@novell.com>
21505
21506         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
21507         * config/i386/netware-libgcc.exp: Add __bswap?i2,
21508         __emultls_get_address, __emultls_register_common,
21509         __floatundi?f, and _Unwind_GetIPInfo.
21510         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
21511         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
21512         (gen_regparm_prefix): Likewise.
21513         (i386_nlm_encode_section_info): Sync with
21514         config/i386/winnt.c:i386_pe_encode_section_info().
21515         (i386_nlm_maybe_mangle_decl_assembler_name): New.
21516         i386_nlm_mangle_decl_assembler_name): New.
21517         (netware_override_options): New.
21518         * config/i386/netware.h (netware_override_options): Declare.
21519         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
21520         (i386_nlm_mangle_decl_assembler_name): Declare.
21521         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
21522
21523 2008-02-25  Ben Elliston  <bje@au.ibm.com>
21524
21525         PR other/32948
21526         * c-decl.c (grokdeclarator): Remove unused local variables
21527         `typedef_type' and `type_as_written'.
21528         * bb-reorder.c
21529         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
21530         unused local variable `has_hot_blocks'.
21531         (fix_crossing_conditional_branches): Remove unused local variable
21532         `prev_bb'.
21533
21534 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
21535
21536         PR middle-end/19984
21537         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
21538         using DEF_C99_BUILTIN.
21539         (BUILT_IN_NANF): Ditto.
21540         (BUILT_IN_NANL): Ditto.
21541
21542 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
21543             Revital Eres  <eres@il.ibm.com>
21544
21545         * modulo-sched.c (calculate_must_precede_follow): Address TODO
21546         regarding the order of two dependent insns in the same row.
21547
21548 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
21549
21550         * stor-layout.c (layout_decl): Do not bump the alignment of a
21551         bit-field to more than byte alignment if it is packed.
21552
21553 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
21554
21555         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
21556         e300c2 and e300c3.
21557
21558 2008-02-24  Diego Novillo  <dnovillo@google.com>
21559
21560         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
21561
21562         PR 33738
21563         * tree-vrp.c (vrp_evaluate_conditional): With
21564         -Wtype-limits, emit a warning when comparing against a
21565         constant outside the natural range of OP0's type.
21566         * c.opt (Wtype-limits): Move ...
21567         * common.opt (Wtype-limits): ... here.
21568
21569 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
21570
21571         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
21572         * config/rs6000/e300c2c3.md: New file.
21573         * config/rs6000/rs6000.c (processor_costs): Add new costs for
21574         e300c2 and e300c3.
21575         (rs6000_override_options): Add e300c2 and e300c3 cases to
21576         processor_target_table. Do not allow usage of Altivec or Spe
21577         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
21578         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
21579         * config/rs6000/rs6000.h (processor_type): Add
21580         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
21581         (ASM_CPU_SPEC): Add e300c2 and e300c3.
21582         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
21583         and ppce300c3. Include e300c2c3.md.
21584
21585 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
21586
21587         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
21588         instead of TARGET_STRICT_ALIGN.
21589
21590 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
21591
21592         * explow.c (memory_address): Assert that the generated address is
21593         valid.
21594
21595 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21596
21597         PR target/25477
21598         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
21599         * config/darwin-ppc-ldouble-patch.def: New file.
21600         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
21601         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
21602         SUBTARGET_INIT_BUILTINS if defined.
21603         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
21604         New functions.
21605
21606 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21607
21608         PR rtl-opt/33512
21609         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
21610         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
21611
21612 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21613
21614         PR pch/35027
21615         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
21616         file" warning condtional on -Winvalid-PCH.
21617
21618 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
21619
21620         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
21621
21622 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
21623
21624         PR target/22076
21625         PR target/34256
21626         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
21627         prevent reload from using MMX registers.
21628         (*mov<mode>_internal): Ditto.
21629         (*movv2sf_internal_rex64): Ditto.
21630         (*movv2sf_internal): Ditto.
21631
21632 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21633
21634         PR documentation/31569
21635         * doc/install.texi2html: Use makeinfo --no-number-sections.
21636
21637 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21638
21639         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
21640         ensure that we can address an entire entity > 8 bytes.  Don't
21641         generate reg+reg addressing for such data.
21642
21643 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21644
21645         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
21646         strings when optimizing for size, unless the target cares about
21647         alignment.
21648
21649 2008-02-22  Tom Tromey  <tromey@redhat.com>
21650
21651         * regclass.c (current_pass): Remove declaration.
21652
21653 2008-02-22  Anatoly Sokolov <aesok@post.ru>
21654
21655         * config/avr/libgcc.S (__RAMPZ__): Define.
21656         (__do_copy_data): Add for devices with 128KB code memory.
21657
21658 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21659
21660         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
21661         Use spe_abi.
21662         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
21663
21664 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
21665
21666         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
21667         GENNONACR_REGS.
21668
21669 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21670
21671         PR c/19999
21672         * c-typeck.c (build_binary_op): Warn about floating point
21673         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
21674
21675 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
21676
21677         PR target/34526
21678         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
21679         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
21680         add vrsave.
21681         (rs6000_override_options): Set altivec_abi as default, not override,
21682         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
21683         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
21684         is used; use new member spe_abi.
21685         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
21686         spe_abi and altivec_abi.
21687
21688 2008-02-22  Tomas Bily  <tbily@suse.cz>
21689
21690         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
21691
21692 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21693
21694         PR bootstrap/35273
21695         * config.build (build_file_translate): Set to `CMD //c' only if
21696         it works.
21697         * Makefile.in (build_file_translate): Improve comment.
21698
21699 2008-02-21  Jan Hubicka  <jh@suse.cz>
21700
21701         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
21702         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
21703         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
21704
21705 2008-02-21  Michael Matz  <matz@suse.de>
21706
21707         PR target/35264
21708         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
21709
21710 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
21711
21712         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
21713         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
21714         as insn constraint.
21715         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
21716         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
21717         SSE_VEC_FLOAT_MODE_P as insn constraint.
21718         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
21719         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
21720         sse4a_movntdf using MODEF mode iterator.
21721         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
21722         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
21723         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
21724         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
21725         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
21726         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
21727         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
21728
21729 2008-02-21  Richard Guenther  <rguenther@suse.de>
21730
21731         * tree.def (PAREN_EXPR): New tree code.
21732         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
21733         and PAREN_EXPR.
21734         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
21735         * expr.c (expand_expr_real_1): Likewise.
21736         * tree-inline.c (estimate_num_insns_1): Likewise.
21737         * tree-complex.c (expand_complex_move): Likewise.
21738         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
21739         as plain x.
21740
21741 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21742
21743         PR target/35225
21744         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
21745
21746 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21747
21748         PR target/35190
21749         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
21750
21751         * config/sh/sh.c (find_barrier): Don't go past
21752         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
21753
21754 2008-02-20  DJ Delorie  <dj@redhat.com>
21755
21756         * config/h8300/h8300.md (insv): Force source operand to be a register.
21757
21758         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
21759         as a jump, not as a plain insn.
21760
21761 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
21762
21763         * doc/invoke.texi (Warning Options): Add new option
21764         -Wframe-larger-than=.
21765         (-Wframe-larger-than): Document.
21766
21767         * flags.h (warn_frame_larger_than, frame_larger_than_size):
21768         Add declarations for new option variables.
21769
21770         * final.c (final_start_function): Check the frame size
21771         before emission and issue a Wframe-larger-than warning.
21772
21773         * opts.c (warn_frame_larger_than, frame_larger_than_size):
21774         Add definitions for new option variables.
21775         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
21776
21777         * common.opt (Wframe-larger-than=): New option.
21778
21779 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
21780
21781         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
21782         (<sse>_div<mode>3): Ditto.
21783         (<sse>_vmdiv<mode>3): Ditto.
21784         (<sse>_vmsqrt<mode>2): Ditto.
21785         (*smax<mode>3): Ditto.
21786         (sse5_frcz<mode>2): Ditto.
21787         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
21788         as insn constraint.
21789
21790 2008-02-20  Richard Guenther  <rguenther@suse.de>
21791
21792         PR middle-end/35265
21793         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
21794         be happy with INTEGRAL_TYPE_P.
21795
21796 2008-02-20  Richard Guenther  <rguenther@suse.de>
21797
21798         * fold-const.c (split_tree): Associate floatig-point expressions
21799         if flag_associative_math is set.
21800
21801 2008-02-20  Richard Guenther  <rguenther@suse.de>
21802
21803         * tree.h (fold_real_zero_addition_p): Declare.
21804         * fold-const.c (fold_real_zero_addition_p): Export.
21805         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
21806         floating-point operations with zero and one.
21807
21808 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
21809
21810         * doc/install.texi: Correct references to CFLAGS, replacing them
21811         with BOOT_CFLAGS.  Document flags used during bootstrap for
21812         target libraries.
21813
21814 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
21815
21816         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
21817         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
21818         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
21819         insn constraint.
21820         (smin<mode>3): Ditto from similar patterns.
21821         (smax<mode>3): Ditto.
21822         (*ieee_smin<mode>3): Ditto.
21823         (*ieee_smax<mode>3): Ditto.
21824         * config/i386/sse.md (sse): New mode attribute.
21825         (mov<mode>): Macroize expander from movv4sf and movv2df using
21826         SSEMODEF2P mode iterator.
21827         (<sse>_movnt<mode>): Ditto from similar patterns. Use
21828         SSE_VEC_FLOAT_MODE_P as insn constraint.
21829         (storent<mode>): Ditto.
21830         (storent<mode>): Macroize expander from storentsf and storentdf using
21831         MODEF mode iterator.
21832         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
21833         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
21834         (abs<mode>2): Ditto from similar patterns.
21835         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
21836         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
21837         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
21838         (<sse>_vmsqrt<mode>2): Ditto.
21839         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
21840         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
21841         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
21842         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
21843         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
21844         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
21845         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
21846         insn constraint.
21847         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
21848         iterator and SSE_FLOAT_MODE_P as insn constraint.
21849         (<sse>_ucomi): Ditto from similar patterns.
21850         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
21851         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
21852         SSE_VEC_FLOAT_MODE_P as insn constraint.
21853         (vcond<mode>): Ditto from similar patterns.
21854         (and<mode>3, *and<mode>3): Ditto.
21855         (<sse>_nand<mode>3): Ditto.
21856         (ior<mode>3, *ior<mode>3): Ditto.
21857         (xor<mode>3, *xor<mode>3): Ditto.
21858         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
21859         iterator and SSE_FLOAT_MODE_P as insn constraint.
21860         (*nand<mode>3): Ditto from similar patterns.
21861         (*ior<mode>3): Ditto.
21862         (*xor<mode>3): Ditto.
21863
21864 2008-02-20  Ira Rosen  <irar@il.ibm.com>
21865
21866         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
21867         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
21868         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
21869
21870 2008-02-19  Jan Hubicka  <jh@suse.cz>
21871
21872         * predict.c (tree_bb_level_predictions): Remove variable next
21873         mistakely introduced by previous commit.
21874
21875 2008-02-19  Jan Hubicka  <jh@suse.cz>
21876
21877         * predict.c (predict_paths_leading_to): Rewrite.
21878         (predict_paths_for_bb): New.
21879         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
21880
21881 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21882
21883         PR bootstrap/35218
21884         * Makefile.in (build_file_translate): New.
21885         (gcc-vers.texi): Use it for translating $(abs_srcdir).
21886         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
21887         * configure.ac (build_file_translate): Substitute it.
21888         * configure: Regenerate.
21889
21890 2008-02-19  Jan Hubicka  <jh@suse.cz>
21891
21892         PR rtl-optimization/34408
21893         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
21894         invalid sharing.
21895
21896 2008-02-19  Jan Hubicka  <jh@suse.cz>
21897
21898         PR middle-end/28779
21899         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
21900         call_expr.
21901
21902 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
21903
21904         PR Ada/35186
21905         * config/i386/i386-modes.def: Revert the last DI alignment
21906         change until Ada people can look into it.
21907
21908 2008-02-19  Nick Clifton  <nickc@redhat.com>
21909
21910         * opts.c (print_specific_help): Fix typo in --help text.
21911
21912 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
21913
21914         PR target/35239
21915         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
21916         32-bit inline asm without asm alternatives for host GCC < 3.0.
21917
21918 2008-02-19  Richard Guenther  <rguenther@suse.de>
21919
21920         PR tree-optimization/34989
21921         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
21922         Allow propagation to INDIRECT_REF if we can simplify only.
21923
21924 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21925
21926         * c-common.c (warn_for_collisions_1): Use appropriate option when
21927         warning.
21928
21929 2008-02-19  Nick Clifton  <nickc@redhat.com>
21930
21931         PR other/31349
21932         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
21933         (handle_options): Fix indentation.
21934         (print_filtered_help): If no language-specific options were
21935         displayed tell the user how to list all the options supported by
21936         the language's front-end.
21937         (print_specific_help): Fix indentation and remove duplicate line.
21938         (common_handle_option): Handle the -v option.
21939         For --help enable the display of undocumented options if the -v
21940         switch has been included on the command line.
21941         For --help= check for overlaps in the arguments between the option
21942         classes and the language names and issue a warning when they
21943         cannot be disambiguated.
21944         * c.opt (v): Pass on to the common option handler.
21945
21946 2008-02-19  Revital Eres  <eres@il.ibm.com>
21947
21948         * modulo-sched.c (sms_schedule): Change dump message when
21949         create_ddg function fails.
21950         (try_scheduling_node_in_cycle): Rename row to cycle.
21951         (print_partial_schedule): Rename CYCLE to ROW.
21952
21953 2008-02-19  Christian Bruel  <christian.bruel@st.com>
21954             Zdenek Dvorak  <ook@ucw.cz>
21955
21956         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
21957
21958 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
21959
21960         PR target/33555
21961         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
21962         (*x86_movdicc_0_m1_se): Ditto.
21963
21964 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
21965
21966         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
21967         (CMPtype): Define as __gcc_CMPtype.
21968         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
21969         (CMPtype): Define as __gcc_CMPtype.
21970
21971 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
21972
21973         Support valgrind 3.3 for --enable-checking=valgrind.
21974         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
21975         here.
21976         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
21977         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
21978         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
21979         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
21980         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
21981         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
21982         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
21983         respectively.
21984         * ggc-zone.c: Similar.
21985         * ggc-page.c: Similar.
21986
21987 2008-02-19  Paul Brook  <paul@codesourcery.com>
21988
21989         PR target/35071
21990         * config/arm/ieee754-df.S: Fix do_it typo.
21991         * config/arm/ieee754-sf.S: Fix do_it typo.
21992
21993 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
21994
21995         PR target/35189
21996         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
21997         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
21998         (OPTION_MASK_ISA_SSE_SET): Likewise.
21999         (OPTION_MASK_ISA_SSE2_SET): Likewise.
22000         (OPTION_MASK_ISA_SSE3_SET): Likewise.
22001         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
22002         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
22003         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
22004         (OPTION_MASK_ISA_SSE4_SET): Likewise.
22005         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
22006         (OPTION_MASK_ISA_SSE5_SET): Likewise.
22007         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
22008         (OPTION_MASK_ISA_MMX_UNSET): Updated.
22009         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
22010         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
22011         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
22012         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
22013         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
22014         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
22015         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
22016         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
22017         (OPTION_MASK_ISA_SSE4): Removed.
22018         (ix86_handle_option): Turn on bits in ix86_isa_flags and
22019         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
22020         (override_options): Don't turn on implied SSE/MMX bits in
22021         ix86_isa_flags.
22022
22023 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
22024
22025         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22026         32bit host.
22027
22028 2008-02-18  Joey Ye  <joey.ye@intel.com>
22029
22030         PR middle-end/34921
22031         * tree-nested.c (insert_field_into_struct): Set type alignment
22032         to field alignment if the former is less than the latter.
22033
22034 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
22035
22036         * BASE-VER: Set to 4.4.0.
22037
22038 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
22039
22040         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
22041         * doc/cfg.texi: Likewise.
22042         * doc/extend.texi: Likewise.
22043         * doc/gty.texi: Likewise.
22044         * doc/invoke.texi: Likewise.
22045         * doc/loop.texi: Likewise.
22046         * doc/md.texi: Likewise.
22047         * doc/passes.texi: Likewise.
22048         * doc/rtl.texi: Likewise.
22049         * doc/sourcebuild.texi: Likewise.
22050         * doc/tm.texi: Likewise.
22051         * doc/tree-ssa.texi: Likewise.
22052
22053 2008-02-17  Richard Guenther  <rguenther@suse.de>
22054
22055         PR middle-end/35227
22056         * tree-complex.c (init_parameter_lattice_values): Handle parameters
22057         without default definition.
22058
22059 2008-02-17  Richard Guenther  <rguenther@suse.de>
22060
22061         PR tree-optimization/35231
22062         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
22063         if A | B != 1.
22064
22065 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
22066
22067         Revert:
22068         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22069         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
22070         libgcc_cmp_return mode.
22071
22072 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22073
22074         PR c/28368
22075         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
22076
22077 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
22078
22079         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
22080         multilibs.
22081
22082 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22083
22084         * doc/c-tree.texi: Use `@.' where appropriate.
22085         * doc/extend.texi: Likewise.
22086         * doc/install.texi: Likewise.
22087         * doc/invoke.texi: Likewise.
22088         * doc/loop.texi: Likewise.
22089         * doc/makefile.texi: Likewise.
22090         * doc/md.texi: Likewise.
22091         * doc/passes.texi: Likewise.
22092         * doc/standards.texi: Likewise.
22093         * doc/tm.texi: Likewise.
22094
22095 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
22096
22097         PR middle-end/35196
22098         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
22099         in entry_bb.
22100         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
22101         rather than in entry_bb.
22102
22103 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22104
22105         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
22106         libgcc_cmp_return mode.
22107
22108 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
22109
22110         PR middle-end/35130
22111         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
22112         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
22113
22114 2008-02-15  Richard Guenther  <rguenther@suse.de>
22115             Zdenek Dvorak  <ook@ucw.cz>
22116
22117         PR tree-optimization/35164
22118         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
22119         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
22120         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
22121         Only propagate addresses which do not have abnormal SSA_NAMEs
22122         in their operands.
22123
22124 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
22125
22126         PR target/35088
22127         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
22128
22129 2008-02-15  Jan Hubicka  <jh@suse.cz>
22130
22131         PR middle-end/35149
22132         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
22133
22134 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22135
22136         PR middle-end/34621
22137         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
22138         when calculating alignment_pad.
22139
22140 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22141
22142         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
22143         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
22144         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
22145         and STACK_BOUNDARY define.
22146
22147 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
22148
22149         PR preprocessor/35061
22150         * c-pragma.c (handle_pragma_pop_macro): Check that
22151         pushed_macro_table has been allocated.
22152
22153 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
22154
22155         PR middle-end/35136
22156         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
22157         (force_gimple_operand): Likewise.
22158         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
22159         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
22160         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
22161         (find_interesting_uses_address): Check addressability and alignment
22162         of the base expression only after substituting bases of IVs into it.
22163
22164 2008-02-14  Michael Matz  <matz@suse.de>
22165
22166         PR target/34930
22167         * function.c (instantiate_virtual_regs_in_insn): Reload address
22168         before falling back to reloading the whole operand.
22169
22170 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
22171
22172         * config/s390/s390.c (s390_mainpool_start): Emit the pool
22173         before the first section switch note.
22174
22175 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
22176
22177         * doc/bugreport.texi: Update copyright years.
22178         * doc/c-tree.texi: Likewise.
22179         * doc/cfg.texi: Likewise.
22180         * doc/cpp.texi: Likewise.
22181         * doc/cppinternals.texi: Likewise.
22182         * doc/fragments.texi: Likewise.
22183         * doc/frontends.texi: Likewise.
22184         * doc/gcc.texi: Likewise.
22185         * doc/gty.texi: Likewise.
22186         * doc/hostconfig.texi: Likewise.
22187         * doc/implement-c.texi: Likewise.
22188         * doc/libgcc.texi: Likewise.
22189         * doc/loop.texi: Likewise.
22190         * doc/makefile.texi: Likewise.
22191         * doc/options.texi: Likewise.
22192         * doc/passes.texi: Likewise.
22193         * doc/rtl.texi: Likewise.
22194         * doc/sourcebuild.texi: Likewise.
22195         * doc/standards.texi: Likewise.
22196         * doc/tree-ssa.texi: Likewise.
22197         * doc/trouble.texi: Likewise.
22198
22199         * doc/extend.texi: Use @: or add comma where appropriate.
22200         * doc/invoke.texi: Likewise.
22201         * doc/tm.texi: Likewise.
22202
22203 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
22204
22205         PR target/34393
22206         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
22207         to a reg.
22208
22209 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
22210
22211         * doc/md.texi (clz, ctz): Add reference.
22212         * doc/rtl.texi (clz, ctz): Likewise.
22213
22214 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22215
22216         PR other/35148
22217         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
22218         srcdir.
22219
22220 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
22221
22222         * config/s390/s390.c (struct constant_pool): New field
22223         emit_pool_after added.
22224         (s390_mainpool_start): Set the emit_pool_after flag according
22225         to the section switch notes.
22226         (s390_mainpool_finish): Consider emit_pool_after when emitting
22227         the literal pool at the end of the function.
22228         (s390_chunkify_start): Force literal pool splits at section
22229         switch notes.
22230
22231 2008-02-13  Michael Matz  <matz@suse.de>
22232
22233         PR debug/35065
22234         * var-tracking.c (clobber_variable_part): Correctly traverse the
22235         list.
22236
22237 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22238
22239         PR 29673
22240         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
22241         Add -fdump-ipa-inline.
22242         * tree-dump.c (dump_files): Remove tree-inlined dump.
22243         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
22244
22245 2008-02-12  Richard Guenther  <rguenther@suse.de>
22246
22247         PR tree-optimization/35171
22248         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
22249         default defs.
22250
22251 2008-02-12  Richard Guenther  <rguenther@suse.de>
22252
22253         PR middle-end/35163
22254         * fold-const.c (fold_widened_comparison): Use get_unwidened in
22255         value-preserving mode.  Disallow final truncation.
22256
22257 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
22258
22259         PR middle-end/35136
22260         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
22261         code from here to...
22262         (force_gimple_operand): ...here.
22263
22264 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
22265
22266         PR c++/35144
22267         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
22268         non-compatible pointers.
22269         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
22270         different FIELD_DECLs, try harder by comparing field offsets, sizes
22271         and types.
22272
22273         PR inline-asm/35160
22274         * function.c (match_asm_constraints_1): Don't replace the same input
22275         multiple times.
22276
22277 2008-02-12  Anatoly Sokolov <aesok@post.ru>
22278
22279         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
22280         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
22281         (expand_epilogue): Restore RAMPZ register.
22282         * config/avr/avr.md (RAMPZ_ADDR): New constant.
22283
22284 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
22285
22286         * config/i386/cygwin.asm: (__alloca): Correct calling
22287         convention and alignment.
22288         (__chkstk): Force 8 byte stack alignment.
22289
22290 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
22291             Richard Guenther  <rguenther@suse.de>
22292
22293         PR tree-optimization/33992
22294         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
22295         the zero we compare against.
22296
22297 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
22298
22299         PR libfortran/35063
22300         * gthr-win32.h (__gthread_mutex_destroy_function): New function
22301         to CloseHandle after unlocking to prevent accumulation of handle
22302         count.
22303
22304 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22305
22306         PR middle_end/34150
22307         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
22308         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
22309         and update LABEL_NUSES during and after reload.
22310
22311 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
22312
22313         PR middle-end/34627
22314         * combine.c (simplify_if_then_else): Make sure the comparison is
22315         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
22316
22317 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
22318
22319         PR bootstrap/35051
22320         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
22321         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
22322         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
22323         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
22324         * tree.h (get_type_static_bounds): Likewise.
22325
22326 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22327
22328         * doc/invoke.texi (Option Summary, C++ Dialect Options)
22329         (Objective-C and Objective-C++ Dialect Options, Warning Options):
22330         Make -Wfoo language annotations match what the compiler outputs.
22331
22332 2008-02-08  Sa Liu  <saliu@de.ibm.com>
22333
22334         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
22335         intrinsics spu_convts, spu_convtu, spu_convtf.
22336
22337 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
22338
22339         * doc/extend.texi (Function Attributes) <noinline>: Mention
22340         asm ("") as method to keep calls.
22341
22342 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22343
22344         PR other/32754
22345         * doc/options.texi (Options): Replace references to opts.sh with
22346         optc-gen.awk.
22347         * opts-common.c: Likewise.
22348         * optc-gen.awk: Likewise.
22349
22350 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
22351
22352         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
22353
22354 2008-02-07  Richard Henderson  <rth@redhat.com>
22355
22356         PR rtl-opt/33410
22357         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
22358         EXPR_LIST for the REG_EQUAL instead of a comparison with a
22359         funny mode.
22360
22361 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
22362
22363         PR tree-optimization/35085
22364         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
22365         for operand entry oe2 in addition to operand entry oe3 in order to
22366         expose more opportunities for vectorizer sum reduction.
22367
22368 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22369
22370         PR other/35107
22371         * Makefile.in (LIBS): Remove $(GMPLIBS).
22372         (cc1-dummy, cc1): Add $(GMPLIBS).
22373
22374 2008-02-06  Jan Hubicka  <jh@suse.cz>
22375
22376         PR target/23322
22377         * i386.md (moddf_integer): Do not produce partial memory stalls for
22378         targets where it hurts.
22379
22380 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
22381
22382         PR target/35083
22383         * optabs.c (expand_float): Do not check for decimal modes when
22384         expanding unsigned integer through signed conversion.
22385
22386 2008-02-06  Nick Clifton  <nickc@redhat.com>
22387
22388         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
22389         inside the clobber with a match_operand and duplicated operand
22390         number in the constraint.
22391         (ineqbranchsi): Delete redundant comment.
22392
22393 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
22394
22395         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
22396         builtin_define ("__USE_INIT_FINI__").
22397         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
22398         -msx multilibs.
22399         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
22400
22401 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22402
22403         PR documentation/30330
22404         * doc/invoke.texi (C++ Dialect Options)
22405         (Objective-C and Objective-C++ Dialect Options, Warning Options):
22406         For each warning option -Wfoo that allows -Wno-foo, ensure both
22407         -Wfoo and -Wno-foo are listed in the option index.  Fix index
22408         entry of -Wswitch-default, index -Wnormalized= including the
22409         `=', and -Wlarger-than-@var{len} including @var{len}.
22410
22411 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
22412
22413         * config/i386/i386.md (floatunssisf2): Use
22414         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
22415         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
22416         Macroize expander using MODEF mode iterator.
22417
22418 2008-02-05  Diego Novillo  <dnovillo@google.com>
22419
22420         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
22421
22422         PR 33738
22423         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
22424
22425 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22426
22427         PR other/35070
22428         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
22429
22430 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
22431
22432         PR target/35084
22433         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
22434         to indicate if a message should be generated.
22435         (init_cumulative_args): Updated.
22436         (function_value_32): Likewise.
22437
22438 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
22439
22440         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
22441
22442 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
22443
22444         PR target/35083
22445         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
22446         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
22447
22448 2008-02-04  Diego Novillo  <dnovillo@google.com>
22449
22450         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
22451
22452         PR 33738
22453         * tree-vrp.c (vrp_evaluate_conditional): With
22454         -Wtype-limits, emit a warning when comparing against a
22455         constant outside the natural range of OP0's type.
22456
22457 2008-02-04  Richard Guenther  <rguenther@suse.de>
22458
22459         PR middle-end/33631
22460         * expr.c (count_type_elements): Give for unions instead of
22461         guessing.
22462
22463 2008-02-04  Richard Guenther  <rguenther@suse.de>
22464
22465         PR middle-end/35043
22466         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
22467         to TYPE_DOMAINs base type instead of using bitsizetype here.
22468
22469 2008-02-03  Jason Merrill  <jason@redhat.com>
22470
22471         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
22472
22473 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22474
22475         PR other/29972
22476         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
22477         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
22478         (RS/6000 and PowerPC Options): Fix typos and markup.
22479         * doc/passes.texi (Tree-SSA passes): Likewise.
22480
22481 2008-02-02  Michael Matz  <matz@suse.de>
22482
22483         PR target/35045
22484         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
22485         from record_last_reg_set_info.
22486         (record_last_reg_set_info): Take an RTX argument, iterate over all
22487         constituent hardregs.
22488         (record_last_set_info, record_opr_changes): Change calls to
22489         new signature or to record_last_reg_set_info_regno.
22490
22491 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
22492
22493         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
22494
22495 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
22496
22497         PR rtl-optimization/34773
22498         * reg-notes.def (EQUAL): Mention significance of combination of
22499         REG_EQUAL and REG_RETVAL.
22500         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
22501         insn that has a REG_RETVAL.
22502
22503 2008-02-01  Roger Sayle  <roger@eyesopen.com>
22504
22505         PR bootstrap/33781
22506         * configure.ac (--enable-fixed-point): Disable unless explicitly
22507         requested on IRIX.
22508         * configure: Regenerate.
22509
22510 2008-02-01  Richard Guenther  <rguenther@suse.de>
22511
22512         PR other/35042
22513         * invoke.texi (-finline-limit): Remove no longer true parts
22514         of the documentation.  Note that there is no default value.
22515
22516 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
22517             Mark Mitchell  <mark@codesourcery.com>
22518             Ben Elliston  <bje@au.ibm.com>
22519
22520         PR c/29326
22521         * doc/extend.texi (Other Builtins): Document.
22522
22523 2008-01-31  Tom Browder <tom.browder@gmail.com>
22524
22525         * doc/c-tree.texi (Types): Fix grammar.
22526         (Expression trees): Ditto.
22527         * doc/passes.texi (Tree-SSA passes): Ditto.
22528
22529         * doc/configterms.texi (Configure Terms): Fix typo.
22530         * doc/cpp.texi (Common Predefined Macros): Ditto.
22531         * doc/md.texi (Machine Constraints): Ditto.
22532
22533         * doc/makefile.texi (Makefile): Add comma.
22534
22535 2008-01-31  Tom Browder  <tom.browder@gmail.com>
22536             Gerald Pfeifer  <gerald@pfeifer.com>
22537
22538         * doc/sourcebuild.texi (Front End): Remove references to CVS
22539         and CVSROOT/modules.
22540         (Texinfo Manuals): Replace reference to CVS by one to SVN.
22541         (Back End): Remove reference to CVS.
22542
22543 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
22544
22545         PR target/34900
22546         * config/mips/mips.c (gen_load_const_gp): New function, taking a
22547         comment from...
22548         (mips16_gp_pseudo_reg): ...here.
22549         * config/mips/mips.md (load_const_gp): Replace with...
22550         (load_const_gp_<mode>): ...this :P-based insn.
22551
22552 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22553
22554         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
22555         options. Minor fixes.
22556         (-std): Move reference to standards closer to where language
22557         standards are first mentioned.
22558
22559 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
22560
22561         PR rtl-optimization/34995
22562         * reload.c (alternative_allows_const_pool_ref): Take an rtx
22563         parameter and return a bool.  If the rtx parameter is nonnull,
22564         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
22565         (find_reloads): Update call accordingly.  Pass the new operand
22566         if it needed no address reloads, otherwise pass null.
22567
22568 2008-01-30  Richard Henderson  <rth@redhat.com>
22569
22570         PR c/34993
22571         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
22572         for unbounded arrays.
22573
22574 2008-01-30  Silvius Rus  <rus@google.com>
22575
22576         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
22577
22578 2008-01-30  Jan Hubicka  <jh@suse.cz>
22579
22580         PR target/34982
22581         * i386.c (init_cumulative_args): Use real function declaration when
22582         calling locally.
22583
22584 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
22585
22586         PR rtl-optimization/34998
22587         * global.c (build_insn_chain): Treat non-subreg_lowpart
22588         SUBREGs of pseudos as clobbering all the words covered by the
22589         SUBREG, not just all the bytes.
22590         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
22591         original df_ref rather than an extract parameter.
22592         (global_conflicts): Update call accordingly.
22593
22594 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22595
22596         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
22597         the overflow check to make it easier to read.
22598         (__fixtfdi): Change the type of the ll member in union
22599         long_double to UDItype_x.
22600
22601 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
22602
22603         PR middle-end/34969
22604         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
22605         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
22606         * tree-inline.c (fold_marked_statements): Call
22607         cgraph_update_edges_for_call_stmt if folding a call statement.
22608         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
22609         debug_generic_stmt calls, reset it back afterwards.
22610
22611         PR c/35017
22612         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
22613         static decls.
22614         * c-typeck.c (build_external_ref): Don't pedwarn about
22615         static vars in current function's scope.
22616
22617 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
22618
22619         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
22620
22621 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
22622
22623         PR c/35002
22624         * ipa-struct-reorg.c: Fix spelling.
22625         * params.def: Ditto.
22626
22627 2008-01-29  Richard Guenther  <rguenther@suse.de>
22628
22629         PR middle-end/35006
22630         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
22631         field.
22632         * tree-inline.c (remap_type): Increment remapping_type_depth
22633         around remapping types.
22634         (copy_body_r): Only add referenced variables if they are referenced
22635         from code, not types.
22636
22637 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
22638
22639         PR c++/34055
22640         PR c++/34103
22641         PR c++/34219
22642         PR c++/34606
22643         PR c++/34753
22644         PR c++/34754
22645         PR c++/34755
22646         PR c++/34919
22647         PR c++/34961
22648         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
22649         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
22650
22651 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
22652
22653         PR target/34412
22654         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
22655         pointer for tiny stack.
22656
22657 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
22658
22659         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
22660
22661 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
22662
22663         * config/vx-common.h: Fix typo in comment.
22664
22665 2008-01-28  Ian Lance Taylor  <iant@google.com>
22666
22667         PR c++/34862
22668         PR c++/33407
22669         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
22670         coalesce pointers if they have different DECL_NO_TBAA_P values.
22671         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
22672         between variables with different DECL_NO_TBAA_P values.
22673
22674 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
22675
22676         PR 31535
22677         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
22678         are not legitimate small data references on SPE targets.
22679
22680 2008-01-28  David Daney  <ddaney@avtrex.com>
22681
22682         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
22683
22684 2008-01-28  David Daney  <ddaney@avtrex.com>
22685
22686         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
22687
22688 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
22689
22690         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
22691         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
22692         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
22693         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
22694         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
22695         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
22696         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
22697         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
22698
22699 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22700
22701         * basic-block.h (condjump_equiv_p): Fix comment.
22702
22703 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22704
22705         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
22706         print_generic_stmt_indented): Fix comment.
22707
22708 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22709
22710         * configure.ac (__stack_chk_fail): Add detecion for availability
22711         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
22712         * configure: Regenerate.
22713
22714 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
22715
22716         PR middle-end/34688
22717         * final.c (output_addr_const): Handle TRUNCATE.
22718
22719 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
22720
22721         PR target/34711
22722         * tree-ssa-loop-ivopts.c (comp_cost): New type.
22723         (zero_cost, infinite_cost): New constants.
22724         (struct cost_pair): Change type of cost to comp_cost.
22725         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
22726         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
22727         New functions.
22728         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
22729         split_address_cost, ptr_difference_cost, difference_cost,
22730         get_computation_cost_at, get_computation_cost,
22731         determine_use_iv_cost_generic, determine_use_iv_cost_address,
22732         determine_use_iv_cost_condition, determine_use_iv_costs,
22733         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
22734         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
22735         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
22736         Change type of cost to comp_cost.
22737         (determine_iv_cost): Increase cost of non-original ivs, instead
22738         of decreasing the cost of original ones.
22739         (get_address_cost): Indicate the complexity of the addressing mode
22740         in comp_cost.
22741         (try_add_cand_for): Prefer using ivs not specific to some object.
22742         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
22743
22744 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
22745             Janis Johnson  <janis187@us.ibm.com>
22746
22747         PR target/34814
22748         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
22749         (TARGET_INSTANTIATE_DECLS): Likewise.
22750         * target.h (expand_to_rtl_hook): New target hook.
22751         (instantiate_decls): Likewise.
22752         * function.c (instantiate_decl): Make non-static.  Rename to...
22753         (instantiate_decl_rtl): ... this.
22754         (instantiate_expr): Use instantiate_decl_rtl.
22755         (instantiate_decls_1): Likewise.
22756         (instantiate_decls): Likewise.
22757         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
22758         * function.h (instantiate_decl_rtl): Add prototype.
22759         * cfgexpand.c (target.h): New include.
22760         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
22761         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
22762         (TARGET_INSTANTIATE_DECLS): Likewise.
22763         (TARGET_INITIALIZER): New target hooks added.
22764         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
22765         New prototype.
22766         * config/rs6000/rs6000.c (tree-flow.h): New include.
22767         (machine_function): Add sdmode_stack_slot field.
22768         (rs6000_alloc_sdmode_stack_slot): New function.
22769         (rs6000_instantiate_decls): Likewise.
22770         (rs6000_secondary_memory_needed_rtx): Likewise.
22771         (rs6000_check_sdmode): Likewise.
22772         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
22773         (TARGET_INSTANTIATE_DECLS): Likewise.
22774         (rs6000_hard_regno_mode_ok): Allow SDmode.
22775         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
22776         (rs6000_emit_move): Handle SDmode.
22777         (function_arg_advance): Likewise.
22778         (function_arg): Likewise.
22779         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
22780         SDmode var args for 32-bit compiles.
22781         (rs6000_secondary_reload_class): Handle SDmode.
22782         (rs6000_output_function_epilogue): Likewise.
22783         (rs6000_function_value): Simplify if statement.
22784         (rs6000_libcall_value): Likewise.
22785         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
22786         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
22787         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
22788         (movsd_hardfloat): New define_insn.
22789         (movsd_softfloat): Likewise.
22790         (movsd_store): Likewise.
22791         (movsd_load): Likewise.
22792         (extendsddd2): Likewise.
22793         (extendsdtd2): Likewise.
22794         (truncddsd2): Likewise.
22795         (movdd_hardfloat64): Fixup comment.
22796         (UNSPEC_MOVSD_LOAD): New constant.
22797         (UNSPEC_MOVSD_STORE): Likewise.
22798
22799 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
22800
22801         PR c++/34965
22802         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
22803         TRUTH_XOR_EXPR.
22804         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
22805         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
22806         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
22807         and TRUTH_XOR_EXPR.
22808
22809 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
22810
22811         PR target/34794
22812         * config.gcc: Separate AIX 5.3 from AIX 6.1.
22813         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
22814         __LONGDOUBLE128 too.
22815         * config/rs6000/aix61.h: New file.
22816
22817 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
22818
22819         PR rtl-optimization/34959
22820         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
22821         popcount and parity rtxes the same mode as their operand.
22822         Truncate or extend the result to the return value's mode
22823         if necessary.
22824
22825 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
22826
22827         PR target/34981
22828         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
22829         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
22830         to GOT_VERSION_REGNUM.
22831         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
22832         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
22833         * config/mips/mips.c (mips_emit_call_insn): New function.
22834         (mips_call_tls_get_addr): Call mips_expand_call directly.
22835         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
22836         emit_call_insn.
22837         (mips16_build_call_stub): Likewise.  Return the call insn or null.
22838         (mips_expand_call): Update the call to mips16_build_call_stub
22839         accordingly and a remove redundant condition.  Assert that MIPS16
22840         stubs do not use lazy binding.  Use mips_emit_call_insn and return
22841         the call insn.
22842         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
22843         TARGET_USE_GOT.
22844         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
22845         (mips_avoid_hazard): Remove hazard_set handling.
22846         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
22847         (UNSPEC_RESTORE_GP): ...this.
22848         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
22849         (FAKE_CALL_REGNO): Rename to...
22850         (GOT_VERSION_REGNUM): ...this.
22851         (type): Add "ghost" value.  Add an associated insn reservation.
22852         (hazard_set): Remove.
22853         (exception_receiver): Rename to...
22854         (restore_gp): ...this and update the unspec identifier accordingly.
22855         (exception_receiver, nonlocal_got_receiver): New expanders.
22856         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
22857         FAKE_CALL_REGNO.  Remove hazard_set attribute.
22858         (set_got_version, update_got_version): New patterns.
22859
22860 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
22861
22862         PR target/34970
22863         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
22864
22865 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
22866
22867         PR other/31955
22868         * doc/install.texi2html: Generate gcc-vers.texi.
22869
22870 2008-01-25  DJ Delorie  <dj@redhat.com>
22871
22872         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
22873
22874 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
22875
22876         * config/c4x: Remove directory.
22877         * config.gcc (crx-*, mt-*): Mark obsolete.
22878         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
22879         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
22880         sh-*-rtemscoff*): Remove cases.
22881         * defaults.h (C4X_FLOAT_FORMAT): Remove.
22882         * real.c (encode_c4x_single, decode_c4x_single,
22883         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
22884         c4x_extended_format): Remove.
22885         * real.h (c4x_single_format, c4x_extended_format): Remove.
22886         * doc/extend.texi (interrupt, naked): Remove mention of attributes
22887         on C4x.
22888         (Pragmas): Remove comment about c4x pragmas.
22889         * doc/install.texi (c4x): Remove target-specific instructions.
22890         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
22891         * doc/md.texi (Machine Constraints): Remove C4x documentation.
22892         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
22893         refer to C4x source files as examples.
22894         (C4X_FLOAT_FORMAT): Remove documentation.
22895
22896 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
22897
22898         * config/bfin/bfin.c (override_options): Reorder tests so that
22899         flag_pic gets enabled for -msep-data.
22900
22901 2008-01-25  Richard Guenther  <rguenther@suse.de>
22902
22903         PR middle-end/32244
22904         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
22905         to its bitfield precision if required.
22906
22907 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
22908
22909         PR middle-end/33880
22910         * tree-nested.c (walk_omp_for): New function.
22911         (convert_nonlocal_reference, convert_local_reference): Call
22912         walk_omp_for on OMP_FOR.
22913         (convert_call_expr): Call walk_body on OMP_FOR's
22914         OMP_FOR_PRE_INIT_BODY.
22915
22916 2008-01-25  Richard Guenther  <rguenther@suse.de>
22917
22918         PR tree-optimization/34966
22919         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
22920         default defs and PHI_NODEs we have to insert after the
22921         defining statement.
22922
22923 2008-01-24  Nick Clifton  <nickc@redhat.com>
22924
22925         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
22926         Provide a default definition.
22927         (LIBGCC2_UNITS_PER_WORD): Likewise.
22928
22929         * config/stormy16/stormy16.c: Include df.h for the prototype
22930         for df_regs_ever_live_p.
22931         (xstormy16_expand_builtin_va_start): Convert the stack offset
22932         into a component_ref and then use POINTER_PLUS_EXPR to add it
22933         to the incoming_virtual_args_rtx.
22934         (xstormy16_gimplify_va_arg_expr): Rename to
22935         xstormy16_gimplify_va_arg_expr.
22936         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
22937         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
22938         xstormy16_gimplify_va_arg_expr.
22939         Fix up some formatting issues.
22940
22941         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
22942         Move to predicates.md.
22943         (xs_hi_general_operand): Likewise.
22944         (xs_hi_nonmemory_operand): Likewise.
22945         * config/stormy16/predicates.md:
22946         (xstormy16_carry_plus_operand): New predicate.
22947         (xs_hi_general_operand): New predicate.
22948         (xs_hi_nonmemory_operand): New predicate.
22949         * config/stormy16/stormy16-protos.h:
22950         (xstormy16_carry_plus_operand): Delete prototype.
22951         (xs_hi_general_operand): Likewise.
22952         (xs_hi_nonmemory_operand): Likewise.
22953
22954         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
22955         modifiers as they are no longer needed and they can trigger
22956         reload spill failures.
22957
22958         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
22959         with a match_operand in order to help reload.
22960
22961         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
22962         constraint with 'e' for the 8th alternative as this version of
22963         the mov.w instruction only accepts the lower 8 registers.
22964
22965 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
22966
22967         PR target/34856
22968         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
22969         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
22970         vector elements.
22971
22972 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
22973
22974         PR middle-end/33333
22975         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
22976
22977 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
22978
22979         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
22980         New functions.
22981         (remove_structure): Update allocations list before removing structure.
22982
22983 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
22984
22985         * ipa-struct-reorg.c (is_safe_cond_expr,
22986         create_new_stmts_for_cond_expr): Use integer_zerop function,
22987         that recognize not only zero-pointer, but zero-integer too.
22988
22989 2008-01-25  Ben Elliston  <bje@au.ibm.com>
22990
22991         PR other/22232
22992         * fixproto: Escape "." in sed expression that strips leading "./".
22993
22994 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
22995
22996         PR driver/34904
22997         * gcc.c (SWITCH_OK): Removed.
22998         (SWITCH_LIVE): Changed to bit.
22999         (SWITCH_FALSE): Likewise.
23000         (SWITCH_IGNORE): Likewise.
23001         (switchstr): Change live_cond to unsigned int.
23002         (process_command): Replace SWITCH_OK with 0.
23003         (do_self_spec): Likewise.
23004         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
23005         (give_switch): Likewise.
23006         (used_arg): Likewise.
23007         (do_spec_1): Set the SWITCH_IGNORE bit.
23008         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
23009         bits.  Set the SWITCH_LIVE bit.
23010
23011 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23012
23013         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
23014
23015 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
23016
23017         PR tree-optimization/34472
23018         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
23019         parameter to a "bool *" and set *DATA to false if there is
23020         an unsafe access.  Do not delete the structure here.
23021         (check_cond_exprs): Delete it here instead.
23022         (check_cond_exprs, exclude_cold_structs): Do not increase
23023         I when removing a structure.
23024
23025 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
23026
23027         PR target/34856
23028         * config/i386/i386.c (ix86_expand_vector_init): Consider only
23029         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
23030
23031 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
23032
23033         PR middle-end/34934
23034         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
23035         a fixed vector for stack.
23036
23037 2008-01-24  Ben Elliston  <bje@au.ibm.com>
23038
23039         PR c++/25701
23040         * doc/gcc.texi (Software development): Add a direntry for g++.
23041
23042 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
23043
23044         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
23045         stale and straggling -fforce-addr comments above.
23046
23047         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
23048         define.
23049         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
23050         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
23051
23052 2008-01-23  Michael Matz  <matz@suse.de>
23053
23054         PR debug/34895
23055         * dwarf2out.c (force_type_die): Use modified_type_die instead of
23056         gen_type_die.
23057
23058 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
23059
23060         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
23061         malloc result type.
23062
23063 2008-01-23 Anatoly Sokolov <aesok@post.ru>
23064
23065         * config/avr/avr.c (avr_current_arch): New variable.
23066         (avr_arch_types): Add 'avr31' and 'avr51' entries.
23067         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
23068         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
23069         (avr_override_options): Init 'avr_current_arch'.
23070         (base_arch_s): Move from here...
23071         * config/avr/avr.h (base_arch_s): ... here. Add new members
23072         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
23073         'mega' to 'have_jmp_call'.
23074         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
23075         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
23076         macros.
23077         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
23078         architectures.
23079         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
23080         MULTILIB_MATCHES): Ditto.
23081
23082 2008-01-23  Richard Guenther  <rguenther@suse.de>
23083
23084         PR middle-end/31529
23085         * cgraphunit.c (cgraph_reset_node): Always mark the node
23086         not reachable if it is not queued already.
23087
23088 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
23089
23090         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
23091         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
23092         (cputype_selected): New static variable.
23093         (bfin_handle_option): Set it if -mcpu is used.
23094         (override_option): Select default set of workarounds if no cpu type
23095         selected on the command line.
23096         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
23097
23098         From  Michael Frysinger  <michael.frysinger@analog.com>
23099         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
23100         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
23101
23102         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
23103         for bf547, bf523, bf524, and bf526.
23104         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
23105         bf526.
23106         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
23107         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
23108         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
23109         __ADSPBF547__ and __ADSPBF54x__ for bf547.
23110         * doc/invoke.texi (Blackfin Options): Document that
23111         -mcpu now accept bf547, bf523, bf524, and bf526.
23112
23113 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
23114
23115         PR rtl-optimization/34628
23116         * combine.c (try_combine): Stop and undo after the first combination
23117         if an autoincrement side-effect on the first insn has effectively
23118         been lost.
23119
23120 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
23121
23122         PR target/34529
23123         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
23124         Offset addresses are not valid for Altivec or paired float modes.
23125
23126 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
23127
23128         PR c++/34607
23129         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
23130         if DECL_INITIAL (decl) is error_mark_node.
23131
23132         PR c++/34914
23133         * c-common.c (handle_vector_size_attribute): Only allow
23134         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
23135         the same way as pointer, array etc. types.
23136         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
23137
23138         PR c++/34917
23139         * tree.c (build_type_attribute_qual_variant): Call
23140         build_qualified_type if attributes are equal, but quals are not.
23141
23142 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23143
23144         PR 32102
23145         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
23146         * flags.h (warn_strict_aliasing): Remove.
23147         (warn_strict_overflow): Remove.
23148         * opts.c (warn_strict_aliasing): Remove.
23149         (warn_strict_overflow): Remove.
23150         * c-opts.c (c_common_handle_option): -Wall only sets
23151         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
23152         (c_common_post_options): Give default values to -Wstrict-aliasing
23153         and -Wstrict-overflow if they are uninitialized.
23154         * common.opt (Wstrict-aliasing): Specify Var and Init.
23155         (Wstrict-overflow): Likewise.
23156
23157 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
23158
23159         PR rtl-optimization/26854
23160         PR rtl-optimization/34400
23161         PR rtl-optimization/34884
23162         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
23163         DF_RD->gen.
23164         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
23165         (df_rd_bb_info.expanded_lr_out): Deleted
23166         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
23167         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
23168         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
23169         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
23170         Removed code to allocate, initialize or free expanded_lr_out.
23171         (df_rd_bb_local_compute_process_def): Restructured to make more
23172         understandable.
23173         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
23174         sets if the sets are being trimmed.
23175
23176 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
23177
23178         PR bootstrap/32287
23179         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
23180         (as_vers): Likewise.
23181         * configure: Regenerated.
23182
23183 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23184
23185         PR middle-end/33092
23186         * tree-pass.h (pass_build_alias): New pass.
23187         * tree-ssa-alias.c (gate_build_alias): New.
23188         (pass_build_alias): New.
23189         * passes.c (init_optimization_passes): Add pass_build_alias after
23190         pass_create_structure_vars.
23191
23192 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
23193
23194         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
23195         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
23196         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
23197         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
23198         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
23199         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
23200         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
23201         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
23202         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
23203         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
23204         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
23205         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
23206         * config/s390/s390.md (FP_ALL): New mode iterator.
23207         (_d): New mode attribute.
23208         ("*signbit<mode>2>"): Changed mode of first operand.
23209         ("isinf<mode>2"): Changed mode of first operand.
23210         ("*TDC_insn"): Adaptation for DFP modes.
23211
23212 2008-01-22  Ben Elliston  <bje@au.ibm.com>
23213
23214         * tree.c (check_qualified_type): Improve function description.
23215
23216 2008-01-21  Jason Merrill  <jason@redhat.com>
23217
23218         PR c++/34196
23219         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
23220         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
23221         if it is set.
23222
23223 2008-01-21  DJ Delorie  <dj@redhat.com>
23224
23225         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
23226         return zero.
23227
23228 2008-01-21  Richard Guenther  <rguenther@suse.de>
23229
23230         PR middle-end/34856
23231         * tree-cfg.c (verify_expr): Allow all invariant expressions
23232         instead of just constant class ones as reference argument.
23233         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
23234         like any other constant.
23235         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
23236
23237 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
23238
23239         * regmove.c (fixup_match_1): Update call crossed frequencies.
23240
23241 2008-01-21  Richard Guenther  <rguenther@suse.de>
23242
23243         PR c/34885
23244         * tree-inline.c (setup_one_parameter): Deal with mismatched
23245         types using a VIEW_CONVERT_EXPR.
23246
23247 2008-01-21  Alon Dayan  <alond@il.ibm.com>
23248             Olga Golovanevsky  <olga@il.ibm.com>
23249
23250         PR tree-optimization/34701
23251         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
23252         when the structure size is not a power of 2.
23253
23254 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
23255
23256         * doc/install.texi: Add doc for --enable-checking=df.
23257
23258 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23259
23260         PR rtl-optimization/34808
23261         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
23262
23263 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
23264
23265         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
23266         input.
23267
23268 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
23269
23270         PR rtl-optimization/26854
23271         PR rtl-optimization/34400
23272         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
23273         DF_RD->gen.
23274         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
23275         (df_rd_bb_info.expanded_lr_out): New.
23276         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
23277         * loop_iv.c (iv_analysis_loop_init): Ditto.
23278         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
23279         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
23280         Added code to allocate, initialize or free expanded_lr_out.
23281         (df_rd_bb_local_compute_process_def): Restructured to make
23282         more understandable.
23283         (df_rd_confluence_n): Add code to do nothing with fake edges and
23284         code to no apply invalidate_by_call sets if the sets are being trimmed.
23285         (df_lr_local_finalize): Renamed to df_lr_finalize.
23286         (df_live_local_finalize): Renamed to df_live_finalize.
23287
23288 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
23289
23290         PR target/34831
23291         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
23292         deciding whether to use reciprocal instructions.
23293
23294 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
23295
23296         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
23297         dwarf2out_note_section_used if cold_text_section is NULL.
23298
23299 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
23300
23301         PR gcov-profile/34610
23302         * tree-cfg.c (make_edges): Mark both outgoing edges from
23303         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
23304         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
23305         from OMP_FOR and OMP_CONTINUE outgoing edges.
23306
23307         * tree-profile.c (tree_profiling): Return early if
23308         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
23309         at the end.
23310         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
23311         from cfun to child_cfun.
23312         * function.h (struct function): Add after_tree_profile bit.
23313
23314 2008-01-19 Anatoly Sokolov <aesok@post.ru>
23315
23316         * config/avr/avr.S (_exit): Disable interrupt.
23317
23318 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
23319             Steven Bosscher  <stevenb.gcc@gmail.com>
23320
23321         PR rtl-optimization/26854
23322         PR rtl-optimization/34400
23323         * df-problems.c (df_live_scratch): New scratch bitmap.
23324         (df_live_alloc): Allocate df_live_scratch when doing df_live.
23325         (df_live_reset): Clear the proper bitmaps.
23326         (df_live_bb_local_compute): Only process the artificial defs once
23327         since the order is not important.
23328         (df_live_init): Init the df_live sets only with the variables
23329         found live by df_lr.
23330         (df_live_transfer_function): Use the df_lr sets to prune the
23331         df_live sets as they are being computed.
23332         (df_live_free): Free df_live_scratch.
23333
23334 2008-01-18  Ian Lance Taylor  <iant@google.com>
23335
23336         * common.opt: Add fmerge-debug-strings.
23337         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
23338         flag_merge_debug_strings rather than flag_merge_constants.
23339         * doc/invoke.texi (Option Summary): Mention
23340         -fmerge-debug-strings.
23341         (Debugging Options): Document -fmerge-debug-strings.
23342
23343 2008-01-18  Ian Lance Taylor  <iant@google.com>
23344
23345         PR c++/33407
23346         * tree.h (DECL_IS_OPERATOR_NEW): Define.
23347         (struct tree_function_decl): Add new field operator_new_flag.
23348         * tree-inline.c (expand_call_inline): When inlining a call to
23349         operator new, force the return value to go into a variable, and
23350         set DECL_NO_TBAA_P on that variable.
23351         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
23352
23353 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
23354
23355         PR debug/34484
23356         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
23357         DWARF2_DEBUGGING_INFO.
23358         (dwarf2out_note_section_used): Ditto.  Add prototype.
23359         (have_multiple_function_sections, text_section_used,
23360         cold_text_section_used, *cold_text_sections): Move declarations
23361         before their uses.
23362
23363 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
23364
23365         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
23366         field and add signal_ra.
23367         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
23368         assignments to frame state pc.  Move end of stack check after
23369         MD_FALLBACK_FRAME_STATE_FOR.
23370         (uw_update_context_1): Use frame state signal_regs if set, instead
23371         of checking signal_frame flag.
23372         (uw_update_context): Use frame state signal_ra if set.
23373         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
23374         * config/xtensa/linux-unwind.h: New file.
23375
23376 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
23377
23378         * modulo-sched.c (get_sched_window): Fix comment typo.
23379
23380 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
23381
23382         PR tree-optimization/34648
23383         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
23384
23385 2008-01-17  Anatoly Sokolov <aesok@post.ru>
23386
23387         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
23388         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
23389
23390 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
23391
23392         PR rtl-optimization/34400
23393         * df-core.c (df_worklist_dataflow_overeager,
23394         df_worklist_dataflow_doublequeue): New functions.
23395         (df_worklist_dataflow): Two different worklist solvers.
23396         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
23397         New param.
23398
23399 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23400
23401         PR testsuite/34821
23402         * doc/invoke.texi: Document the dependence on pthread for fopenmp
23403         and ftree-parallelize-loops.
23404
23405 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
23406
23407         PR rtl-optimization/34826
23408         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
23409
23410 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
23411
23412         * global.c (find_reg): Mark the eh regs as used if necessary.
23413         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
23414         * ra.h (struct allocno): no_eh_reg field added.  Changed
23415         no_stack_reg type to bitfield.
23416
23417 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
23418
23419         * tree.c (substitute_in_expr): Add missing 'break'.
23420
23421 2008-01-17  Richard Guenther  <rguenther@suse.de>
23422
23423         PR tree-optimization/34825
23424         * tree-ssa-math-opts.c (is_division_by): Do not recognize
23425         x / x as division to handle.
23426
23427 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23428
23429         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
23430         "-pthread" is specified.
23431         * pa-hpux11.h (LIB_SPEC): Likewise.
23432
23433 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
23434             Peter Bergner  <bergner@vnet.ibm.com>
23435
23436         PR rtl-optimization/33796
23437         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
23438
23439 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23440
23441         PR libgfortran/34699
23442         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
23443         static links.
23444         * pa-hpux10.h (LINK_SPEC): Likewise.
23445         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
23446
23447 2008-01-16  Richard Guenther  <rguenther@suse.de>
23448
23449         PR middle-end/32628
23450         * fold-const.c (fold_convert_const_int_from_int): Do not
23451         set overflow if that occured only because of a sign extension
23452         change when converting from/to a sizetype with the same
23453         precision and signedness.
23454
23455 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
23456
23457         PR debug/34249
23458         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
23459         location address to the correct place.  Update copyright year.
23460
23461 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23462
23463         * lambda-code.c (lambda_transform_legal_p): Handle the case of
23464         no dependences in the dependence_relations vector.
23465
23466 2008-01-16  Jan Hubicka  <jh@suse.cz>
23467
23468         PR rtl-optimization/31396
23469         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
23470         * cfg.c (dump_reg_info): Print it.
23471         * regs.h (struct reg_info_t): add freq_calls_crossed.
23472         (REG_FREQ_CALLS_CROSSED): New macro.
23473         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
23474         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
23475         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
23476         regmove_optimize): Update call crossed frequencies.
23477         * local-alloc.c (struct qty): Add freq_calls_crossed.
23478         (alloc_qty): Copute freq_calls_crossed.
23479         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
23480         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
23481         * ra.h (struct allocno): Add freq_calls_crossed.
23482
23483 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23484
23485         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
23486         libgomp when compiling with ftree-parallelize-loops.
23487         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
23488
23489 2008-01-16  Richard Guenther  <rguenther@suse.de>
23490
23491         PR tree-optimization/34769
23492         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
23493         * tree.c (int_cst_value): Instead make this function more
23494         permissive in what it accepts as valid input.  Document this
23495         function always sign-extends the value.
23496
23497 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
23498             Richard Guenther  <rguenther@suse.de>
23499
23500         PR c/34668
23501         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
23502         (gimple_fold_indirect_ref_rhs): ... this.
23503         (gimple_fold_indirect_ref): New function with foldings
23504         that preserve lvalueness.
23505         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
23506         * tree-flow.h (gimple_fold_indirect_ref): Declare.
23507         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
23508         to fold an INDIRECT_REF, fall back to the old use of
23509         fold_indirect_ref_1.
23510
23511 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23512
23513         * tree-data-ref.c (subscript_dependence_tester_1): Call
23514         free_conflict_function.
23515         (compute_self_dependence): Same.
23516
23517 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
23518
23519         PR debug/34249
23520         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
23521         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
23522         function global.
23523         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
23524         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
23525         for DWARF2_UNWIND_INFO targets.
23526
23527 2008-01-16  Richard Guenther  <rguenther@suse.de>
23528
23529         PR c/34768
23530         * c-typeck.c (common_pointer_type): Do not merge inconsistent
23531         type qualifiers for function types.
23532
23533 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
23534
23535         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
23536         loop_iterator li from previous commit.
23537
23538 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
23539
23540         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
23541
23542 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
23543
23544         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
23545         (parallelize_loops): Don't parallelize irreducible components.
23546
23547 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23548
23549         PR c++/24924
23550         * c-opts (c_common_post_options): Do not enable CPP
23551         flag_pedantic_errors by default.
23552
23553 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
23554
23555         PR rtl-optimization/31944
23556         * cse.c (remove_pseudo_from_table): New function.
23557         (merge_equiv_classes): Use above function to remove pseudo-registers.
23558         (invalidate): Likewise.
23559
23560 2008-01-13  Richard Guenther  <rguenther@suse.de>
23561
23562         PR middle-end/34601
23563         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
23564         instead of TYPE_MODE to deal with calls from expand_one_error_var.
23565
23566 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
23567
23568         * gcse.c (cprop_jump): Call validate_unshare_change instead of
23569         validate_change to unshare the source of the PC set.
23570
23571 2008-01-12  Jan Hubicka  <jh@suse.cz>
23572
23573         PR middle-end/32135
23574         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
23575         references above array bounds.  This might trigger bounds checks for
23576         pointers to arrays.
23577
23578 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
23579
23580         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
23581         new_replaceable_dependencies.
23582
23583 2008-01-12  Doug Kwan  <dougkwan@google.com>
23584
23585         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
23586         instead of OPT_Wreturn_type in warning due to ignored return type
23587         qualifiers.
23588         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
23589         options included in -Wextra.
23590         * c.opt: New option -Wignored_qualifiers.
23591         * doc/invoke.texi (Warning Options, -Wextra): Add new option
23592         -Wignore_qualifiers.
23593         (-Wignored-qualifiers): Document.
23594         (-Wreturn-type): Remove description of functionality now handled
23595         by -Wignored-qualifiers.
23596
23597 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
23598
23599         PR ada/33788
23600         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
23601         NOP_EXPR if it is between integral types with the same precision.
23602
23603 2008-01-12  Jan Hubicka  <jh@suse.cz>
23604
23605         PR other/28023
23606         * invoke.texi (max-inline-recursive-depth): Fix default value.
23607
23608 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
23609
23610         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
23611         correct type.
23612
23613 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
23614
23615         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
23616
23617 2008-01-11  James E. Wilson  <wilson@specifix.com>
23618
23619         PR target/26015
23620         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
23621
23622 2008-01-11  Anatoly Sokolov <aesok@post.ru>
23623
23624         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
23625         save/restore frame pointer register and don't use 'call-prologues'
23626         optimization in function with "OS_task" attribute.
23627
23628 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
23629
23630         PR middle-end/31309
23631         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
23632         when copying to memory.
23633
23634 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
23635
23636         PR rtl-optimization/30905
23637         * cfgcleanup.c: Include dce.h
23638         (crossjumps_occured): New global variable.
23639         (try_crossjump_bb): Exit loop after finding a fallthru edge.
23640         If something changed, set crossjumps_occured to true.
23641         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
23642         Don't add/remove fake edges to exit here...
23643         (cleanup_cfg): ...but do it here, when crossjumping.
23644         Run a fast DCE when successful crossjumps occured in the latest
23645         iteration of try_optimize_cfg.
23646
23647 2008-01-11  Richard Guenther  <rguenther@suse.de>
23648
23649         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
23650         (struct vn_unary_op_s): Likewise.
23651         (vn_reference_insert): Free old reference on hash collision.
23652
23653 2008-01-10  Raksit Ashok  <raksit@google.com>
23654
23655         PR rtl-optimization/27971
23656         * combine.c (find_split_point): Split PLUS expressions which are
23657         inside a MEM rtx, and whose first operand is complex.
23658
23659 2008-01-10  DJ Delorie  <dj@redhat.com>
23660
23661         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
23662         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
23663         (m32c_hard_regno_ok): Call the underlying function.
23664
23665 2008-01-10  Richard Guenther  <rguenther@suse.de>
23666
23667         PR middle-end/34683
23668         * tree-cfg.c (tree_merge_blocks): Do not go through the
23669         full-blown folding and stmt updating path if we just deal
23670         with virtual operands.
23671         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
23672         test for abnormal SSA_NAMEs.
23673
23674 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
23675
23676         PR middle-end/34641
23677         * reload.c (push_reload): Add assertions.  All constants from
23678         reg_equiv_constant should have been used for replacing the respective
23679         pseudo earlier.
23680         (find_reloads_address): Invoke find_reloads_address_part for
23681         constant taken from the reg_equiv_constant array.
23682
23683 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
23684
23685         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
23686         field (valnum) the first in the struct.  Replace bools with
23687         unit bit fields.
23688
23689 2008-01-10  Richard Guenther  <rguenther@suse.de>
23690
23691         PR tree-optimization/34651
23692         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
23693         types and ordering for masking and converting.
23694
23695 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
23696
23697         PR tree-optimization/34017
23698         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
23699         also for PHI_NODE expressions.
23700
23701 2008-01-09  Jan Hubicka  <jh@suse.cz>
23702
23703         PR tree-optimization/34708
23704         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
23705         based on number of case labels.
23706         (init_inline_once): Remove switch_cost.
23707         * tree-inline.h (eni_weights_d): Remove switch_cost.
23708
23709 2008-01-09  Richard Guenther  <rguenther@suse.de>
23710         Andrew Pinski  <andrew_pinski@playstation.sony.com>
23711
23712         PR middle-end/30132
23713         * gimplify.c (gimplify_cond_expr): Do not create an addressable
23714         temporary if an rvalue is ok or an lvalue is not required.
23715
23716 2008-01-09  Richard Guenther  <rguenther@suse.de>
23717
23718         PR middle-end/34458
23719         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
23720         adjust return type.
23721
23722 2008-01-09  Richard Guenther  <rguenther@suse.de>
23723
23724         PR middle-end/34679
23725         * tree.c (host_integerp): Check for sizetype only if the
23726         type is an integer type.
23727
23728 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
23729
23730         PR debug/26364
23731         * opts.c (decode_options): Disable inlining of functions called
23732         once if not in unit-at-a-time mode.
23733
23734 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
23735
23736         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
23737
23738 2008-01-08  Richard Guenther  <rguenther@suse.de>
23739
23740         PR middle-end/31863
23741         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
23742         out early if the result will be unused.
23743
23744 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
23745
23746         PR target/34709
23747         Revert:
23748
23749         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
23750         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
23751         for TARGET_RECIP.
23752
23753 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
23754
23755         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
23756         for vectorization tuned.
23757
23758 2008-01-08  Richard Guenther  <rguenther@suse.de>
23759
23760         PR tree-optimization/34683
23761         * tree-ssa-operands.c (operand_build_cmp): Export.
23762         * tree-ssa-operands.h (operand_build_cmp): Declare.
23763         * tree-vn.c (vuses_compare): Remove.
23764         (sort_vuses): Use operand_build_cmp.
23765         (sort_vuses_heap): Likewise.
23766         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
23767         to re-use old VEC if available.  Do not sort already sorted VUSEs.
23768         (vdefs_to_vec): Do not sort already sorted VDEFs.
23769
23770 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
23771
23772         PR middle-end/34694
23773         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
23774
23775 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
23776
23777         PR target/34702
23778         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
23779         limitations of reciprocal sequences on x86 targets.
23780
23781 2008-01-08  Richard Guenther  <rguenther@suse.de>
23782
23783         PR tree-optimization/34683
23784         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
23785
23786 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
23787
23788         PR target/34622
23789         * config/darwin.c (darwin_mergeable_string_section): Don't use
23790         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
23791
23792 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
23793
23794         PR target/34682
23795         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
23796         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
23797         predicates of op0 and op1 to register_operand.
23798         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
23799         expander using X87MODEF mode iterator.  Change predicates of
23800         op0 and op1 to register_operand.
23801         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
23802         corresponding patterns and macroize using MODEF macro.  Change
23803         predicates of op0 and op1 to register_operand and remove
23804         "m" constraint. Disparage "r" alternative with "!".
23805         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
23806         macroize using X87MODEF macro.  Change predicates of op0 and op1
23807         to register_operand and remove "m" constraint.  Disparage "r"
23808         alternative with "!".
23809         (absneg splitter with memory operands): Remove.
23810         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
23811         patterns and macroize using X87MODEF mode iterator.
23812         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
23813         Change predicate of op1 to register_operand.
23814         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
23815         for memory operands.
23816
23817 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
23818
23819         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
23820
23821 2008-01-07  Richard Guenther  <rguenther@suse.de>
23822
23823         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
23824         fields.
23825
23826 2008-01-07  Richard Guenther  <rguenther@suse.de>
23827
23828         PR tree-optimization/34683
23829         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
23830         VOPs of the needed size to save memory.  Use VEC_quick_push
23831         to save compile-time.
23832         (vdefs_to_vec): Likewise.
23833
23834 2008-01-07  Sa Liu  <saliu@de.ibm.com>
23835
23836         * config/spu/spu.md (divdf3): Genetate inline code for double
23837         division.  The implementation doesn't handle INF or NAN, therefore it
23838         only applies when -ffinite-math-only is given.
23839
23840 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
23841
23842         PR libstdc++/34680
23843         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
23844         * doc/cpp.texi ([Common Predefined Macros]): Document.
23845
23846 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
23847
23848         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
23849         order to use commutative addition instead of subtraction.
23850
23851 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23852             Mircea Namolaru  <namolaru@il.ibm.com>
23853             Vladimir Yanovsky  <yanov@il.ibm.com>
23854             Revital Eres  <eres@il.ibm.com>
23855
23856         PR tree-optimization/34263
23857         * tree-outof-ssa.c (process_single_block_loop_latch,
23858         contains_tree_r): New functions.
23859         (analyze_edges_for_bb): Call process_single_block_loop_latch
23860         function to empty single-basic-block latch block if possible.
23861
23862 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
23863
23864         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
23865         for TARGET_RECIP.
23866         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
23867
23868 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
23869
23870         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
23871
23872 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
23873
23874         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
23875
23876 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
23877
23878         PR tree-optimization/34618
23879         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
23880         flag from T.
23881
23882 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
23883
23884         PR target/34673
23885         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
23886         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
23887         Update copyright year.
23888
23889         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
23890         Update copyright year.
23891         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
23892         using NR fixup.
23893
23894 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
23895
23896         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
23897         edge does not point to current bb before changing need_assert.
23898
23899 2008-01-04  Richard Guenther  <rguenther@suse.de>
23900
23901         PR middle-end/34029
23902         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
23903         for verifying purposes if they are is_gimple_min_invariant.
23904
23905 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
23906
23907         PR tree-optimization/34448
23908         PR tree-optimization/34465
23909         * gimplify.c (gimplify_init_constructor): Add new parameter
23910         notify_temp_creation.  Use it.
23911         (gimplify_modify_expr_rhs): Take volatiles into account when
23912         optimizing constructors.
23913         Do not optimize constructors if gimplify_init_constructor will dump to
23914         memory.
23915         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
23916         * gcc.c-torture/compile/pr34448.c: New.
23917
23918 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
23919
23920         PR gcov-profile/34609
23921         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
23922         return_slot if result is TREE_ADDRESSABLE.
23923
23924 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
23925
23926         * config/mips/mips.md (sqrt_condition): Tweak comment.
23927         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
23928
23929 2008-01-03  Tom Tromey  <tromey@redhat.com>
23930
23931         PR c/34457
23932         * c-common.c (c_type_hash): Handle VLAs.
23933
23934 2008-01-03  Jan Hubicka  <jh@suse.cz>
23935
23936         PR tree-optimization/31081
23937         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
23938         0 when inlining and not inlining to first basic block.
23939         (remap_decl): When var is initialized to 0, don't set default_def.
23940         (expand_call_inline): Set entry_bb.
23941         * tree-inline.h (copy_body_data): Add entry_bb.
23942
23943 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
23944
23945         PR c++/34619
23946         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
23947         before returning.
23948
23949         PR tree-optimization/29484
23950         * tree-inline.c (inline_forbidden_p_2): New function.
23951         (inline_forbidden_p): Disallow inlining if some static var
23952         has an address of a local LABEL_DECL in its initializer.
23953         * doc/extend.texi (Labels as Values): Document &&foo behaviour
23954         vs. inlining.
23955
23956 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
23957
23958         PR tree-optimization/34635
23959         * tree-data-ref.c (add_other_self_distances): Make sure that the
23960         evolution step is constant.
23961
23962 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
23963
23964         PR middle-end/34608
23965         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
23966
23967 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
23968
23969         * tree-sra.c (scalarize_init): Insert the generate_element_init
23970         statements after the generate_element_zero statements.
23971
23972 2008-01-02  Richard Guenther  <rguenther@suse.de>
23973
23974         PR middle-end/34093
23975         PR middle-end/31976
23976         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
23977         for very large number of operands instead of ICEing.
23978
23979 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
23980
23981         PR target/34013
23982         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
23983         while stack probing.
23984
23985 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
23986
23987         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
23988         in C++0x mode.
23989
23990 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
23991
23992         PR libmudflap/26442
23993         * tree-mudflap.c (mx_register_decls): Guard warning by
23994         !DECL_ARTIFICIAL check.
23995
23996 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
23997
23998         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
23999         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
24000         sse5_perm<mode>): Fix constraints.