OSDN Git Service

2008-09-29 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
2
3         * config/i386/i386.opt: Add msse2avx.
4
5         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
6         * config/i386/linux64.h (ASM_SPEC): Likewise.
7
8         * doc/invoke.texi: Document -msse2avx.
9
10 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
11
12         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
13
14 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
15
16         * ifcvt.c (noce_emit_store_flag): If using condition from original
17         jump, reverse it if if_info->cond was reversed.
18
19 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
20
21         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
22         non-constant memory if it cannot be forced to constant memory.
23         Overhaul surrounding code and factor out common condition.
24
25 2008-09-29  Jeff Law <law@redhat.com>
26
27         * reload1.c (alter_reg): Add missing curly braces.
28
29 2008-09-29  Michael J. Eager  <eager@eagercon.com>
30
31         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
32         are easy.
33         * config/rs6000/rs6000.c (rs6000_override_options): Move
34         rs6000_init_hard_regno_mode_ok after all options changed.
35         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
36         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
37         -msimple-fpu flags.  Add warning messages if single FP not configured.
38         (rs6000_file_start): Output gnu_attribute for single-float.
39         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
40         (rs6000_legitimize_address): Likewise.
41         (rs6000_legitimize_reload_address): Likewise.
42         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
43         TARGET_SINGLE_FLOAT.
44         (function_arg_advance): Likewise (partial conversion).
45         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
46         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
47         TARGET_SINGLE_FLOAT.
48         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
49         (rs6000_emit_prologue): Likewise.
50         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
51         TARGET_SINGLE_FLOAT.
52         (rs6000_libcall_value): Likewise.
53         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
54         (TARGET_DOUBLE_FLOAT): New default to 1
55         (TARGET_SIMPLE_FPU): New default to 0
56         (TARGET_SINGLE_FPU): New default to 0
57         (TARGET_SINGLE_FLOAT_MODE): New.
58         (TARGET_DOUBLE_FLOAT_MODE): New.
59         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
60         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
61         UNITS_PER_FP_WORD
62         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
63         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
64         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
65         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
66         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
67         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
68         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
69         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
70         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
71         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
72         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
73         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
74         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
75         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
76         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
77         cmptf_internal1, *cmptf_internal2): Condition on
78         TARGET_DOUBLE_FLOAT.
79         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
80         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
81         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
82         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
83         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
84         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
85         TARGET_SINGLE_FLOAT.
86         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
87         * config/rs6000/rs6000.opt (-msingle-float): New.
88         (-mdouble-float): New.
89         (-msimple-fpu): New.
90         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
91         -msingle-float, -mdouble-float, -msimple-fpu options.
92         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
93         _SOFT_DOUBLE for -msingle-float.
94         * config.gcc: New config for target=powerpc-xilinx-eabi.
95
96 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
97
98         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always have
99         exit and entry.
100         (new_scop): Take entry and exit edge to define new SCoP.
101         (sd_region_p): New structure used during SCoP detection.
102         (move_scops): Delete.
103         (move_sd_regions): New.
104         (scopdet_info): Change the definition from edges back to basic_blocks.
105         (scopdet_edge_info):  Work on basic_blocks and rename to
106         scopdet_basic_block_info.
107         (split_difficult_bb): At the moment removed. We should later
108         add it at another place.
109         (build_scops_1): Work on basic_blocks.
110         (bb_in_sd_region): New.
111         (find_single_entry_edge): New.
112         (find_single_exit_edge): New.
113         (create_single_entry_edge): New.
114         (sd_region_without_exit): New.
115         (create_single_exit_edge): New.
116         (unmark_exit_edges): New.
117         (mark_exit_edges): New.
118         (create_sese_edges): New.
119         (build_graphite_scops): New.
120         (build_scops): Make SCoPs SESE.
121         (limit_scops): Use the new functions.
122
123 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
124
125         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
126
127 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
128
129         PR target/37640
130         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
131         address to a register before taking the lower part.
132
133 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
134
135         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
136         for SHmedia.
137
138 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
139             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
140
141         PR tree-opt/36891
142         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
143         the newly created variable.
144         Create a VECTOR_CST of all 1s for vector types.
145
146 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
147
148         PR middle-end/36575
149         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
150
151 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
152
153         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
154         order to convert between modes.
155         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
156
157 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
158
159         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
160         if needed.
161
162 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
163
164         Revert:
165         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
166         * ira-lives.c:...
167         * doc/rtl.texi:...
168
169 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
170
171         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
172         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
173         them to yield false with MIPS16.
174
175 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
176
177         PR middle-end/37275
178         * dwarf2out.c (tls_mem_loc_descriptor): New function.
179         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
180         mem_loc_descriptor failed.  Accept UNSPEC.
181         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
182         fail if one of the loc_descriptor calls for pieces failed.
183         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
184         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
185         if loc_descriptor_from_tree_1 on offset failed.
186
187         PR middle-end/37576
188         * opts.c (common_handle_option): Don't call print_specific_help with
189         CL_SAVE as first argument.
190
191 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
192             Steve Ellcey  <sje@cup.hp.com>
193
194         * configure: Regenerate for new libtool.
195         * aclocal.m4: Ditto.
196
197 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
198
199         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
200         alias set on MEM when saving stack pointer.
201         * config/rs6000/rs6000.md (allocate_stack): Likewise
202
203 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
204
205         PR tree-optimization/37574
206         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
207         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
208         instead of vector_type for constants. Take computation out of loop.
209         (vect_get_vec_def_for_operand): Use only vectype for constant case,
210         and use only vector_type for invariant case.
211         (get_initial_def_for_reduction): Use vectype instead of vector_type.
212
213 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
214
215         PR c/37645
216         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
217         the decl is a VAR_DECL or FUNCTION_DECL.
218
219 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
220
221         PR middle-end/37535
222         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
223         (mark_ref_live, mark_ref_dead): Use them.
224         (def_conflicts_with_inputs_p): Remove.
225         (mark_early_clobbers): New function.
226         (process_bb_node_lives): Call preprocess_constraints and
227         mark_early_clobbers.
228
229         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
230
231 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
232
233         PR middle-end/37448
234         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
235         (ira_compress_allocno_live_ranges): New prototype.
236
237         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
238         (coalesced_allocnos_living_at_program_points): New.
239         (coalesced_allocnos_live_at_points_p,
240         set_coalesced_allocnos_live_points): New functions.
241         (coalesce_spill_slots): Rewrite.
242         
243         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
244         ira_compress_allocno_live_ranges): New functions.
245
246         * ira-build.c (ira_flattening): Call
247         ira_compress_allocno_live_ranges.
248         (ira_build): Ditto.
249
250 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
251
252         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
253         optimization.
254
255 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
256
257         * combine.c (make_compound_operation): Handle the 'E' format.
258         (count_rtxs): Likewise.
259         (update_table_tick): Likewise.
260         (get_last_value_validate): Likewise.
261
262 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
263
264         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
265
266 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
267
268         * matrix-reorg.c (transform_allocation_sites): Initializers 
269         added to avoid the warning.
270
271 2008-09-25  Martin Jambor  <mjambor@suse.cz>
272
273         * cgraph.c (free_nodes): New variable.
274         (NEXT_FREE_NODE): New macro.
275         (cgraph_create_node): Reuse nodes from the free list.  Do not
276         update uid if doing so.
277         (cgraph_remove_node): Add the node to the free list.
278
279 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
280
281         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
282
283 2008-09-24  Richard Henderson  <rth@redhat.com>
284
285         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
286         * unwind-dw2.c (execute_stack_op): Handle it.
287
288 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
289
290         Revert:
291         2008-09-24  Michael J. Eager  <eager@eagercon.com>
292
293 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
294
295         * c-common.c (fname_decl): New location argument.
296         * c-common.h (fname_decl): Same.
297         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
298         {warning,error}.
299         (c_parser_typeof_specifier): Same.
300         (c_parser_parms_list_declarator): Same.
301         (c_parser_asm_string_literal): Same.
302         (c_parser_compound_statement_nostart): Same.
303         (c_parser_label): Same.
304         (c_parser_do_statement): Same.
305         (c_parser_asm_statement): Same.
306         (c_parser_unary_expression): Same.
307         (c_parser_sizeof_expression): Same.
308         (c_parser_postfix_expression): Same.
309         (c_parser_pragma): Same.
310         (c_parser_omp_clause_collapse): Same.
311         (c_parser_omp_clause_num_threads): Same.
312         (c_parser_omp_clause_schedule): Same.
313         (c_parser_omp_all_clauses): Same.
314         (c_parser_omp_sections_scope): Same.
315         (c_parser_omp_for_loop): Same.  Pass condition's location to
316         c_objc_common_truthvalue_conversion.
317         (c_parser_enum_specifier): Remove comment.
318
319 2008-09-24  Michael J. Eager  <eager@eagercon.com>
320
321         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
322         are easy.
323         * config/rs6000/rs6000.c (rs6000_override_options): Move
324         rs6000_init_hard_regno_mode_ok after all options changed.
325         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
326         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
327         -msimple-fpu flags.  Add warning messages if single FP not configured.
328         (rs6000_file_start): Output gnu_attribute for single-float.
329         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
330         (rs6000_legitimize_address): Likewise.
331         (rs6000_legitimize_reload_address): Likewise.
332         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
333         TARGET_SINGLE_FLOAT.
334         (function_arg_advance): Likewise.
335         (function_arg): Likewise.
336         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
337         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
338         TARGET_SINGLE_FLOAT.
339         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
340         (rs6000_emit_prologue): Likewise.
341         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
342         TARGET_SINGLE_FLOAT.
343         (rs6000_libcall_value): Likewise.
344         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
345         (TARGET_DOUBLE_FLOAT): New default to 1
346         (TARGET_SIMPLE_FPU): New default to 0
347         (TARGET_SINGLE_FPU): New default to 0
348         (TARGET_SINGLE_FLOAT_MODE): New.
349         (TARGET_DOUBLE_FLOAT_MODE): New.
350         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
351         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
352         UNITS_PER_FP_WORD
353         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
354         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
355         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
356         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
357         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
358         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
359         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
360         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
361         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
362         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
363         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
364         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
365         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
366         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
367         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
368         cmptf_internal1, *cmptf_internal2): Condition on
369         TARGET_DOUBLE_FLOAT.
370         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
371         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
372         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
373         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
374         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
375         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
376         TARGET_SINGLE_FLOAT.
377         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
378         * config/rs6000/rs6000.opt (-msingle-float): New.
379         (-mdouble-float): New.
380         (-msimple-fpu): New.
381         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
382         -msingle-float, -mdouble-float, -msimple-fpu options.
383         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
384         _SOFT_DOUBLE for -msingle-float.
385         * config.gcc: New config for target=powerpc-xilinx-eabi.
386
387 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
388
389         * config/sparc/constraints.md: New file.
390         * config/sparc/sparc.md: Include it.
391         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
392         (sparc_extra_constraint_check): Delete.
393         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
394         (memory_ok_for_ldd): New predicate.
395         (sparc_extra_constraint_check): Delete.
396         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
397         (CONST_OK_FOR_LETTER_P): Likewise.
398         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
399         (EXTRA_CONSTRAINT): Likewise.
400
401 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
402
403         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
404
405 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
406
407         * alias.c (find_base_value): Use FIND_BASE_TERM.
408         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
409
410 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
411
412         * config/i386/i386.c: Include cselib.h.
413         (ix86_pic_register_p): New function.
414         (ix86_delegitimize_address): Use it to check for the PIC register.
415
416 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
417
418         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
419         * config/i386/i386.c (ix86_find_base_term): Don't check for
420         SYMBOL_REF and LABEL_REF.
421
422 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
423
424         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
425         constant PLUS in a CONST.
426
427 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
428
429         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
430         check for sibcall support for w64.
431
432 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
433
434         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
435
436 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
437
438         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
439         parser_build_binary_op.
440         * c-decl.c (build_enumerator): Pass location to build_binary_op.
441         * c-typeck.c (build_array_ref): Same.
442         (parser_build_unary_op): New location argument.
443         (pointer_diff): Pass location to build_binary_op,
444         c_objc_common_truthvalue_conversion.
445         (build_modify_expr): Same.
446         (build_unary_op): New location argument.
447         (build_binary_op): New location argument.
448         (c_objc_common_truthvalue_conversion): Pass location to
449         c_*common_truthvalue_conversion.
450         * c-convert.c (convert): Same.
451         * c-common.c (binary_op_error): New location argument.
452         (pointer_int_sum): Pass location to build_binary_op.
453         (c_common_truthvalue_conversion): New location argument.
454         (warn_for_sign_compare): Same.
455         * c-common.h: Add location argument to c_common_truthvalue_conversion,
456         binary_op_error, build_binary_op, warn_for_sign_compare.
457         * c-parser.c (c_parser_condition): Pass location to
458         c_*common_truthvalue_conversion.
459         (c_parser_conditional_expression): Save condition's location and pass
460         it on down.
461         (c_parser_binary_expression): Same, but for the binary operator's
462         location.
463         (c_parser_omp_for_loop): Pass location to
464         c_objc_common_truthvalue_conversion.
465
466 2008-09-23  Martin Jambor  <mjambor@suse.cz>
467
468         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
469         (cgraph_node_remove_callees): New temporary f.  Hold the next item
470         in f when looping.
471         (cgraph_node_remove_callers): Likewise.
472
473         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
474         (ipa_node_removal_hook): Likewise.
475
476         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
477         gimple_call_copy_skip_args and moved to the gimple_call section.
478         * gimple.c (gimple_copy_call_skip_args): Renamed to
479         gimple_call_copy_skip_args.  Changed al users.
480
481 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
482
483         * ira-color.c (start_allocno_priorities): Rename to
484         setup_allocno_priorities.  Use costs and
485         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
486         range lengths.  Get rid off doubles.
487         (ira_fast_allocations): Call start_allocno_priorities.
488         
489 2008-09-22  David Daney  <ddaney@avtrex.com>
490
491         PR target/37593
492         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
493         register if TARGET_LONG_CALLS.
494
495 2008-09-22  Richard Guenther  <rguenther@suse.de>
496
497         PR tree-optimization/37145
498         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
499         value-numbering union accesses with their offset and size only.
500         (visit_reference_op_load): Fix simplification of inserted conversions.
501         * tree-ssa-pre.c (find_or_generate_expression): Do not
502         recursively generate expressions if running FRE.
503
504 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
505
506         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
507         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el,
508         *baddu_di<mode>): New patterns.
509
510 2008-09-22  Richard Guenther  <rguenther@suse.de>
511
512         PR tree-optimization/37145
513         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
514         (phi_translate_1): Constant fold references.
515
516 2008-09-22  Ira Rosen  <irar@il.ibm.com>
517
518         PR tree-optimization/37482
519         * tree-vectorizer.h (struct _slp_instance): Add new field.
520         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
521         (get_earlier_stmt): New function.
522         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
523         function.
524         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
525         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
526         asserts that GSI points to the scalar statement being vectorized.
527         Set new statement location according to GSI.
528         (vect_schedule_slp_instance): Use GSI of
529         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
530
531 2008-09-21  Jan Hubicka  <jh@suse.cz>
532
533         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
534         (ipcp_insert_stage): Update dead_nodes bitmap.
535
536 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
537
538         PR target/37528 
539         * config/i386/t-cygming (SHLIB_LC): Remove.
540         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
541         * config/i386/t-cygwin (SHLIB_LC): Specify all required
542         libraries.
543
544 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
545
546         PR middle-end/37170
547         PR middle-end/37280
548         * final.c (mark_symbol_ref_as_used): New helper function.
549         (output_operand): Instead of just looking inside MEMs for
550         SYMBOL_REFs, use new helper function and for_each_rtx.
551         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
552         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
553         Make head comment more general.
554         * config/darwin.c (machopic_output_indirection): Handle weak
555         references here, like in assemble_external.
556
557 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
558
559         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
560         (sparc_emit_float_lib_cmp): Change return type.
561         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
562         (gen_compare_operator): New function.
563         (sparc_emit_float_lib_cmp): Return the new operator to be used in
564         the comparison sequence.  Minor tweaks.
565         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
566         that the final operator and the result of sparc_emit_float_lib_cmp
567         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
568         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
569         buneq, bunge, bunle, bltgt): Assert that the final operator and the
570         result of sparc_emit_float_lib_cmp match for software TFmode.
571         (movqicc, movhicc, movsicc, movdicc): Merge into...
572         (mov<I:mode>cc): ...this.
573         (movsfcc, movdfcc, movtfcc): Merge into...
574         (mov<F:mode>cc): ...this.
575         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
576         into...
577         (mov<I:mode>_cc_v9): ...this.
578         (movdi_cc_sp64_trunc): Delete.
579         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
580         movdi_cc_reg_sp64): Merge into...
581         (mov<I:mode>_cc_reg_sp64): ...this.
582         (movsf_cc_sp64): Rename into...
583         (movsf_cc_v9): ...this.
584         (movdf_cc_sp64): Rename into...
585         (movdf_cc_v9): ...this.
586         (movtf_cc_hq_sp64): Rename into...
587         (movtf_cc_hq_v9): ...this.
588         (movtf_cc_sp64): Rename into...
589         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
590
591 2008-09-21  Diego Novillo  <dnovillo@google.com>
592
593         * doc/gccint.texi: Include generic.texi and gimple.texi.
594         Re-order index.
595         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
596         (GIMPLE): Move to gimple.texi.
597         (Annotations): Remove references to to stmt_ann_t and
598         ssa_name_ann_t.
599         (SSA Operands): Rename from 'Statement Operands'.
600         * doc/generic.texi: New.
601         * doc/gimple.texi: New.
602         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and
603         gimple.texi.
604         * Makefile.in (TEXI_GCCINT_FILES):
605         * gimple.c (gimple_copy_call_skip_args): Rename from
606         giple_copy_call_skip_args.  Update all users.
607         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
608
609 2008-09-21  Ira Rosen  <irar@il.ibm.com>
610
611         PR tree-optimization/37539
612         * tree-vect-transform.c (vect_transform_strided_load): Save vector
613         statement in related statement field only for the first load of the
614         group of loads with the same data reference.
615
616 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
617
618         * config/mips/mips.h (TUNE_OCTEON): New macro.
619         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
620         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
621         * config/mips/octeon.md: New file.
622         * config/mips/mips.md: Include octeon.md.  Restore
623         semi-alphabetical order of include files.
624
625 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
626
627         PR target/37571
628         * config/i386/i386.md (*jcc_fused_1): Removed.
629         (*jcc_fused_2): Likewise.
630         (*jcc_fused_3): Likewise.
631         (*jcc_fused_4): Likewise.
632
633 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
634
635         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
636         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
637         * target.h (gcc_target): Add ira_cover_classes.
638         * ira.c: Remove IRA_COVER_CLASSES guards.
639         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
640         instead of IRA_COVER_CLASSES.
641         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
642         (setup_class_translate): Likewise.
643         (setup_reg_class_intersect_union): Likewise.
644         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
645         test of targetm.ira_cover_classes.
646         * opts.c (decode_options): Use targetm.ira_cover_classes instead
647         of IRA_COVER_CLASSES.
648         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
649         (TARGET_INITIALIZER): Include it.
650         * targhooks.h (default_ira_cover_classes): Declare.
651         * targhooks.c (default_ira_cover_classes): New function.
652
653 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
654         
655         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
656         
657 2008-09-19  Ian Lance Taylor  <iant@google.com>
658
659         * varasm.c (narrowing_initializer_constant_valid_p): Return
660         NULL_TREE if ENDTYPE is not an integer.
661
662 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
663
664         PR tree-opt/30930
665         * tree-ssa.c (execute_update_addresses_taken): Also update
666         DECL_GIMPLE_REG_P for vector and complex types.
667
668 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
669             Jan Hubicka  <jh@suse.cz>
670
671         PR middle-end/37567
672         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
673         empty before freeing them.
674         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
675
676 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
677
678         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
679         * config/xtensa/predicates.md (tls_symbol_operand): New.
680         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
681         (TARGET_CANNOT_FORCE_MEM): Define.
682         (xtensa_tls_symbol_p): New.
683         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
684         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
685         (xtensa_tls_module_base): New.
686         (xtensa_call_tls_desc): New.
687         (xtensa_legitimize_tls_address): New.
688         (xtensa_legitimize_address): Handle TLS symbols.
689         (xtensa_tls_referenced_p_1): New.
690         (xtensa_tls_referenced_p): New.
691         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and UNSPEC_DTPOFF.
692         (XTENSA_BUILTIN_THREAD_POINTER): New.
693         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
694         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3 builtin.
695         Add declarations for __builtin_thread_pointer and
696         __builtin_set_thread_pointer.
697         (xtensa_fold_builtin): Recognize new builtins.
698         (xtensa_expand_builtin): Expand new builtins.
699         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
700         (TARGET_THREADPTR): Define.
701         (HAVE_AS_TLS): Define default value.
702         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
703         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
704         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
705         (UNSPECV_SET_TP): New.
706         (sym_TPOFF, sym_DTPOFF): New.
707         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
708         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
709         * configure: Regenerated.
710         
711 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
712
713         PR target/37394
714         * config/ia64/ia64.c (ia64_optimization_options): Move
715         checking and setting flag_schedule_insns_after_reload and
716         ia64_flag_schedule_insns2 back to ...
717         (ia64_override_options): Here.
718
719 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
720
721         PR rtl-opt/37451
722         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
723         zero extend count after the correction to it is done.
724         (doloop_optimize): Update call to doloop_modify, don't zero extend
725         count before call.
726
727 2008-09-18  Martin Jambor  <mjambor@suse.cz>
728
729         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
730
731         * ipa-prop.c: Correct comments.
732         * ipa-prop.h: Likewise.
733
734 2008-09-18  Jan Hubicka  <jh@suse.cz>
735
736         PR middle-end/37448
737         * ipa-reference.c (ipa_reference_local_vars_info_d,
738         ipa_reference_global_vars_info_d,
739         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
740         ipa_reference_vars_info_t): Move here from ipa-reference.h
741         (node_duplication_hook_holder, node_removal_hook_holder): New.
742         (get_reference_vars_info_from_cgraph): Rename to ...
743         (get_reference_vars_info): ... this one, use cgraph uids.
744         (get_local_reference_vars_info, get_global_reference_vars_info):
745         Use cgraph instead of decl.
746         (ipa_reference_get_read_local, ipa_reference_get_written_local): Remove.
747         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
748         ipa_reference_get_written_global, ipa_reference_get_not_written_global): Use
749         cgraph argument.
750         (check_call): Simplify avail check.
751         (scan_stmt_for_static_refs): Update.
752         (propagate_bits): Update.
753         (merge_callee_local_info): Remove.
754         (init_function_info): Use cgraph nodes.
755         (clean_function_local_data): Break out from ...
756         (clean_function): ... here.
757         (copy_local_bitmap, copy_global_bitmap): New functions.
758         (duplicate_node_data, remove_node_data): New functions.
759         (generate_summary): Register hooks; use visibility instead of
760         master clones.
761         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
762         * ipa-reference.h (ipa_reference_local_vars_info_d,
763         ipa_reference_global_vars_info_d,
764         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
765         ipa_reference_vars_info_t): Move to ipa-reference.c
766         (ipa_reference_get_read_local, ipa_reference_get_written_local):
767         Remove.
768         (ipa_reference_get_read_global, ipa_reference_get_written_global,
769         ipa_reference_get_not_read_global, ipa_reference_get_not_written_global):
770         Update prototype.
771         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
772         (init_state): Remove.
773         (node_duplication_hook_holder, node_removal_hook_holder): New.
774         (get_function_state, set_function_state): Use VECtor.
775         (analyze_function): Check body availability.
776         (add_new_function): Likewise.
777         (duplicate_node_data, remove_node_data): New.
778         (generate_summary): Register hooks; do not care about clones.
779         (propafate): Do not care about clones; recursive functions are not looping.
780         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
781         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
782         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
783         static.
784         * tree-flow.h (function_ann_d): Remove reference_vars_info.
785         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops): Update call of
786         ipa-reference accesors.
787
788 2008-09-18  Simon Baldwin  <simonb@google.com>
789
790         * c-opts.c (c_common_handle_option): Add handling for
791         -Wbuiltin-macro-redefined command line option.
792         * c.opt: Added builtin-macro-redefined option.
793         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
794         documentation.
795
796 2008-09-18  Richard Guenther  <rguenther@suse.de>
797
798         PR tree-optimization/37258
799         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
800         and signedness for integral types.
801         (vn_phi_eq): Require compatible types.
802
803 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
804
805         PR debug/34037
806         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
807         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
808         VAR_DECL.
809         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
810         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
811         ggc_free other TREE_LIST nodes from that chain.
812         * function.c (instantiate_decls): Instantiate also DECL_RTL
813         of vars in cfun->local_decls, free that list afterwards.
814
815 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
816
817         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
818         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
819
820 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
821
822         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
823         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
824
825 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
826
827         PR tree-optimization/37102
828         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
829         from a node. Check to see if another PHI is dead.
830         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
831         remove real PHIs which have no uses.
832         (rewrite_out_of_ssa): Call eliminate_useless_phis.
833
834 2008-09-18  Richard Guenther  <rguenther@suse.de>
835
836         PR middle-end/37284
837         * tree-cfg.c (remove_useless_stmts_1): Remove
838         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
839
840 2008-09-18  Nick Clifton  <nickc@redhat.com>
841
842         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
843         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
844         to frv_secondary_reload_class.
845         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
846         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
847         (frv_secondary_reload_class): Omit unused parameter.
848         (frv_secondary_reload): New function.  Handle the case when
849         secondary_reload_class() is called before the reload_(in|out)
850         _optabs have been initialised.
851         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
852         unused parameter.
853         * config/frv/frv.md: Define an exclusion set between fr550_m0
854         and fr550_f0.
855
856 2008-09-18  Richard Guenther  <rguenther@suse.de>
857
858         PR tree-optimization/37456
859         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
860         want to insert after ends a BB insert on the single fallthru
861         outgoing edge.
862
863 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
864
865         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
866         Mention -march=z9-109, z9-ec and z10.
867
868 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
869
870         PR rtl-optimization/37544
871         * regrename.c (maybe_mode_change): Exit early when copy_mode
872         is narrower than orig_mode and narrower than new_mode.
873
874 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
875
876         PR middle-end/37499
877         * sched-int.h (struct _haifa_insn_data): Remove unused field
878         ref_count.
879
880         * sched-rgn.c (ref_counts): Remove.
881         (insn_referenced): New static variable.
882         (INSN_REF_COUNT): Remove.
883         (sched_run_compute_dependencies): Use insn_referenced instead of
884         INSN_REF_COUNT.
885         (add_branch_dependences): Likewise.  Delete dead assignment.
886
887 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
888
889         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
890         consumer is an asm.  Add comment why this is important.
891         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
892         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around
893         it.
894
895 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
896
897         * expr.c (emit_group_store): Do not shift before moving via a
898         stack slot.
899
900 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
901
902         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
903         from aggregate to non-aggregate type if the bit pattern is not fully
904         preserved afterwards.
905
906 2008-09-17  Richard Guenther  <rguenther@suse.de>
907
908         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
909         (verify_gimple_assign): ... this.  Split into ...
910         (verify_gimple_assign_unary): ... this,
911         (verify_gimple_assign_binary): ... that,
912         (verify_gimple_assign_single): ... and this.
913         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
914         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
915         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
916         (verify_types_in_gimple_reference): Be forgiving with
917         VIEW_CONVERT_EXPRs.
918         (verify_gimple_phi): Deal with virtual operands.
919
920         * tree.def (PREDICT_EXPR): Change to tcc_expression.
921
922 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
923
924         * tree.c (get_callee_fndecl): Don't call the language hook.
925         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
926         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
927         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
928
929 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
930
931         * tree.c (protected_set_expr_location): Don't unnecessarily
932         check for error_mark_node.
933
934 2008-09-17  Art Haas  <ahaas@impactweather.com>
935
936         * ipa-reference.c (analyze_function): Declare step only if
937         ENABLE_CHECKING is defined.
938
939 2008-09-17  Jan Hubicka  <jh@suse.cz>
940
941         PR c++/18071
942         * tree.h (DECL_INLINE): remove.
943         (DECL_DECLARED_INLINE_P): Update docs.
944         (DECL_NO_INLINE_WARNING_P): new.
945         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
946         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
947
948 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
949             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
950
951         PR bootstrap/37441
952         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
953         false.
954
955 2008-09-17  Jan Hubicka  <jh@suse.cz>
956
957         * ipa-reference.c (ipa_obstack): Remove.
958         (local_info_obstack, global_info_obstack): New.
959         (add_static_var): We now handle variables only.
960         (mark_address_taken, mark_load, mark_store): New functions based on ...
961         (check_operand): ... remove.
962         (get_asm_stmt_operands): Rename to ...
963         (check_asm_memory_clobber): ... this. Look only for memory clobber.
964         (scan_stmt_for_static_refs): Rewrite.
965         (scan_op_for_static_refs): Rename to ...
966         (scan_initializer_for_static_refs): do not look for VAR_DECL
967         initializers; stop recursion on types and decls.
968         (ipa_init): Use proper obstacks.
969         (analyze_variable): Use scan_initializer_for_static_refs.
970         (init_function_info): Use local obstack.
971         (analyze_function): Simplify.
972         (add_new_function): We don't need visited_nodes obstack.
973         (generate_summary): Use proper obstacks; cleanup after propagation.
974
975 2008-09-17  Richard Guenther  <rguenther@suse.de>
976
977         PR middle-end/37385
978         PR tree-optimization/37491
979         * alias.c (get_alias_set): Use the canonical type.
980         * tree-vect-transform.c (vectorizable_store): Use the type of
981         the lhs for the vector type.  Adjust checking.
982         (vectorizable_load): Adjust checking.
983
984 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
985             Adam Nemet  <anemet@caviumnetworks.com>
986
987         PR rtl-optimization/37483
988         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
989         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
990         Rearrange code to better match the original comment.  Check
991         t_unconditional first.  Improve comment.
992
993 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
994
995         PR c/37529
996         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
997         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
998
999         PR c++/37530
1000         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
1001         GIMPLE_TRY if cleanup sequence is empty.
1002
1003 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1004
1005         PR middle-end/37263
1006         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
1007         eliminate IV if the cost are the same.
1008
1009 2008-09-16  Richard Guenther  <rguenther@suse.de>
1010
1011         PR middle-end/37380
1012         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
1013         if not necessary.
1014
1015 2008-09-16  Richard Guenther  <rguenther@suse.de>
1016
1017         PR tree-optimization/37508
1018         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
1019
1020 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
1021
1022         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
1023
1024 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1025
1026         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
1027         use gen_floatdidf2 directly.
1028         (floatunssidf2): Likewise.
1029         (floatsidf_ppc64_mfpgpr): Remove.
1030         (floatsidf_ppc64): Remove.
1031         (floatunssidf_ppc64): Remove.
1032
1033 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
1034
1035         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
1036         rather than update_cost_queue.
1037
1038         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
1039         in every call starting with the second one, instead of only when
1040         alias_bitmap_obstack.elements != NULL.
1041
1042         * tree-predcom.c (filter_suitable_components): Free all refs in
1043         act->refs vector before calling release_component.
1044         (add_ref_to_chain): Free ref if not adding it to chain->refs.
1045
1046         * tree-data-ref.c (free_subscripts): Free all subscript objects.
1047
1048         * tree-loop-linear.c (linear_transform_loops): Initialize
1049         lambda_obstack only after calling perfect_loop_nest_depth.
1050         Goto free_and_continue instead of just continue for later failures.
1051
1052         PR middle-end/37479
1053         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
1054
1055         PR libmudflap/36397
1056         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
1057
1058 2008-09-14  Andreas Schwab  <schwab@suse.de>
1059
1060         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
1061
1062 2008-09-14  Jan Hubicka  <jh@suse.cz>
1063
1064         * invoke.texi (-fconserve-stack): Document.
1065         * opts.c (decode_options): Handle conserve_stack.
1066         * common.opt (fconvserve_stack): New.
1067
1068 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
1069
1070         * config.host: Add x-aix to host_xmake_file.
1071         * config/rs6000/t-aix52: Do not override LDFLAGS.
1072         * config/rs6000/x-aix: New file.
1073
1074 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
1075
1076         PR target/19636
1077         PR target/24894
1078         PR target/31644
1079         PR target/31786
1080         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
1081         is not recognized as a valid register usage. Allow REG_X to be used
1082         as a base pointer.
1083         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
1084         forces a reload when using a base register.
1085
1086 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
1087
1088         * config/i386/cygming-crtend.c (register_frame_ctor): If
1089         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
1090         directly with atexit.
1091         (deregister_frame_ctor): Rename to ...
1092         (deregister_frame_dtor): Use to call __gcc_deregister_frame
1093         if !DEFAULT_USE_CXA_ATEXIT.
1094
1095 2008-09-13  Jan Hubicka  <jh@suse.cz>
1096
1097         * cgraph.c: Include value-prof.h
1098         * Makefile.in (cgraph.o): Add value-prof.h dependency.
1099
1100 2008-09-13  Jan Hubicka  <jh@suse.cz>
1101
1102         PR middle-end/32581
1103         * tree-profile.c (add_abnormal_goto_call_edges): New function.
1104         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
1105         tree_gen_one_value_profiler, tree_gen_average_profiler,
1106         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
1107
1108 2008-09-13  Jan Hubicka  <jh@suse.cz>
1109
1110         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
1111         too many bytes on misalligned blocks.
1112
1113 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1114
1115         * doc/cfg.texi: Fix some typos.
1116         * doc/extend.texi: Likewise.
1117         * doc/install.texi: Likewise.
1118         * doc/invoke.texi: Likewise.
1119         * doc/rtl.texi: Likewise.
1120         * doc/tree-ssa.texi: Likewise.
1121
1122 2008-09-13  Richard Guenther  <rguenther@suse.de>
1123
1124         PR middle-end/30141
1125         * tree-nested.c (finalize_nesting_tree_1): Generate valid
1126         gimple stores for memory rhs.
1127
1128 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
1129
1130         PR rtl-optimization/37489
1131         * cse.c (fold_rtx): Don't return const_true_rtx for float
1132         compare if FLOAT_STORE_FLAG_VALUE is undefined.
1133
1134 2008-09-13  Jan Hubicka  <jh@suse.cz>
1135
1136         PR tree-optimization/37392
1137         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
1138
1139 2008-09-13  Martin Jambor  <mjambor@suse.cz>
1140             Jan Hubicka  <jh@suse.cz>
1141
1142         * cgraph.c (free_edges): New variable.
1143         (NEXT_FREE_EDGE): New macro.
1144         (cgraph_free_edge): New function.
1145         (cgraph_remove_edge): Call cgraph_remove_edge_1.
1146         (cgraph_node_remove_callees): Likewise.
1147         (cgraph_node_remove_callers): Likewise.
1148         (cgraph_create_edge): Reuse edges from the free list.  Do not
1149         update uid if doing so.
1150         (cgraph_remove_*_hook): Add free call.
1151
1152 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
1153
1154         * ira-color.c (conflict_allocno_vec): Delete.
1155         (update_cost_queue_elem): New structure.
1156         (update_cost_queue): New variable.
1157         (update_cost_queue_tail): Likewise.
1158         (update_cost_queue_elems): Likewise.
1159         (allocno_update_cost_check): Delete.
1160         (initiate_cost_update): Allocate update_cost_queue_elems
1161         instead of allocno_update_cost_check.
1162         (finish_cost_update): Update the free()s accordingly.
1163         (start_update_cost): New function.
1164         (queue_update_cost): Likewise.
1165         (get_next_update_cost): Likewise.
1166         (update_copy_costs_1): Inline into...
1167         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
1168         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
1169         once we've established they are equal.  Don't allocate update
1170         costs if there is nothing to add to them.
1171         (update_conflict_hard_regno_costs): Remove ALLOCNO and
1172         DIVISOR arguments.  Use a queue instead of recursive calls;
1173         process all the allocnos in the initial queue, rather than
1174         a single allocno.
1175         (assign_hard_reg): Use queue_update_cost instead of
1176         conflict_allocno_vec.  Queue coalesced allocnos instead
1177         of calling update_conflict_hard_regno_costs for each one.
1178         Just call update_conflict_hard_regno_costs once for the
1179         entire queue.
1180         (ira_color): Remove conflict_allocno_vec handling.
1181
1182 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
1183
1184         PR tree-optimization/37484
1185         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
1186         (save_var_name): Same.
1187         (initialize_cloog_names): Same.
1188         (initialize_cloog_names): Same.
1189
1190 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
1191
1192         * tree-scalar-evolution.c (set_instantiated_value): Set
1193         instantiated_below.
1194
1195 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
1196
1197         PR rtl-opt/37377
1198
1199         * ira-build.c (common_loop_tree_node_dominator): Remove.
1200         (copy_live_ranges_to_removed_store_destinations): New function.
1201         (regno_top_level_allocno_map): Move to top level from ...
1202         (ira_flattening): ... here.  Use
1203         copy_live_ranges_to_removed_store_destinations.
1204
1205         * ira-emit.c (generate_edge_moves): Fix a comment.
1206
1207 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
1208
1209         PR target/37466
1210         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
1211         scratch register after 'set' pattern.
1212
1213 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1214
1215         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
1216         information passed to mark_reg_pointer.
1217         * explow.c (force_reg): Likewise.
1218
1219 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1220
1221         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
1222         when building for the celledp architecture.
1223
1224 2008-09-12  Richard Guenther  <rguenther@suse.de>
1225
1226         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
1227
1228 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
1229
1230         PR rtl-optimization/37424
1231         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
1232         the regnos instead of the addresses.
1233
1234 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
1235
1236         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
1237
1238 2008-09-11  Richard Guenther  <rguenther@suse.de>
1239
1240         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
1241         entering the weaker equivalence recording.
1242
1243         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
1244
1245 2008-09-11  Jeff Law <law@redhat.com>
1246
1247         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
1248         by assign_stack_local on the IRA path for stack slot sharing
1249         as well as the non-IRA path.
1250
1251 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
1252
1253         * config/i386/i386.h: Fix whitespace issues.
1254
1255 2008-09-11  Martin Jambor  <mjambor@suse.cz>
1256
1257         * ipa-prop.h (struct ipa_param_flags): Removed.
1258         (struct ipa_param_descriptor): New structure.
1259         (struct ipa_node_params): ipcp_lattices, param_decls and
1260         param_flags moved to ipa_param_description.
1261         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
1262         descriptors.  Renamed all users.
1263         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
1264         changed to access descriptors.  Renamed all users.
1265         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
1266         to access descriptors. Renamed all users.
1267         * ipa-cp.c (ipcp_init_cloned_node): Call
1268         ipa_initialize_node_params instead of ipa_count_formal_params and
1269         ipa_create_param_decls_array.
1270         (ipcp_analyze_node): Likewise.
1271         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
1272         descriptors.  Renamed all users.
1273         (ipcp_initialize_node_lattices): Remove allocation.
1274         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
1275         ipa_initialize_node_params instead of ipa_count_formal_params and
1276         ipa_create_param_decls_array.
1277         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
1278         ipa_populate_param_decls, made static, added parameter info,
1279         renamed mt to node, removed allocation, changed to use
1280         descriptors.
1281         (ipa_count_formal_params): Made static, added parameter info,
1282         renamed mt to node.
1283         (ipa_initialize_node_params): New function.
1284         (ipa_check_stmt_modifications): Changed to use descriptors.
1285         (ipa_detect_param_modifications): Removed allocation, changed to
1286         use descriptors.
1287         (ipa_note_param_call): Changed to use descriptors.
1288         (ipa_analyze_params_uses): Removed allocation.
1289         (ipa_free_node_params_substructures): Changed to use descriptors.
1290         (ipa_edge_duplication_hook): Use the unused attribute.
1291         (ipa_node_duplication_hook): Use the unused attribute, changed to
1292         use descriptors, changed to duplicate descriptors.
1293
1294         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
1295         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
1296         indirect inlining.  Made static.
1297         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
1298         functions called only once.
1299         (cgraph_decide_recursive_inlining): Don't call
1300         ipa_propagate_indirect_call_infos, pass new_edges to
1301         cgraph_mark_inline_edge instead.
1302         (cgraph_decide_inlining_of_small_functions): Don't call
1303         ipa_propagate_indirect_call_infos, pass new_edges to
1304         cgraph_mark_inline_edge instead.
1305         (cgraph_decide_inlining): Don't call
1306         ipa_propagate_indirect_call_infos.
1307         * ipa-prop.c: Check that vectors are allocated.
1308
1309         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
1310         iff a new cgraph edges have been created.
1311         (cgraph_decide_inlining): New variable redo_always_inline.
1312         Flattening and always_inlining loop until callgraph stabilizes.
1313         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
1314         true iff new cgraph edges have been created.
1315         (propagate_info_to_inlined_callees): Likewise.
1316         (ipa_propagate_indirect_call_infos): Likewise.
1317
1318 2008-09-11  Richard Guenther  <rguenther@suse.de>
1319
1320         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
1321         (set_prologue_iterations): Likewise.
1322         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
1323         Likewise.
1324         (vect_update_init_of_dr): Likewise.
1325         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
1326         type verification.
1327         * fold-const.c (fold_unary): Do not generate calculations
1328         in sub-types.
1329
1330 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
1331
1332         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
1333         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
1334         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
1335
1336         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
1337         a bool.
1338         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
1339         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
1340         before finalizing the changes.
1341         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
1342         for BIT_IOR_EXPR.
1343         (simplify_truth_ops_using_ranges): New.
1344         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
1345         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
1346         whether a simplification was made.
1347         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
1348         use a switch statement and also call simplify_truth_ops_using_ranges.
1349
1350 2008-09-11  Jan Hubicka  <jh@suse.cz>
1351
1352         * ggc-common.c (loc_array): Make static.
1353         * dce.c (rest_of_handle_ud_dce): Free worklist.
1354
1355 2008-09-11  Jan Hubicka  <jh@suse.cz>
1356
1357         * cgraph.c (cgraph_release_function_body): Plug memory leak on
1358         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
1359         function so we are sure we do not dangle it forever.
1360         * function.c (outer_function_chain, find_function_data): Remove.
1361         (function_context_stack): New.
1362         (push_function_context, pop_function_context): Update.
1363         * function.h (struct function): Remove pointer outer.
1364         (outer_function_chain, find_function_data): Remove.
1365         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
1366
1367 2008-09-11  Jan Hubicka  <jh@suse.cz>
1368
1369         PR middle-end/37448
1370         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
1371
1372 2008-09-11  Jan Hubicka  <jh@suse.cz>
1373
1374         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
1375
1376 2008-09-11  Jan Hubicka  <jh@suse.cz>
1377
1378         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
1379         (free_var_map_entry): New function.
1380         (redirect_edge_var_map_destroy): Use it.
1381
1382 2008-09-11  Jan Hubicka  <jh@suse.cz>
1383
1384         PR middle-end/37448
1385         * tree-inline.c (add_lexical_block): Replace with ...
1386         (prepend_lexical_block): ... prepend at begginig.
1387         (remap_blocks): Use it and reverse later.
1388         (expand_call_inline): Use prepend_lexical_block.
1389
1390 2008-09-11  Jan Hubicka  <jh@suse.cz>
1391
1392         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
1393
1394 2008-09-11  Jan Hubicka  <jh@suse.cz>
1395
1396         * function.c (free_after_compilation): Call insn_locators_free.
1397         * cfglayout.c (insn_locators_free): New function.
1398         * rtl.h (insn_locators_free): Declare.
1399
1400 2008-09-11  Jan Hubicka  <jh@suse.cz>
1401
1402         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
1403         vector pointer.
1404         (cond_move_process_if_block): Update call.
1405
1406 2008-09-11  Jan Hubicka  <jh@suse.cz>
1407
1408         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
1409         * vec.c: Include hashtab.h
1410         (vec_descriptor, ptr_hash_entry): New structures.
1411         (vec_desc_hash, vec_ptr_map): New static variables.
1412         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
1413         register_overhead, free_overhead, vec_heap_free): New functions.
1414         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
1415         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
1416         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
1417         New functions.
1418
1419 2008-09-11  Ira Rosen  <irar@il.ibm.com>
1420
1421         PR tree-optimization/37474
1422         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
1423         length of load permutation.
1424
1425 2008-09-11  Andreas Schwab  <schwab@suse.de>
1426
1427         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
1428
1429 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
1430
1431         PR target/37382
1432         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
1433         * dse.c (find_shift_sequence): Use extract_low_bits instead of
1434         simplify_gen_subreg.
1435
1436 2008-09-11  Ira Rosen  <irar@il.ibm.com>
1437
1438         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
1439         for alias check.
1440
1441 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1442
1443         PR middle-end/37338
1444         * gimplify.c (gimplify_body): Call default_rtl_profile.
1445
1446         PR target/36904
1447         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
1448         instead of tok->val.node if not expanding to something else.  Handle
1449         intervening CPP_PADDING tokens.
1450         (altivec_categorize_keyword): Remove unneeded comparisons.
1451
1452 2008-09-10  Richard Guenther  <rguenther@suse.de>
1453
1454         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
1455
1456 2008-09-10  Richard Guenther  <rguenther@suse.de>
1457
1458         PR middle-end/37432
1459         * tree-inline.c (insert_init_stmt): Make sure to not
1460         insert invalid gimple stores.
1461
1462 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
1463
1464         PR tree-optimization/37388
1465         * toplev.c (process_options): Fail and warn when graphite
1466         flags are used, but the compiler has not been configured
1467         with graphite libraries.
1468         * graphite.c (graphite_transform_loops): Remove printfs
1469         to dump_file for the case when graphite is not available.
1470
1471 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
1472
1473         PR target/37434:
1474         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
1475         the even element into register.
1476         (ix86_expand_vector_init_general): Don't use
1477         ix86_expand_vector_init_interleave on V16QImode and V8HImode
1478         if we can't move from GPR to SSE register directly.
1479
1480 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
1481
1482         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
1483         not lose track of the number of NOPs needed.  Number of NOPs needed
1484         for sync vs. loads workaround was switched; corrected.  Run second
1485         pass for all workarounds.  No NOPs needed after call insns.  Change
1486         second pass to use find_next_insn_start and find_load helpers in order
1487         to properly detect parallel insns.
1488         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
1489
1490 2008-09-10  Jan Hubicka  <jh@suse.cz>
1491
1492         * value-prof.c (gimple_ic): Fix tuplification bug.
1493         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
1494         var warning.
1495
1496 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1497
1498         PR tree-optimization/37353
1499         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
1500         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
1501         calls instead of cond_dead_built_in_calls.
1502         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
1503         initalize the vector only before adding first entry.  Use VEC_safe_push
1504         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
1505         shrink_wrap_conditional_dead_built_in_calls call.
1506
1507 2008-09-10  Ira Rosen  <irar@il.ibm.com>
1508
1509         PR tree-optimization/37385
1510         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument,
1511         and use it as a vector type if not NULL.
1512         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
1513         vectorized rhs.
1514         (vect_setup_realignment): Call vect_create_data_ref_ptr with additional
1515         argument.
1516         (vectorizable_load): Likewise.
1517
1518 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
1519
1520         * config/i386/i386.md (SWI32): New mode iterator.
1521         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
1522         of SWI.
1523
1524 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1525
1526         PR rtl-optimization/37435
1527         * caller-save.c (insert_restore, insert_save): Check the mode by
1528         reg_save_code.
1529
1530 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1531
1532         PR other/37265
1533         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
1534         splay tree lookup.
1535         (dw2_output_indirect_constant_1): Use unstripped name in symbol
1536         reference.
1537
1538 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
1539
1540         * doc/invoke.texi (ARM Options): Correct errors in discussion
1541         of -mfloat-abi, -mhard-float, and -msoft-float.
1542
1543 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
1544             Jan Hubicka  <jh@suse.cz>
1545
1546         PR middle-end/37356
1547         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
1548         calling gimple_regimplify_operands on it.  Iterate over all newly
1549         added statements, not just the last one.
1550         (insert_init_stmt): Insert stmt into seq first, then call
1551         gimple_regimplify_operands on it.  Don't create new gimplification
1552         context, nor find referenced vars.
1553
1554 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
1555
1556         PR other/37419
1557         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
1558         to pointer to vector pointer.
1559         * ipa-prop.c (ipa_propagate_indirect_call_infos,
1560         propagate_info_to_inlined_callees): Likewise.
1561         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
1562         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
1563         ipa_check_create_edge_args.
1564         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last argument
1565         to pointer to vector pointer.
1566         (cgraph_decide_inlining_of_small_function): Adjust
1567         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
1568         calls.
1569
1570         PR target/37438
1571         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
1572         optimizing for size, not speed.
1573
1574         PR rtl-optimization/37408
1575         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
1576         if parm is promoted.
1577
1578 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
1579
1580         PR tree-optimization/37375
1581         * tree-scalar-evolution.c (scev_info_str): Add field
1582         instantiated_below.
1583         (new_scev_info_str, eq_scev_info, find_var_scev_info,
1584         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
1585         set_instantiated_value): Pass instantiated_below.
1586         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
1587         to above functions.
1588         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
1589         the definitions are not instantiated.
1590
1591         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
1592         (block_before_loop): New.
1593         * tree-data-ref.c (dr_analyze_indices): Update uses of
1594         instantiate_scev.
1595         * graphite.c (block_before_scop): New.
1596         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
1597         basic block, not a loop for determining the parameters.
1598         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
1599         scop.
1600         (idx_record_params, find_params_in_bb, find_scop_parameters,
1601         build_loop_iteration_domains, add_conditions_to_domain): Update calls
1602         to instantiate_scev.
1603
1604         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
1605
1606 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1607
1608         PR rtl-opt/37333
1609
1610         * ira-build.c (ira_create_allocno): Setup frequency to 0.
1611
1612         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
1613         Check zero freq and increase if necessary.
1614
1615 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
1616
1617         * ira-conflicts.c (process_regs_for_copy): Check that the hard
1618         regno is in the right range.  Add comments.
1619
1620 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1621
1622         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
1623         warnings.
1624         * mips-tfile.c (copy_object): Cast alloca result to int *.
1625         * mips-tdump.c (print_symbol): Cast xmalloc return values to
1626         proper types.
1627         Rename class to sclass.
1628         (read_tfile): Cast read_seek return values to proper types.
1629         Cast xcalloc return value to proper type.
1630
1631 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1632
1633         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
1634         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
1635         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
1636
1637 2008-09-09  Jan Hubicka  <jh@suse.cz>
1638
1639         * profile.c (is_edge_inconsistent): Add debug output; ignore
1640         negative count on fake edges.
1641         (is_inconsistent): Add debug output.
1642
1643 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
1644
1645         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
1646         dump message.
1647         (choose_ready): When first insn is chosen from the ready list, also
1648         dump it.
1649
1650 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
1651
1652         PR rtl-optimization/37360
1653         * haifa-sched.c (max_issue): Do not assert that we never issue more
1654         insns than issue_rate.  Add comment.
1655
1656 2008-09-09  Richard Guenther  <rguenther@suse.de>
1657
1658         * tree-cfg.c (verify_types_in_gimple_op): Remove.
1659         (verify_types_in_gimple_call): Rename to ...
1660         (verify_gimple_call): ... this.  Enhance.
1661         (verify_types_in_gimple_cond): Remove.
1662         (verify_gimple_comparison): New function ...
1663         (verify_types_in_gimple_assign): ... split out from here.
1664         (verify_types_in_gimple_return): Rename to ...
1665         (verify_gimple_return): ... this.  Enhance.
1666         (verify_types_in_gimple_switch): Rename to ...
1667         (verify_gimple_switch): ... this.  Enhance.
1668         (verify_gimple_goto): New function.
1669         (verify_types_in_gimple_phi): Rename to ...
1670         (verify_gimple_phi): ... this.  Enhance.
1671         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
1672         Fold in single-statement cases from verify_types_in_gimple_seq_2.
1673         (verify_types_in_gimple_seq_2): Remove cases handled in
1674         verify_types_in_gimple_stmt.
1675
1676 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1677
1678         * config/bfin/bfin.c (n_regs_to_save): New static variable.
1679         (push_multiple_operation, pop_multiple_operation): Set it.
1680         (workaround_rts_anomaly): New function.
1681         (workaround_speculation): New function, broken out of bfin_reorg.
1682         (bfin_reorg): Call the new functions.
1683
1684 2008-09-09  Richard Guenther  <rguenther@suse.de>
1685
1686         PR middle-end/37354
1687         PR middle-end/30165
1688         * gimplify.c (gimplify_conversion): Change conversions of
1689         non-register type to VIEW_CONVERT_EXPRs.
1690         (gimplify_addr_expr): If we need to make the operand
1691         addressable make sure to use a properly initialized
1692         temporary for that so it gets a valid gimple store.
1693
1694 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
1695
1696         * function.h (struct function): Add function_start_locus.
1697         * cfgexpand.c (gimple_expand_cfg): Use it.
1698         * c-parser.c (c_parser_declaration_or_fndef): Set it.
1699
1700 2008-09-09  Richard Guenther  <rguenther@suse.de>
1701
1702         PR tree-optimization/37433
1703         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
1704         function calls.
1705
1706 2008-09-09  Richard Guenther  <rguenther@suse.de>
1707
1708         PR tree-optimization/37387
1709         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
1710         and bits to a common type.
1711
1712 2008-09-09  Nick Clifton  <nickc@redhat.com>
1713
1714         * config/v850/v850.md (return): Restore frame size restriction.
1715
1716 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
1717
1718         * c-common.c (c_expand_decl): Remove.
1719         * c-common.h (anon_aggr_type_p): Remove prototype.
1720         (DECL_ANON_UNION_ELEMS): Remove.
1721         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
1722         * c-decl.c (anon_aggr_type_p): Remove.
1723         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
1724         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
1725         * langhooks.h (struct lang_hooks): Remove expand_decl.
1726         * langhooks.c (lhd_expand_decl): Remove.
1727         * stmt.c (expand_anon_union_decl): Remove.
1728         * tree.h (expand_anon_union_decl): Remove prototype.
1729
1730 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
1731
1732         PR target/36609
1733         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
1734         zero.
1735         * config/avr/avr.md  (QISI) : Define mode iterator.
1736         (negated_tst<mode>) : Redefine as split using mode macro.
1737         (reversed_tstqi): Define insn as reversed compare with zero.
1738         (reversed_tsthi): Ditto.
1739         (reversed_tstsi): Ditto.
1740
1741 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1742
1743         PR middle-end/37393
1744         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
1745         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
1746
1747         PR middle-end/37414
1748         * predict.c (optimize_function_for_size_p): Don't segfault if
1749         FUN is NULL.
1750         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
1751         tree_swap_operands_p): Don't test cfun != NULL before calling
1752         optimize_function_for_s*_p.
1753
1754 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
1755
1756         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
1757         end of the search.
1758
1759 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
1760
1761         * crx/crx.h (IRA_COVER_CLASSES): Define.
1762
1763 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1764
1765         PR middle-end/37337
1766         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
1767         even when a stmt has been gimple_modified_p, but after fold_stmt is
1768         not any longer.  Remove unneeded may_have_exposed_new_symbols
1769         initializations.
1770
1771 2008-09-08  Richard Guenther  <rguenther@suse.de>
1772
1773         PR tree-optimization/37421
1774         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
1775         valueize the RHS.
1776
1777 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
1778
1779         PR middle-end/37415
1780         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
1781
1782 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1783
1784         PR driver/37409
1785         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
1786         * pa-hpux10.h (LINK_SPEC): Likewise.
1787         * pa-hpux11.h (LINK_SPEC): Likewise.
1788
1789 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1790
1791         * pa32-regs.h (IRA_COVER_CLASSES): Define.
1792         * pa64-regs.h (IRA_COVER_CLASSES): Define.
1793
1794 2008-09-07  Helge Deller  <deller@gmx.de>
1795
1796         * pa/linux-atomic.c: New file.
1797         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
1798         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
1799
1800 2008-09-07  Richard Guenther  <rguenther@suse.de>
1801             Ira Rosen  <irar@il.ibm.com>
1802
1803         PR tree-optimization/36630
1804         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
1805         Call STRIP_NOPS before calling evolution_part_in_loop_num.
1806
1807 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
1808             Ira Rosen  <irar@il.ibm.com>
1809
1810         PR tree-optimization/35642
1811         * config/rs6000/altivec.md (mulv8hi3): Implement.
1812
1813 2008-09-06  Jeff Law <law@redhat.com>
1814
1815         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
1816
1817 2008-09-06  Jan Hubicka  <jh@suse.cz>
1818
1819         PR tree-optimization/14703
1820         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
1821         declarations.
1822         * passes.c (init_optimization_passes): Recompute inline parameters.
1823
1824 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
1825
1826         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
1827         DECL being null.
1828
1829 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
1830             Peter Fuerst  <post@pfrst.de>
1831
1832         * doc/invoke.texi: Document -mr10k-cache-barrier=.
1833         * doc/extend.texi: Document __builtin_mips_cache.
1834         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
1835         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
1836         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
1837         __GCC_HAVE_BUILTIN_MIPS_CACHE.
1838         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
1839         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
1840         (set_push_mips_isas): New variable.
1841         (mips_r10k_cache_barrier): New variable.
1842         (cache): New availability predicate.
1843         (mips_builtins): Add an entry for __builtin_mips_cache.
1844         (mips_build_cvpointer_type): New function.
1845         (MIPS_ATYPE_CVPOINTER): New macro.
1846         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
1847         mode is VOIDmode.
1848         (r10k_simplified_address_p, r10k_simplify_address)
1849         (r10k_uncached_address_p, r10k_safe_address_p)
1850         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
1851         (r10k_needs_protection_p_call, r10k_needs_protection_p)
1852         (r10k_insert_cache_barriers): New functions.
1853         (mips_reorg_process_insns): Delete cache barriers after a
1854         branch-likely instruction.
1855         (mips_reorg): Call r10k_insert_cache_barriers.
1856         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
1857         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
1858         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
1859         (mips_cache, r10k_cache_barrier): New define_insns.
1860
1861 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
1862
1863         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
1864         * ira-color.c (setup_allocno_left_conflicts_num): Use
1865         hard_reg_set_equal_p instead of a comparison with
1866         ira_zero_hard_reg_set.
1867         * ira.c (setup_reg_subclasses): Likewise.
1868         (setup_cover_and_important_classes): Likewise.
1869         (setup_class_translate): Likewise.
1870         (setup_reg_class_intersect_union): Likewise.
1871         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
1872         (ira_init_once): Don't initialize them.
1873
1874 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
1875
1876         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
1877
1878 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
1879
1880         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
1881
1882 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1883
1884         Improved branch hints, safe hints, and scheduling.
1885
1886         * haifa-sched.c (sched_emit_insn) : Define.
1887         * sched-int.h (sched_emit_insn) : Add prototype.
1888         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
1889         -mhint-max-distance -msafe-hints) : Document.
1890         * config/spu/spu.c (spu_flag_var_tracking): New.
1891         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
1892         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
1893         TARGET_ASM_FILE_START): Define.
1894         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
1895         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
1896         (spu_emit_branch_hint): Add blocks argument.
1897         (insert_branch_hints, insert_nops): Remove.
1898         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
1899         uses_ls_unit, spu_sched_init_global, spu_sched_init,
1900         spu_sched_reorder, asm_file_start): New functions.
1901         (clock_var, spu_sched_length, pipe0_clock,
1902         pipe1_clock, prev_clock_var, prev_priority,
1903         spu_ls_first, prev_ls_clock): New static variables.
1904         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
1905         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
1906         (nopn_nv): Add a non-volatile version of nop.
1907         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
1908         -mhint-max-distance, -msafe-hints): New options.
1909
1910 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
1911             Samuel Tardieu  <sam@rfc1149.net>
1912
1913         * opts.c (decode_options): Combine nested if statements.
1914
1915         PR target/37283
1916         * opts.c (decode_options): Handle more relationships among
1917         unit-at-a-time, toplevel-reorder, and section-anchors.
1918
1919 2008-09-05  David Daney  <ddaney@avtrex.com>
1920
1921         * doc/install.texi (--enable-reduced-reflection): Document new option.
1922
1923 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
1924
1925         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
1926         constantpool_mem_p.
1927         (constantpool_operand): New.
1928         (move_operand): Disallow sub-word modes for the constant pool.
1929         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
1930         (xtensa_secondary_reload_class): Replace with....
1931         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
1932         Set icode for sub-word reloads from the constant pool.
1933         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
1934         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
1935         * config/xtensa/xtensa.md (reload<mode>_literal): New.
1936         * config/xtensa/xtensa-protos.h: Update prototypes.
1937
1938 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
1939
1940         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
1941         (REG_CLASS_NAMES): Update.
1942         (REG_CLASS_CONTENTS): Update.
1943         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
1944         of ALL_REGS for regs 77 and 78.
1945         * function.c (instantiate_virtual_regs_in_insn): Assert that
1946         return value of simplify_gen_subreg is not NULL.
1947
1948 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
1949
1950         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
1951         (gen_rtvec_v): Fix coding standards.
1952
1953 2008-09-04  Jan Hubicka  <jh@suse.cz>
1954
1955         * i386.c (decide_alg): Be more conservative about optimizing for size.
1956
1957 2008-09-04  Ian Lance Taylor  <iant@google.com>
1958
1959         * varasm.c (narrowing_initializer_constant_valid_p): New
1960         static function.
1961         (initializer_constant_valid_p): Call it.
1962
1963 2008-09-04  Jeff Law  <law@redhat.com>
1964
1965         * fold-const.c (native_encode_real): Fix computation of WORDS.
1966         (native_interpret_real): Likewise.
1967
1968 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
1969
1970         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
1971
1972 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
1973
1974         * ira-conflicts.c (process_regs_for_copy): Check insn to check
1975         that the cost is already taken into account in ira-costs.c
1976
1977         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
1978
1979         * ira-build.c (print_copy, print_copies, ira_debug_copy,
1980         ira_debug_copies): New.
1981         (ira_bulid): Call print_copies.
1982
1983         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
1984
1985 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
1986
1987         PR target/32783
1988         * config/rs6000/rs6000.c (optimization_options): Remove check of
1989         flag_toplevel_order.
1990
1991 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
1992
1993         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
1994         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
1995         second operand is a reg_imm10_operand.
1996         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
1997         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
1998         (*seq_<GPR:mode><GPR2:mode>): Rename to
1999         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
2000         ISA_HAS_SEQ_SNE.
2001         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
2002         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
2003         ISA_HAS_SEQ_SNE.
2004         (*sne_<GPR:mode><GPR2:mode>): Rename to
2005         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
2006         ISA_HAS_SEQ_SNE.
2007
2008 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
2009
2010         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
2011         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
2012         combining an arithmetic right shift by more than 31 and a
2013         trunction.  Don't match for out-of-range shift amounts.  Set
2014         attribute mode to <MODE>.
2015         (*lshr32_trunc<mode>): Name the pattern combining a logical right
2016         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
2017         (*<optab>_trunc<mode>_exts): New pattern for truncated right
2018         shifts by less than 32.
2019         (extv): Change predicate on first operand to accept registers.
2020         Change predicate of the other operands from immediate_operand to
2021         const_int_operand.  Expand exts when source is a register.
2022         (extzv): Change predicate of the constant operands from
2023         immediate_operand to const_int_operand.
2024         (extzv<mode>): Change predicate of the constant operands from
2025         immediate_operand to const_int_operand and no constraint. Also
2026         remove mode.
2027         (*extzv_trunc<mode>_exts): New pattern.
2028
2029 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
2030
2031         * config/mips/mips.h (ISA_HAS_CINS): New macro.
2032         * config/mips/mips-protos.h (mask_low_and_shift_p,
2033         mask_low_and_shift_len): Declare.
2034         * config/mips/mips.c (mask_low_and_shift_p,
2035         mask_low_and_shift_len): New functions.
2036         (mips_print_operand): Handle new operand prefix "m".
2037         * config/mips/mips.md (*cins<mode>): New pattern.
2038
2039 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
2040
2041         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
2042         optimizing for size.
2043
2044 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
2045
2046         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
2047         regardless of epilogue_completed.
2048
2049 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
2050
2051         PR middle-end/37359
2052         * ira-lives.c (process_bb_node_lives): Check setjmp.
2053
2054 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
2055
2056         PR middle-end/37243
2057         * ira-build.c (form_loop_tree): Reverse BB walk.
2058         (create_bb_allocnos): Likewise.
2059         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
2060         (mark_reg_store): Rename to...
2061         (mark_ref_live): ...this and take a df_ref argument instead of
2062         note_stores arguments.  Assert that we have a register.
2063         (mark_reg_clobber): Delete.
2064         (def_conflicts_with_inputs_p): New function.
2065         (mark_reg_conflicts): Delete.
2066         (mark_reg_death): Rename to...
2067         (mark_ref_dead): ...this and take a df_ref argument instead of
2068         a register.  Assert that we have a register.
2069         (process_bb_node_lives): Hoist frequency calculation out of
2070         instruction walk.  Convert from a forwards scan to a backwards scan.
2071         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
2072         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
2073         (create_allocno_live_ranges): Don't create regs_set.
2074
2075 2008-09-04  Ian Lance Taylor  <iant@google.com>
2076
2077         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
2078         or REG_LABEL_TARGET.
2079         * calls.c (emit_library_call_value_1): Use MEM_P rather than
2080         comparing MODE with MEM.
2081         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
2082         comparing with GF_PREDICT_TAKEN.
2083         (gimple_get_lhs): Change code to enum gimple_code.
2084         (gimple_set_lhs): Likewise.
2085         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
2086         * omp-low.c (find_omp_clause): Change kind parameter to enum
2087         omp_clause_code.
2088         * tree-flow.h (find_omp_clause): Update declaration.
2089         * regrename.c (clear_dead_regs): Change kind parameter to enum
2090         reg_note.
2091         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
2092         GET_MODE.
2093         * see.c (see_get_extension_data): Change return type to enum
2094         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
2095         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
2096         (see_gen_normalized_extension): Change extension_code parameter to
2097         enum entry_type.
2098         (see_seek_pre_extension_expr): Change extension_code to enum
2099         entry_type.
2100         (see_merge_one_def_extension): Likewise.
2101         (see_handle_relevant_defs): Likewise.
2102         (see_handle_relevant_uses): Likewise.
2103         (see_analyze_one_def): Likewise.
2104         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
2105         GIMPLE_ASM rather than ASM_EXPR.
2106         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
2107         GIMPLE_RETURN rather than RETURN_EXPR.
2108         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
2109         (evaluate_stmt): Likewise.
2110         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
2111         to enum vect_relevant.
2112         (vect_mark_stmts_to_be_vectorized): Change assertion to not
2113         compare gimple codes with tree codes.
2114
2115 2008-09-04  Paul Brook  <paul@codesourcery.com>
2116
2117         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
2118
2119 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
2120
2121         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
2122         pointer check lost in the recent no-unit-at-a-time patch.
2123
2124 2008-09-04  Jan Hubicka  <jh@suse.cz>
2125
2126         PR middle-end/37343
2127         * tree-switch-conversion.c (check_final_bb): Accept only IP
2128         invariants.
2129
2130 2008-09-04  Jan Hubicka  <jh@suse.cz>
2131
2132         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
2133         Break out from ...
2134         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
2135         using_ranges argument.
2136         (vrp_evaluate_conditional): Avoid bogus warning for type range.
2137         (vrp_visit_cond_stmt): Update call of
2138         vrp_evaluate_conditional_warnv_with_ops
2139
2140 2008-09-04  Jan Hubicka  <jh@suse.cz>
2141
2142         PR tree-optimization/37345
2143         PR tree-optimization/37358
2144         PR tree-optimization/37357
2145         * tree.c (build_function_type_skip_args): Build distinct type copy;
2146         set TYPE_CONTEXT.
2147         (build_function_decl_skip_args): Set type of new decl not orig decl;
2148         clear DECL_VINDEX for methods turned into functions.
2149
2150 2008-09-04  Nick Clifton  <nickc@redhat.com>
2151
2152         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
2153         * configure: Regenerate.
2154         * config.in: Regenerate.
2155         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
2156         alignment field, if it is supported.
2157
2158 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
2159
2160         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
2161         libraries.
2162
2163 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
2164
2165         * config/rs6000/rs6000.c (processor_target_table): Do not
2166         enable VMX for POWER6.
2167
2168 2008-09-03  Anton Blanchard  <anton@samba.org>
2169
2170         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
2171         emit memory barrier before operation.
2172
2173 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
2174
2175         PR testsuite/37325
2176         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
2177         default_elf_asm_output_external.
2178
2179 2008-09-03  Jeff Law  <law@redhat.com>
2180
2181         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
2182
2183 2008-09-03  Richard Henderson  <rth@redhat.com>
2184
2185         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
2186         memory barrier to below the test-and-set.
2187         (alpha_split_lock_test_and_set_12): Likewise.
2188
2189 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2190
2191         PR rtl-opt/37243
2192
2193         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
2194         all_allocnos.
2195
2196         * ira-color.c (print_loop_title): Use all_allocnos.
2197         (color_pass): Ditto.  Don't add border_allocnos.  Check that
2198         subloop allocno in the correspdoning bitmap all_allocnos.
2199
2200         * ira-emit.c (change_loop): Use all_allocnos.
2201
2202         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node):
2203         Ditto.
2204         (ira_create_allocno): Set up all_allocnos bit for the created
2205         allocno.
2206         (create_cap_allocno): Remove setting mentioned_allocnos.
2207         (create_insn_allocnos): Ditto.
2208         (remove_unnecessary_allocnos): Use all_allocnos.
2209         (check_allocno_creation): Check that allocnos are in the
2210         corresponding bitmap all_allocnos.
2211
2212 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2213
2214         PR rtl-opt/37243
2215
2216         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
2217         (process_regs_for_copy): Process subregs.  Refine check when cost
2218         is taken into account in ira-costs.c.
2219         (process_reg_shuffles): Use REG_SUBREG_P.
2220         (add_insn_allocno_copies): Ditto.  Ignore modes.
2221
2222         * ira-color.c (conflict_allocno_vec): New.
2223         (COST_HOP_DIVISOR): New macro.
2224         (update_copy_costs_1): Use it.
2225         (update_conflict_hard_regno_costs): New function.
2226         (assign_hard_reg): Use it.
2227         (ira_color): Allocate and free conflict_allocno_vec.
2228
2229 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
2230
2231         PR rtl-opt/37296
2232
2233         * ira-int.h (ira_sort_insn_chain): Remove.
2234
2235         * ira.c (basic_block_order_nums, chain_insn_order,
2236         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
2237         (ira): Don't call ira_sort_insn_chain.
2238
2239         * reload1.c (reload): Don't call ira_sort_insn_chain.
2240
2241 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2242
2243         PR middle-end/37293
2244         * cgraphunit.c (update_call_expr): Remove eh regions from statements
2245         which become non throw.
2246         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
2247         update_call_expr after updating the flags on the decl.
2248
2249 2008-09-03  Jan Hubicka  <jh@suse.cz>
2250
2251         PR tree-optimization/37315
2252         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
2253         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
2254         (cgraph_analyze_functions): Use node->analyzed
2255         (cgraph_mark_functions_to_output): Likewise.
2256         (cgraph_expand_function): All functions can be released after
2257         expanding.
2258         (cgraph_optimize): Use gimple_has_body_p.
2259         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
2260         (cgraph_decide_inlining_incrementally): Likewise.
2261         (inline_transform): Inline transform.
2262         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
2263         copy fields needed.
2264         (inlinable_function_p): Drop gimple_body check.
2265         (expand_call_inline): Use gimple_has_body_p.
2266         * gimple.c (gimple_has_body_p): New.
2267         * gimple.h (gimple_has_body_p): Add prototype.
2268         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
2269         (dump_function_to_file): Use gimple_has_body_p check.
2270
2271 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
2272
2273         PR c++/37346
2274         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
2275         substatements.
2276         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
2277
2278 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2279
2280         From Michael Frysinger  <michael.frysinger@analog.com>
2281         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
2282         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
2283         for bf538.
2284
2285 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
2286
2287         Add picoChip port.
2288         * doc/extend.texi: Document picoChip builtin functions.
2289         * doc/invoke.texi: Document picoChip options.
2290         * doc/contrib.texi: Add picoChip contribution.
2291         * doc/md.texi: Document picoChip constraints.
2292         * config.gcc: Add picochip-*-*.
2293         * config/picochip/: Add new port.
2294
2295 2008-09-03  Richard Guenther  <rguenther@suse.de>
2296
2297         PR tree-optimization/37328
2298         * tree-sra.c (sra_build_assignment): Gimplify properly.
2299         (generate_copy_inout): Take the correct stmt as definition,
2300         remove bogus assert.
2301
2302 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2303
2304         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
2305         attributes.
2306
2307         From Michael Frysinger  <michael.frysinger@analog.com>
2308         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
2309
2310 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
2311
2312         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
2313         (__gthread_setspecific): Revert 2008-08-31 change to
2314         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
2315
2316 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
2317
2318         * diagnostic.c (error_at): New.
2319         * toplev.h (error_at): New prototype.
2320         * c-typeck.c (build_array_ref): Call error_at instead of error.
2321         Pass location to pedwarn.
2322
2323 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
2324
2325         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
2326
2327 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2328
2329         * dwarf2out.c (tree_add_const_value_attribute): Only handle
2330         VAR_DECL and CONST_DECL.
2331
2332 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
2333             Jakub Jelinek  <jakub@redhat.com>
2334
2335         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
2336         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
2337         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
2338         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
2339         Don't set ix86_save_varrargs_registers.
2340         (ix86_setup_incoming_varargs): Assume cum != NULL.
2341         (ix86_va_start): Check ix86_varargs_gpr_size and
2342         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
2343         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
2344         from frame pointer if ix86_varargs_gpr_size == 0.
2345         (ix86_compute_frame_layout): Updated.
2346         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
2347         (ix86_varargs_gpr_size): Define.
2348         (ix86_varargs_fpr_size): Likewise.
2349         (machine_function): Remove save_varrargs_registers.
2350         Add varargs_gpr_size and varargs_fpr_size.
2351
2352 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2353
2354         * config/alpha/alpha.c (va_list_skip_additions,
2355         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
2356         (alpha_gimplify_va_arg): Call unshare_expr on second use of
2357         offset_field.
2358
2359         PR tree-optimization/36766
2360         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
2361         for already removed basic blocks.
2362
2363         PR target/36332
2364         * real.c (real_maxval): Clear a lower bit to make real_maxval
2365         match get_max_float for IBM long double format.
2366
2367 2008-09-02  Andreas Schwab  <schwab@suse.de>
2368
2369         * configure.ac: Use m4_quote to quote the expansion of m4_do.
2370         * configure: Regenerate.
2371
2372 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
2373
2374         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
2375         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
2376         checking for a non-VOID CONSTANT_P.
2377
2378 2008-09-02  Jan Hubicka  <jh@suse.cz>
2379
2380         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
2381         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
2382         sdiv_pow2_cheap
2383
2384 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
2385
2386         * expr.c (emit_group_store): Don't assert stack temp mode size.
2387
2388 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
2389             Tobias Grosser  <grosser@fim.uni-passau.de>
2390             Jan Sjodin  <jan.sjodin@amd.com>
2391             Harsha Jagasia  <harsha.jagasia@amd.com>
2392             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2393             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
2394             Adrien Eliche  <aeliche@isty.uvsq.fr>
2395
2396         Merge from graphite branch.
2397         * graphite.c: New.
2398         * graphite.h: New.
2399         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
2400         * doc/invoke.texi (-floop-block, -floop-interchange,
2401         -floop-strip-mine): Document new flags.
2402         * tree-into-ssa.c (gimple_vec): Moved...
2403         * tree-loop-distribution.c (rdg_component): Moved...
2404         * cfgloopmanip.c: Include tree-flow.h.
2405         (update_dominators_in_loop): New.
2406         (create_empty_if_region_on_edge): New.
2407         (create_empty_loop_on_edge): New.
2408         (loopify): Use update_dominators_in_loop.
2409         * tree-pass.h (pass_graphite_transforms): Declared.
2410         * configure: Regenerate.
2411         * tree-phinodes.c (make_phi_node): Export.
2412         (add_phi_node_to_bb): New, split from create_phi_node.
2413         * tree-chrec.c (for_each_scev_op): New.
2414         * tree-chrec.h (for_each_scev_op): Declared.
2415         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
2416         (remove_statement): Call get_phi_with_result.
2417         * config.in (HAVE_cloog): Undef.
2418         * gdbinit.in (pgg): New.
2419         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
2420         * tree-ssa-loop.c (graphite_transforms): New.
2421         (gate_graphite_transforms): New.
2422         (pass_graphite_transforms): New.
2423         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
2424         HAVE_cloog): Defined.
2425         * tree-vectorizer.c (rename_variables_in_bb): Export.
2426         * tree-data-ref.c (dr_may_alias_p): Export.
2427         (stmt_simple_memref_p): New.
2428         (find_data_references_in_stmt): Export.
2429         (find_data_references_in_loop): Export.
2430         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
2431         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
2432         (create_rdg_vertices): Export.
2433         (build_empty_rdg): New.
2434         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
2435         * tree-data-ref.h (rdg_component): ... here.
2436         (scop_p): New.
2437         (struct data_reference): Add a field scop.
2438         (DR_SCOP): New.
2439         (find_data_references_in_loop): Declared.
2440         (find_data_references_in_stmt): Declared.
2441         (create_rdg_vertices): Declared.
2442         (dr_may_alias_p): Declared.
2443         (stmt_simple_memref_p): Declared.
2444         (struct rdg_edge): Add a field ddr_p relation.
2445         (build_empty_rdg): Declared.
2446         * lambda.h (lambda_matrix): Declare a VEC of.
2447         (find_induction_var_from_exit_cond): Declared.
2448         (lambda_vector_compare): New.
2449         * common.opt (fgraphite, floop-strip-mine,
2450         floop-interchange, floop-block): New flags.
2451         * lambda-code.c (find_induction_var_from_exit_cond): Export.
2452         * cfgloop.c (is_loop_exit): New.
2453         * cfgloop.h (is_loop_exit): Declared.
2454         (create_empty_if_region_on_edge): Declared.
2455         (create_empty_loop_on_edge): Declared.
2456         * tree-flow.h (add_phi_node_to_bb): Declared.
2457         (make_phi_node): Declared.
2458         (rename_variables_in_bb): Declared.
2459         (perfect_loop_nest_depth): Declared.
2460         (graphite_transform_loops): Declared.
2461         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
2462         (graphite.o-warn): Add -Wno-error.
2463         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
2464         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
2465         (INCLUDES): Add PPLINC, CLOOGINC.
2466         (OBJS-common): Add graphite.o.
2467         (graphite.o): Add rule.
2468         * gimple.h (gimple_vec): ... here.
2469         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
2470         * passes.c (init_optimization_passes): Schedule
2471         pass_graphite_transforms.
2472
2473 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
2474
2475         PR target/37283
2476         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
2477         and -fno-toplevel-reorder after handle_options.
2478
2479 2008-09-02  Paul Brook  <paul@codesourcery.com>
2480
2481         * config/arm/arm.c (arm_tune_cortex_a9): Define.
2482         (arm_override_options): Set arm_tune_cortex_a9.
2483         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
2484         (arm_issue_rate): Handle cortexa9.
2485         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
2486         * config/arm/arm-cores.def: Add cortex-a9.
2487         * config/arm/arm-tune.md: Regenerate.
2488         * config/arm/arm.md: Include cortex-a9.md.
2489         (generic_sched, generic_vfp): Add cortexa9.
2490         * config/arm/cortex-a9.md: New file.
2491
2492 2008-09-02  Richard Guenther  <rguenther@suse.de>
2493
2494         PR tree-optimization/37327
2495         * tree-vrp.c (register_new_assert_for): Make sure to not have
2496         TREE_OVERFLOW set on the bound.
2497
2498 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
2499
2500         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
2501
2502         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
2503         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
2504         spec_info->mask.
2505
2506 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
2507
2508         * gcc/config/spu/spu.md (divdf3): Removed.
2509
2510 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
2511
2512         PR tree-optimization/37095
2513         * cgraph.c (cgraph_node): When creating new cgraph node after
2514         assembler_name_hash has been populated, record it in the hash
2515         table.
2516
2517 2008-09-01  Paul Brook  <paul@codesourcery.com>
2518
2519         * doc/invoke.texi: Document -mword-relocations.
2520         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2521         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2522         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2523         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
2524         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
2525         (arm_emit_movpair): New function.
2526         (arm_print_operand <c>): Handle sybolic addresses.
2527         * config/arm/arm.h (TARGET_USE_MOVT): Define.
2528         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
2529         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
2530         * config/arm/arm.opt: Add -mword-relocations.
2531         * config/arm/arm.md (movsi): Use arm_emit_movpair.
2532         (arm_movt, arm_movw): New.
2533
2534 2008-09-01  Paul Brook  <paul@codesourcery.com>
2535
2536         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
2537         Allow Interworking on ARMv4 EABI based targets.
2538         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
2539         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
2540
2541 2008-09-01  Paul Brook  <paul@codesourcery.com>
2542
2543         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
2544         optimized LT0 test.  Remove optimization for GT.
2545
2546 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2547
2548         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
2549         openmp applications.
2550         * pa-hpux11.h (LIB_SPEC): Likewise.
2551
2552         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
2553         is defined.
2554
2555 2008-09-01  Jan Hubicka  <jh@suse.cz>
2556
2557         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
2558         present, use only counts; when guessed use only frequencies.
2559         (estimate_bb_frequencies): Use function_frequency.
2560         * profile.c (compute_branch_probabilities): Exit early when
2561         profile reading failed. Set profile_status.
2562         (branch_prob): Do not set profile_status.
2563
2564 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
2565
2566         * tree.c (protected_set_expr_location): New.
2567         * tree.h (protected_set_expr_location): New prototype.
2568         * c-tree.h (build_array_ref): Add argument.
2569         (parser_build_unary_op): Same.
2570         * c-typeck.c (build_indirect_ref): Handle new location argument.
2571         (build_array_ref): Same.
2572         (parser_build_unary_op): Same.
2573         * gimplify.c (gimplify_asm_expr): Set input_location before calling
2574         error.
2575         * c-omp.c (c_finish_omp_atomic): Pass location when calling
2576         build_indirect_ref.
2577         * c-common.c (finish_label_address_expr): Handle new location argument.
2578         * c-common.h (build_indirect_ref): Add argument.
2579         (finish_label_address_expr): Same.
2580         * c-parser.c (c_parser_unary_expression): Pass location to build
2581         functions.
2582         (c_parser_postfix_expression): Same.
2583
2584 2008-09-01  Paul Brook  <paul@codesourcery.com>
2585
2586         * config/arm/arm.md: Include cortex-r4f.md.
2587         (attr fpu): Update type list.
2588         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
2589         fconstd, fcmps and fcmpd.
2590         (attr tune_cortexr4): Define.
2591         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
2592         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
2593         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
2594         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
2595         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
2596         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
2597         cortex_a8_vfp_farith: Ditto.
2598         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
2599         * config/arm/cortex-r4.md: Use tune_cortexr4.
2600         * config/arm/cortex-r4f.md: New file.
2601
2602 2008-09-01  Richard Guenther  <rguenther@suse.de>
2603
2604         PR tree-optimization/37305
2605         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
2606         the result of constant conversions.
2607         (fold_gimple_assign): Likewise.
2608
2609 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
2610
2611         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
2612         #ifdef ENABLE_CHECKING.
2613
2614 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
2615
2616         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
2617         * sched-int.h (print_insn, print_pattern, print_value): Declare also
2618         when !INSN_SCHEDULING.
2619
2620 2008-09-01  Andreas Schwab  <schwab@suse.de>
2621
2622         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
2623
2624 2008-09-01  Paul Brook  <paul@codesourcery.com>
2625
2626         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
2627
2628 2008-09-01  Jan Hubicka  <jh@suse.cz>
2629
2630         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
2631
2632         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
2633         Pass speed operand.
2634         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
2635         * gimplify.c (gimplify_init_constructor): Add speed operand.
2636         * tree-sra.c (decide_block_copy): Likewise.
2637         * tree-inline.c (estimate_move_cost): Likewise.
2638         * config/alpha/alpha.h (MOVE_RATIO): Update.
2639         * config/frv/frv.c (MOVE_RATIO): Update.
2640         * config/spu/spu.h (MOVE_RATIO): Update.
2641         * config/sparc/sparc.h (MOVE_RATIO): Update.
2642         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
2643         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
2644         * config/cris/cris.h (MOVE_RATIO): Update.
2645         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
2646         * config/arm/arm.h (MOVE_RATIO): Update.
2647         * config/pa/pa.md: Update uses of MOVE_RATIO
2648         * config/pa/pa.h (MOVE_RATIO): Update.
2649         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
2650         CLEAR_RATIO, SET_RATIO): Update.
2651         * config/h8300/h8300.h (MOVE_RATIO): Update.
2652         * config/v850/v850.h (MOVE_RATIO): Update.
2653         * config/bfin/bfin.h (MOVE_RATIO): Update.
2654
2655 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
2656             Dmitry Melnik  <dm@ispras.ru>
2657             Dmitry Zhurikhin  <zhur@ispras.ru>
2658             Alexander Monakov  <amonakov@ispras.ru>
2659             Maxim Kuvyrkov  <maxim@codesourcery.com>
2660
2661         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
2662         sel-sched-dump.c, sel-sched-ir.c: New files.
2663         * Makefile.in (OBJS-common): Add selective scheduling object files.
2664         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
2665         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
2666         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
2667         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
2668         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
2669         (make_forwarder_block): Update loop latch if we have redirected
2670         the loop latch edge.
2671         * cfgloop.c (get_loop_body_in_custom_order): New function.
2672         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
2673         (CP_FALLTHRU_PREHEADERS): Likewise.
2674         (get_loop_body_in_custom_order): Declare.
2675         * cfgloopmanip.c (has_preds_from_loop): New.
2676         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
2677         Assert that the preheader edge will be fall thru when it is set.
2678         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
2679         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
2680         fsel-sched-substitution, fselective-scheduling): New flags.
2681         * cse.c (hash_rtx_cb): New.
2682         (hash_rtx): Use it.
2683         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
2684         sel_sched_insn_cnt): New counters.
2685         * final.c (compute_alignments): Export.  Free dominance
2686         info after loop_optimizer_finalize.
2687         * genattr.c (main): Output maximal_insn_latency prototype.
2688         * genautomata.c (output_default_latencies): New.
2689         Factor its code from ...
2690         (output_internal_insn_latency_func): ... here.
2691         (output_internal_maximal_insn_latency_func): New.
2692         (output_maximal_insn_latency_func): New.
2693         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
2694         (struct hard_reg_set_iterator): New.
2695         (hard_reg_set_iter_init, hard_reg_set_iter_set,
2696         hard_reg_set_iter_next): New functions.
2697         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
2698         * lists.c (remove_free_INSN_LIST_node,
2699         remove_free_EXPR_LIST_node): New functions.
2700         * loop-init.c (loop_optimizer_init): When
2701         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
2702         calling create_preheaders.
2703         (loop_optimizer_finalize): Do not verify flow info after reload.
2704         * recog.c (validate_replace_rtx_1): New parameter simplify.
2705         Default it to true.  Update all uses.  Factor out simplifying
2706         code to ...
2707         (simplify_while_replacing): ... this new function.
2708         (validate_replace_rtx_part,
2709         validate_replace_rtx_part_nosimplify): New.
2710         * recog.h (validate_replace_rtx_part,
2711         validate_replace_rtx_part_nosimplify): Declare.
2712         * rtl.c (rtx_equal_p_cb): New.
2713         (rtx_equal_p): Use it.
2714         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
2715         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
2716         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
2717         * vecprim.h: Add a vector type for unsigned int.
2718         * haifa-sched.c: Include vecprim.h and cfgloop.h.
2719         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
2720         ready_try, cycle_issued_insns, spec_info): Make global.
2721         (readyp): Initialize.
2722         (dfa_lookahead): New global variable.
2723         (old_max_uid, old_last_basic_block): Remove.
2724         (h_i_d): Make it a vector.
2725         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
2726         through HID macro.
2727         (after_recovery, adding_bb_to_current_region_p):
2728         New variables to handle correct insertion of the recovery code.
2729         (struct ready_list): Move declaration to sched-int.h.
2730         (rgn_n_insns): Removed.
2731         (rtx_vec_t): Move to sched-int.h.
2732         (find_insn_reg_weight): Remove.
2733         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
2734         (haifa_init_h_i_d, haifa_finish_h_i_d):
2735         New functions to initialize / finalize haifa instruction data.
2736         (extend_h_i_d, init_h_i_d): Rewrite.
2737         (unlink_other_notes): Move logic to add_to_note_list.  Handle
2738         selective scheduler.
2739         (ready_lastpos, ready_element, ready_sort, reemit_notes,
2740         find_fallthru_edge): Make global, remove static prototypes.
2741         (max_issue): Make global.  Add privileged_n and state parameters.  Use
2742         them.
2743         (extend_global, extend_all): Removed.
2744         (init_before_recovery): Add new param.  Fix the handling of the case
2745         when we insert a recovery code before the EXIT which has a predecessor
2746         with a fallthrough edge to it.
2747         (create_recovery_block): Make global.  Rename to
2748         sched_create_recovery_block.  Update.
2749         (change_pattern): Rename to sched_change_pattern.  Make global.
2750         (speculate_insn): Rename to sched_speculate_insn.  Make global.
2751         Split haifa-specific functionality into ...
2752         (haifa_change_pattern): New static function.
2753         (sched_extend_bb): New static function.
2754         (sched_init_bbs): New function.
2755         (current_sched_info): Change type to struct haifa_sched_info.
2756         (insn_cost): Adjust for selective scheduling.
2757         (dep_cost_1): New function.  Move logic from ...
2758         (dep_cost): ... here.
2759         (dep_cost): Use dep_cost_1.
2760         (contributes_to_priority_p): Use sched_deps_info instead of
2761         current_sched_info.
2762         (priority): Adjust to work with selective scheduling.  Process the
2763         corner case when all dependencies don't contribute to priority.
2764         (rank_for_schedule): Use ds_weak instead of dep_weak.
2765         (advance_state): New function.  Move logic from ...
2766         (advance_one_cycle): ... here.
2767         (add_to_note_list, concat_note_lists): New functions.
2768         (rm_other_notes): Make static.  Adjust for selective scheduling.
2769         (remove_notes, restore_other_notes): New functions.
2770         (move_insn): Add two arguments.  Update assert.  Don't call
2771         reemit_notes.
2772         (choose_ready): Remove lookahead variable, use dfa_lookahead.
2773         Remove more_issue, max_points.  Move the code to initialize
2774         max_lookahead_tries to max_issue.
2775         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
2776         ready.  Adjust use of move_insn.  Call restore_other_notes.
2777         (luid): Remove.
2778         (sched_init, sched_finish): Move Haifa-specific initialization/
2779         finalization to ...
2780         (haifa_sched_init, haifa_sched_finish): ... respectively.
2781         New functions.
2782         (setup_sched_dump): New function.
2783         (haifa_init_only_bb): New static function.
2784         (haifa_speculate_insn): New static function.
2785         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
2786         (extend_ready, extend_all): Remove.
2787         (sched_extend_ready_list, sched_finish_ready_list): New functions.
2788         (create_check_block_twin, add_to_speculative_block): Use
2789         haifa_insns_init instead of extend_global.  Update to use new
2790         initialization functions.  Change parameter.  Factor out code from
2791         create_check_block_twin to ...
2792         (sched_create_recovery_edges) ... this new function.
2793         (add_block): Remove.
2794         (sched_scan_info): New.
2795         (extend_bb): Use sched_scan_info.
2796         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
2797         static functions for walking through scheduling region.
2798         (sched_luids): New vector variable to replace uid_to_luid.
2799         (luids_extend_insn): New function.
2800         (sched_max_luid): New variable.
2801         (luids_init_insn): New function.
2802         (sched_init_luids, sched_finish_luids): New functions.
2803         (insn_luid): New debug function.
2804         (sched_extend_target): New function.
2805         (haifa_init_insn): New static function.
2806         (sched_init_only_bb): New hook.
2807         (sched_split_block): New hook.
2808         (sched_split_block_1): New function.
2809         (sched_create_empty_bb): New hook.
2810         (sched_create_empty_bb_1): New function.
2811         (common_sched_info, ready): New global variables.
2812         (current_sched_info_var): Remove.
2813         (move_block_after_check): Use common_sched_info.
2814         (haifa_luid_for_non_insn): New static function.
2815         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
2816         (increase_insn_priority): New.
2817         * modulo-sched.c: (issue_rate): Remove static declaration.
2818         (sms_sched_info): Change type to haifa_sched_info.
2819         (sms_sched_deps_info, sms_common_sched_info): New variables.
2820         (setup_sched_infos): New.
2821         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
2822         Do not call regstat_free_calls_crossed.
2823         (sms_print_insn): Use const_rtx.
2824         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
2825         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
2826         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
2827         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
2828         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
2829         current_sched_info to use it.
2830         (enum reg_pending_barrier_mode): Move to sched-int.h.
2831         (h_d_i_d): New variable. Initialize to NULL.
2832         ({true, output, anti, spec, forward}_dependency_cache): Initialize
2833         to NULL.
2834         (estimate_dep_weak): Remove static declaration.
2835         (sched_has_condition_p): New function.  Adjust users of
2836         sched_get_condition to use it instead.
2837         (conditions_mutex_p): Add arguments indicating which conditions are
2838         reversed.  Use them.
2839         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
2840         argument to indicate whether returned condition is reversed.  Do not
2841         generate new rtx when condition should be reversed; indicate it by
2842         setting new argument instead.
2843         (add_dependence_list_and_free): Add deps parameter.
2844         Update all users.  Do not free dependence list when
2845         deps context is readonly.
2846         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
2847         contexts.
2848         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
2849         (remove_from_deps): New. Use the above functions.
2850         (cur_insn, can_start_lhs_rhs_p): New static variables.
2851         (add_or_update_back_dep_1): Initialize present_dep_type.
2852         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
2853         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
2854         haifa_note_dep): New functions implementing dependence hooks for
2855         the Haifa scheduler.
2856         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
2857         note_dep): New functions.
2858         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
2859         functions.
2860         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
2861         (free_deps): Initialize deps->reg_last.
2862         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
2863         sched_analyze_insn): Update to use dependency hooks infrastructure
2864         and readonly contexts.
2865         (deps_analyze_insn): New function.  Move part of logic from ...
2866         (sched_analyze): ... here.  Also move some logic to ...
2867         (deps_start_bb): ... here.  New function.
2868         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
2869         sel_sched_p.
2870         (sched_deps_init): New function.  Move code from ...
2871         (init_dependency_caches): ... here.  Remove.
2872         (init_deps_data_vector): New.
2873         (sched_deps_finish): New function.  Move code from ...
2874         (free_dependency_caches): ... here.  Remove.
2875         (init_deps_global, finish_deps_global): Adjust for use with
2876         selective scheduling.
2877         (get_dep_weak): Move logic to ...
2878         (get_dep_weak_1): New function.
2879         (ds_merge): Move logic to ...
2880         (ds_merge_1): New static function.
2881         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
2882         (ds_get_max_dep_weak): New function.
2883         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
2884         (n_insns): Rename to rgn_n_insns.
2885         (debug_ebb_dependencies): New function.
2886         (init_ready_list): Use it.
2887         (begin_schedule_ready): Use sched_init_only_bb.
2888         (ebb_print_insn): Indicate when an insn starts a new cycle.
2889         (contributes_to_priority, compute_jump_reg_dependencies,
2890         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
2891         (add_block1): Remove to ebb_add_block.
2892         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
2893         (schedule_ebb): Initialize them.  Use remove_notes instead of
2894         rm_other_notes.  Use haifa_local_init/finish.
2895         (schedule_ebbs): Use haifa_sched_init/finish.
2896         * sched-int.h: Include vecprim.h, remove rtl.h.
2897         (struct ready_list): Delete declaration.
2898         (sched_verbose_param, enum sched_pass_id_t,
2899         bb_vec_t, insn_vec_t, rtx_vec_t): New.
2900         (struct sched_scan_info_def): New structure.
2901         (sched_scan_info, sched_scan, sched_init_bbs,
2902         sched_init_luids, sched_finish_luids, sched_extend_target,
2903         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
2904         (struct common_sched_info_def): New.
2905         (common_sched_info, haifa_common_sched_info,
2906         sched_emulate_haifa_p): Declare.
2907         (sel_sched_p): New.
2908         (sched_luids): Declare.
2909         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
2910         (sched_max_luid, insn_luid): Declare.
2911         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
2912         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
2913         print_insn, print_pattern, print_value, haifa_classify_insn,
2914         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
2915         setup_sched_dump, sched_init, sched_finish,
2916         sel_insn_is_speculation_check): Export.
2917         (struct ready_list): Move from haifa-sched.c.
2918         (ready_try, ready, max_issue): Export.
2919         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
2920         sched_init_only_bb, sched_split_block, sched_split_block_1,
2921         sched_create_empty_bb, sched_create_empty_bb_1,
2922         sched_create_recovery_block, sched_create_recovery_edges): Export.
2923         (enum reg_pending_barrier_mode): Export.
2924         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
2925         (deps_t): New.
2926         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
2927         print_insn field.  Move add_block and fix_recovery_cfg to
2928         common_sched_info_def.  Move compute_jump_reg_dependencies,
2929         use_cselib  ...
2930         (struct sched_deps_info_def): ... this new structure.
2931         (sched_deps_info): Declare.
2932         (struct spec_info_def): Remove weakness_cutoff, add
2933         data_weakness_cutoff and control_weakness_cutoff.
2934         (spec_info): Declare.
2935         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
2936         dep_count field.
2937         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
2938         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
2939         (current_sched_info): Change type to struct haifa_sched_info.
2940         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
2941         (h_d_i_d): New variable.
2942         (HDID): New accessor macro.
2943         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
2944         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
2945         and HDID.
2946         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
2947         (enum SCHED_FLAGS): Update for selective scheduler.
2948         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
2949         (init_dependency_caches, free_dependency_caches): Delete declarations.
2950         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
2951         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
2952         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
2953         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
2954         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
2955         ds_to_dt): Export.
2956         (rm_other_notes): Delete declaration.
2957         (schedule_block): Remove one argument.
2958         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
2959         ready_element, ready_lastpos, sched_extend_ready_list,
2960         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
2961         concat_note_lists): Export.
2962         (struct region): Move from sched-rgn.h.
2963         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
2964         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
2965         BLOCK_TO_BB, CONTAINING_RGN): Export.
2966         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
2967         (current_nr_blocks, current_blocks, target_bb): Likewise.
2968         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
2969         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
2970         sched_rgn_local_init, extend_regions,
2971         rgn_make_new_region_out_of_new_block, compute_priorities,
2972         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
2973         extend_rgns, deps_join rgn_setup_common_sched_info,
2974         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
2975         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
2976         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
2977         increase_insn_priority): Likewise.
2978         * sched-rgn.c: Include sel-sched.h.
2979         (ref_counts): New static variable.  Use it ...
2980         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
2981         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
2982         (sched_is_disabled_for_current_region_p): Delete static declaration.
2983         (struct region): Move to sched-int.h.
2984         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
2985         ebb_head): Define and initialize.
2986         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
2987         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
2988         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
2989         sched-int.h.
2990         (find_single_block_region): Add new argument to indicate that EBB
2991         regions should be constructed.
2992         (debug_live): Delete declaration.
2993         (current_nr_blocks, current_blocks, target_bb):
2994         Remove static qualifiers.
2995         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
2996         declaration.
2997         (init_regions): Delete declaration.
2998         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
2999         rgn_estimate_number_of_insns): New.
3000         (too_large): Use estimate_number_of_insns.
3001         (haifa_find_rgns): New. Move the code from ...
3002         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
3003         (free_trg_info): New.
3004         (compute_trg_info): Allocate candidate tables here instead of ...
3005         (init_ready_list): ... here.
3006         (rgn_print_insn): Use const_rtx.
3007         (contributes_to_priority, extend_regions): Delete static declaration.
3008         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
3009         (add_block1): Rename to rgn_add_block.
3010         (debug_rgn_dependencies): Delete static qualifier.
3011         (new_ready): Use sched_deps_info.  Simplify.
3012         (rgn_common_sched_info, rgn_const_sched_deps_info,
3013         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
3014         New.
3015         (region_sched_info): Rename to rgn_const_sched_info.
3016         (deps_join): New, extracted from ...
3017         (propagate_deps): ... here.
3018         (compute_block_dependences, debug_dependencies): Update for selective
3019         scheduling.
3020         (free_rgn_deps, compute_priorities): New functions.
3021         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
3022         sched_rgn_compute_dependencies): New functions.
3023         (schedule_region): Use them.
3024         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
3025         rgn_setup_common_sched_info, rgn_setup_sched_infos):
3026         New functions.
3027         (schedule_insns): Call new functions that were split out.
3028         (rgn_make_new_region_out_of_new_block): New.
3029         (get_rgn_sched_max_insns_priority): New.
3030         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
3031         scheduling when appropriate.
3032         * sched-vis.c: Include insn-attr.h.
3033         (print_value, print_pattern): Make global.
3034         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
3035         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
3036         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
3037         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
3038         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
3039         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
3040         hooks.  Initialize them to 0.
3041         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
3042         * target.h (struct gcc_target): Add them.  Rename gen_check field to
3043         gen_spec_check.
3044         * flags.h (sel_sched_switch_set): Declare.
3045         * opts.c (sel_sched_switch_set): New variable.
3046         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
3047         pipelining is disabled from command line.
3048         (common_handle_option): Record whether selective scheduling is
3049         requested from command line.
3050         * doc/invoke.texi: Document new flags and parameters.
3051         * doc/tm.texi: Document new target hooks.
3052         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
3053         ia64_gen_check.
3054         (dfa_state_size): Do not declare locally.
3055         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
3056         * config/rs6000/rs6000.c (rs6000_init_sched_context,
3057         rs6000_alloc_sched_context, rs6000_set_sched_context,
3058         rs6000_free_sched_context): New functions.
3059         (struct _rs6000_sched_context): New.
3060         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
3061         scheduling.
3062         (rs6000_sched_finish): Do not run for selective scheduling.
3063
3064 2008-08-31  Jan Hubicka  <jh@suse.cz>
3065
3066         * frv.c (frv_rtx_costs): Update forward declaration.
3067         * spu.c (spu_rtx_costs): Likewise.
3068         * pdp11.c: Include df.h
3069         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
3070         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
3071         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
3072         * iq2000.c (iq2000_address_cost): Add speed argument.
3073         (iq2000_rtx_costs): Likewise.
3074         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
3075         update call of mn10300_address_cost.
3076         * mcore.c: Include df.h
3077         (mcore_rtx_costs): Update prototype.
3078         * score3.c: Include df.h
3079         (score3_rtx_costs): Remove speed argument.
3080         * score7.c: Include df.h
3081         (score7_address_cost): Remove speed argument.
3082         * score-protos.h (score_address_cost): Update prototype.
3083         * score.c: Include df.h
3084         (score_rtx_costs): Update call of costs functions.
3085         * v850.c (v850_rtx_costs): Add bool argument.
3086
3087 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
3088
3089         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
3090
3091 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
3092
3093         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
3094         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
3095
3096 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
3097
3098         * mkmap-flat.awk: Add option pe_dll.
3099         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
3100         * config/i386/t-cygwin (SHLIB_LC): Add.
3101         * config/i386/t-mingw32 (SHLIB_LC): Add.
3102         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
3103         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
3104         (LINK_SPEC): Support libgcc_s.
3105         (LIBGCC_SPEC): Support libgcc_s.
3106         (LIBGCC_SONAME): New.
3107
3108 2008-08-31  Jan Hubicka  <jh@suse.cz>
3109
3110         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
3111         mistakely had old version of patch.
3112
3113         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
3114         (ipcp_estimate_growth): New.
3115         (ipcp_insert_stage): Use ipcp_estimate_growth.
3116         * profile.c (branch_prob): When reading failed, do not consider
3117         profile as read.
3118
3119 2008-08-31  Jan Hubicka  <jh@suse.cz>
3120
3121         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
3122         loop is optimized for speed.
3123
3124 2008-08-31  Richard Guenther  <rguenther@suse.de>
3125
3126         PR middle-end/37289
3127         * fold-const.c (fold_binary): Retain conversions in folding
3128         ~A + 1 to -A.
3129
3130 2008-08-31  Jan Hubicka  <jh@suse.cz>
3131
3132         * postreload-gcse.c (eliminate_partially_redundant_loads):
3133         Use optimize_bb_for_size_p.
3134         * predict.c (maybe_hot_frequency_p): Make inline.
3135         (maybe_hot_count_p): Break out from ...
3136         (maybe_hot_bb_p): ... this one.
3137         (maybe_hot_edge_p): Simplify.
3138         * basic-block.h (probably_cold_bb_p): Remove.
3139
3140 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
3141
3142         PR target/37168
3143         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
3144         prototype.
3145         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
3146         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
3147         Also split V4SFmode.
3148         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
3149         vector float modes.
3150
3151 2008-08-31  Jan Hubicka  <jh@suse.cz>
3152
3153         * predict.c (PROB_VERY_LIKELY): Make small enough so things
3154         become cold.
3155         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
3156
3157 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
3158
3159         PR debug/37287
3160         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
3161         add source coords.
3162
3163         * dwarf2out.c (native_encode_initializer): Subtract min_index for
3164         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
3165
3166 2008-08-31  Jan Hubicka  <jh@suse.cz>
3167
3168         * sparc.h (BRANCH_COST): Fix macro definition.
3169         * avr.c (avr_operand_rtx_cost): Add speed argument.
3170         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
3171
3172 2008-08-31  Richard Guenther  <rguenther@suse.de>
3173
3174         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
3175         types instead of operands.  Re-instantiate verifying of
3176         binary expression operands.
3177
3178 2008-08-30  Jan Hubicka  <jh@suse.cz>
3179
3180         * fwprop.c (should_replace_address): Add speed attribute.
3181         (PR_OPTIMIZE_FOR_SPEED): New flag.
3182         (propagate_rtx_1): Use it.
3183         (propagate_rtx): Set it.
3184         (try_fwprop_subst): Update call of rtx_costs.
3185         (forward_propagate_and_simplify): LIkewise.
3186         * hooks.c (hook_int_rtx_bool_0): New
3187         (hook_bool_rtx_int_int_intp_false): Replace by ...
3188         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
3189         * hooks.h (hook_int_rtx_bool_0): New
3190         (hook_bool_rtx_int_int_intp_false): Replace by ...
3191         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
3192         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
3193         (prepare_cmp_insn): UPdate call of rtx_cost.
3194         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
3195         (reload_cse_simplify_operands): Update call of rtx_cost.
3196         (reload_cse_move2add): call of rtx_cost.
3197         * target.h (struct gcc_target): Update rtx_costs and address_costs.
3198         * rtlanal.c (rtx_cost): Add speed argument.
3199         (address_cost): Add speed argument
3200         (default_address_cost): Likewise.
3201         (insn_rtx_cost): Likewise.
3202         * cfgloopanal.c (seq_cost): Add speed argument.
3203         (target_reg_cost, target_spill_cost): Turn to array.
3204         (init_set_costs): Update for speed.
3205         (estimate_reg_pressure_cost): Add speed argument.
3206         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
3207         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
3208         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
3209         (seq_cost): Add speed argument.
3210         (computation_cost): Add speed arugment.
3211         (add_cost, multiply_by_const, get_address_cost): add speed argument.
3212         (force_expr_to_var_cost): Update for profile info.
3213         (force_var_cost): Likewise.
3214         (split_address_cost): Likewise.
3215         (ptr_difference_cost): Likewise.
3216         (difference_cost): Likewise.
3217         (get_computation_cost_at): Likewise.
3218         (determine_iv_cost): Likewise.
3219         (ivopts_global_cost_for_size): Likewise.
3220         (rewrite_use_address): Likewise.
3221         (tree_ssa_iv_optimize_loop): Initialize speed field.
3222         * cse.c (optimize_this_for_speed_p): New static var.
3223         (notreg_cost): Update call of rtx_cost.
3224         (cse_extended_basic_block): set optimize_this_for_speed_p.
3225         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
3226         (noce_try_cmove_arith): Likewise.
3227         (noce_try_sign_mask): LIkewise.
3228         * expr.c (compress_float_constant): Update rtx_cost calls.
3229         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
3230         argument.
3231         (addr_to_parts): Likewise.
3232         (create_mem_ref): Likewise.
3233         * dse.c (find_shift_sequence): Add speed argument.
3234         (replace_read): Update call.
3235         * calls.c (precompute_register_parameters): Update call of rtx_cost.
3236         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
3237         * neg_cost, shift_cost, shiftadd_cost,
3238         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
3239         mul_highpart_cost): Increase dimension.
3240         (init_expmed): Initialize for both size and speed.
3241         (expand_shift): Use profile.
3242         (synth_mult): Use profile.
3243         (choose_mult_variant): Use profile.
3244         (expand_mult): Use profile.
3245         (expand_mult_highpart_optab): Use profile.
3246         (expand_mult_highpart): Use profile.
3247         (expand_smod_pow2): Use profile.
3248         (expand_divmod): Use profile.
3249         * simplify-rtx.c (simplify_binary_operation_1): Update call of
3250         rtx_cost.
3251         * loop-invariant.c (create_new_invariant): Use profile.
3252         (gain_for_invariant): Add speed parameter.
3253         (best_gain_for_invariant): Likewise.
3254         (find_invariants_to_move): Likewise.
3255         (move_single_loop_invariants): Set it.
3256         * target-def.h (TARGET_RTX_COSTS): Use hook.
3257         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
3258         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
3259         * output.h (default_address_cost): Update prototype.
3260         * combine.c (optimize_this_for_speed_p): New static var.
3261         (combine_validate_cost): Update call of rtx_cost.
3262         (combine_instructions): Set optimize_this_for_speed_p.
3263         (expand_compound_operation): Update call of rtx_cost.
3264         (make_extraction):Update call of rtx_cost.
3265         (force_to_mode):Update call of rtx_cost.
3266         (distribute_and_simplify_rtx):Update call of rtx_cost.
3267         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
3268         (estimate_reg_pressure_cost): Update prototype.
3269         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
3270         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
3271         Remove.
3272         * config/alpha/alpha.c (alpha_rtx_costs): Update.
3273         (alpha_rtx_costs): Update.
3274         * config/frv/frv.c (frv_rtx_costs): Update.
3275         * config/s390/s390.c (s390_rtx_costs): Update.
3276         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
3277         (m32c_rtx_costs): Update.
3278         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
3279         (spu_rtx_costs): Update.
3280         * config/sparc/sparc.c (sparc_rtx_costs): Update.
3281         * config/m32r/m32r.c (m32r_rtx_costs): Update.
3282         * config/i386/i386.c (:ix86_address_cost): Update.
3283         (ix86_rtx_costs): Update.
3284         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
3285         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
3286         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
3287         * config/crx/crx.c (crx_address_cost): Update.
3288         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
3289         * config/stormy16/stormy16.c
3290         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
3291         * config/m68hc11/m68hc11.c
3292         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
3293         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
3294         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
3295         Update.
3296         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
3297         Update
3298         * config/ia64/ia64.c (ia64_rtx_costs): Update.
3299         * config/m68k/m68k.c (m68k_rtx_costs): Update.
3300         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
3301         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
3302         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
3303         (mcore_rtx_costs): update.
3304         * config/score/score3.c (score3_rtx_costs): Update.
3305         * config/score/score7.c (score7_rtx_costs): Update.
3306         * config/score/score3.h (score3_rtx_costs):Update.
3307         * config/score/score7.h (score7_rtx_costs): Update.
3308         * config/score/score.c (score_rtx_costs): Update.
3309         * config/arm/arm.c (arm_address_cost): Update.
3310         (arm_rtx_costs_1): Update.
3311         (arm_rtx_costs_1): Update.
3312         (arm_size_rtx_costs): Update.
3313         (arm_size_rtx_costs): Update.
3314         (arm_size_rtx_costs): Update.
3315         (arm_xscale_rtx_costs): Update.
3316         (arm_thumb_address_cost): Update.
3317         * config/pa/pa.c (hppa_address_cost): Update.
3318         * config/mips/mips.c (mips_rtx_costs): Update.
3319         * config/vax/vax.c (vax_address_cost): Update.
3320         * config/h8300/h8300.c (h8300_shift_costs): Update.
3321         (h8300_rtx_costs): Update.
3322         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
3323         (v850_rtx_costs): Update.
3324         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
3325         * config/bfin/bfin.c
3326         (bfin_address_cost): Update.
3327         (bfin_rtx_costs): Update.
3328         * stmt.c (lshift_cheap_p): Update.
3329
3330 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3331
3332         PR middle-end/36444
3333         * expmed.c (extract_bit_field_1): Check the mode size to make
3334         sure the vector modes have the same size.
3335
3336 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
3337
3338         * dojump.c (top level): Include basic-block.h to declare
3339         optimize_insn_for_speed_p
3340
3341         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
3342
3343         * opts.h (CL_SAVE): New option class for marking options that are
3344         target specific options usable in the target attribute.
3345         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
3346
3347         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
3348         can easily find the target specific options that are safe to use
3349         in the attribute or pragma.
3350
3351         * attribs.c (decl_attributes): Change #pragma GCC option to
3352         #pragma GCC target, and attribute((option(...))) to
3353         attribute((target(...))).
3354
3355         * doc/extend.texi (target attribute): Change from option
3356         attribute.  Delete push/pop/reset.
3357         (#pragma GCC target): Change from #pragma GCC option.  Delete
3358         push/pop/reset.
3359         (#pragma GCC push_options): Document new pragma.
3360         (#pragma GCC pop_options): Document new pragma.
3361         (#pragma GCC reset_options): Document new pragma.
3362
3363         * targhooks.c (default_target_option_valid_attribute_p): Add
3364         warning about port not supporting target attributes.
3365         (default_target_option_pragma_parse): New function, warn about
3366         #pragma GCC target not being supported.
3367
3368         * targhooks.h (default_target_option_pragma_parse): Add
3369         declaration.
3370
3371         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
3372         TI_CURRENT_OPTION_PRAGMA.
3373         (current_target_pragma): Rename from current_option_pragma.
3374
3375         * target.h: (struct target_option): Delete booleans for changing
3376         the optimization level on hot/cold functions.  Change signature of
3377         pragma_parse hook to take a second tree.
3378
3379         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
3380
3381         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
3382         that the declaration is done at global scope.
3383
3384         * langhooks.c (add_builtin_function_common): Move most of the code
3385         from add_builtin_function here, calling the hook passed in.
3386         (add_builtin_function): Call add_builtin_function_common with
3387         standard builtin hook.
3388         (add_builtin_function_ext_scope): New function to add builtins to
3389         global scope.
3390
3391         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
3392         hook.
3393         (add_builtin_function_ext_scope): Add declaration.
3394
3395         * c-pragma.c (handle_pragma_target): Rename from
3396         handle_pragma_option, #pragma GCC option is now #pragma GCC
3397         target.  Move warning about port not supporting target options to
3398         default pragma parse hook.  Remove push/pop/reset from this
3399         pragma.
3400         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
3401         (option_stack): Delete static variable.
3402         (optimize_stack): Ditto.
3403         (optons_stack): New stack of saved target and optimization
3404         options.
3405         (handle_pragma_push_options): New function to handle pushing both
3406         target and optimization options.
3407         (handle_pragma_pop_options): New function to handle popping both
3408         target and optimization options.
3409         (handle_pragma_reset_options): New function to handle resetting
3410         both target and optimization options to their initial state.
3411         (init_pragma): Rename handle_pragma_option to
3412         handle_pragma_target.  Add support for push_options, pop_options,
3413         and reset_options pragmas.
3414
3415         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
3416         default_target_option_pragma_parse.
3417         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
3418         default_target_option_valid_attribute_p.
3419         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3420         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3421         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
3422         optimization level on hot/cold functions.
3423
3424         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
3425         if the caller and callee have different optimization levels.
3426
3427         * c-common.c (handle_target_attribute): Rename from
3428         handle_option_attribute, attribute((option(...))) is now
3429         attribute((target(...))).  Move warning if the port does not
3430         support target attributes to the default hook.
3431         (handle_hot_attribute): Delete code to change the optimization
3432         level of hot functions.
3433         (handle_cold_attribute): Ditto.
3434
3435         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
3436         argument that is the binary tree options to use if there are no
3437         arguments.  Call ix86_valid_target_attribute_tree instead of
3438         ix86_valid_option_attribute_tree.
3439         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
3440         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
3441         ix86_pragma_option_parse.
3442
3443         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
3444         Rename from ix86_valid_option_attribute_tree.
3445
3446         * config/i386/i386.c (ix86_add_new_builtins): New function to add
3447         new builtins when the ISA changes.
3448         (ix86_valid_target_attribute_tree): Rename from
3449         ix86_valid_option_attribute_tree.  Change callers.  If the
3450         function specified optimization options, use those as the starting
3451         point before setting up the target attributes.  If the
3452         optimization options were changed in the course of setting the
3453         target attributes, record the new optimization options.
3454         (ix86_valid_target_attribute_tree_inner_p): Rename from
3455         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
3456         ix86_add_new_builtins if the ISA changed.
3457         (ix86_valid_target_attribute_p): Rename from
3458         ix86_valid_option_attribute_p.  Change callers.
3459         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
3460         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
3461         as delayed builtin functions.
3462         (struct builtin_isa): New structure to record builtin functions
3463         that should be delayed until the ISA for that function is used.
3464         (ix86_builtins_isa): Change from int to struct to track builtin
3465         functions we want to declare at some point.
3466         (def_builtin): If the front end can delay defining the builtin
3467         functions, don't create builtins for ISAs not part of the default
3468         options.
3469         (def_builtin_const): Ditto.
3470         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
3471         __builtin_ia32_pcmov_v2di to be different builtin functions.
3472         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
3473         a structure instead of an int.
3474         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
3475         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
3476         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3477         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3478
3479         * config/ia64/ia64.h
3480         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
3481         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
3482
3483         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
3484         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
3485         (LANG_HOOKS_INITIALIZER): Add
3486         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
3487
3488 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
3489
3490         PR target/37270
3491         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
3492         the reload address with the index register for SFmode
3493         access with a displacement.
3494
3495 2008-08-30  Jan Hubicka  <jh@suse.cz>
3496
3497         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
3498         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
3499         * dojump.c (do_jump): Likewise.
3500         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
3501         (note-if_info): Add BRANCH_COST.
3502         (noce_try_store_flag_constants, noce_try_addcc,
3503         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
3504         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
3505         find_if_case_2): Use computed branch cost.
3506         * expr.h (BRANCH_COST): Update default.
3507         * predict.c (predictable_edge_p): New function.
3508         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
3509         Update BRANCH_COST call.
3510         * basic-block.h (predictable_edge_p): Declare.
3511         * config/alpha/alpha.h (BRANCH_COST): Update.
3512         * config/frv/frv.h (BRANCH_COST): Update.
3513         * config/s390/s390.h (BRANCH_COST): Update.
3514         * config/spu/spu.h (BRANCH_COST): Update.
3515         * config/sparc/sparc.h (BRANCH_COST): Update.
3516         * config/m32r/m32r.h (BRANCH_COST): Update.
3517         * config/i386/i386.h (BRANCH_COST): Update.
3518         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
3519         BRANCH_COST.
3520         * config/sh/sh.h (BRANCH_COST): Update.
3521         * config/pdp11/pdp11.h (BRANCH_COST): Update.
3522         * config/avr/avr.h (BRANCH_COST): Update.
3523         * config/crx/crx.h (BRANCH_COST): Update.
3524         * config/xtensa/xtensa.h (BRANCH_COST): Update.
3525         * config/stormy16/stormy16.h (BRANCH_COST): Update.
3526         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
3527         * config/iq2000/iq2000.h (BRANCH_COST): Update.
3528         * config/ia64/ia64.h (BRANCH_COST): Update.
3529         * config/rs6000/rs6000.h (BRANCH_COST): Update.
3530         * config/arc/arc.h (BRANCH_COST): Update.
3531         * config/score/score.h (BRANCH_COST): Update.
3532         * config/arm/arm.h (BRANCH_COST): Update.
3533         * config/pa/pa.h (BRANCH_COST): Update.
3534         * config/mips/mips.h (BRANCH_COST): Update.
3535         * config/vax/vax.h (BRANCH_COST): Update.
3536         * config/h8300/h8300.h (BRANCH_COST): Update.
3537         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
3538         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
3539         * doc/tm.texi (BRANCH_COST): Update.
3540
3541 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
3542
3543         PR target/37283
3544         * config/arm/arm.c (arm_optimization_options): Set
3545         flag_section_anchors to 2 instead of 1 to distinguish it from
3546         -fsection-anchors given explicitely on the command line.
3547
3548 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
3549
3550         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
3551         final insn of a split.
3552
3553 2008-08-30  Jan Hubicka  <jh@suse.cz>
3554
3555         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
3556         optimized for speed.
3557         * final.c (compute_alignments): Use optimize_bb_for_size_p.
3558         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
3559         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
3560         flag_gcse_after_reload_set): New static vars.
3561         (common_handle_option): Enable those flags for profile-use.
3562         (decode_options): Remove optimize_size flags that are handled
3563         on higher granuality.
3564         * tree-vectorizer.c (vectorize_loops): Use
3565         optimize_loop_nest_for_speed_p.
3566         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
3567         * tree-predcom.c (tree_predictive_commoning): Use
3568         optimize_loop_for_speed_p.
3569         * varasm.c (assemble_start_function): Use
3570         optimize_function_for_speed_p.
3571         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
3572         * predict.c (optimize_loop_for_speed_p): Fix walk.
3573
3574 2008-08-30  Jan Hubicka  <jh@suse.cz>
3575
3576         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
3577         functions.
3578         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
3579         profile presence locally.
3580
3581 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
3582
3583         PR bootstrap/37086
3584         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
3585         versions before 4.0.
3586
3587 2008-08-29  Jan Hubicka  <jh@suse.cz>
3588
3589         * tree-inline.c (insert_init_stmt): Insert sequence even when
3590         not in SSA form.
3591
3592 2008-08-29  Jeff Law  <law@redhat.com>
3593
3594         * mn10300.c (mn10300_secondary_reload_class): We need secondary
3595         reloads for AM33-2 if IN is a pseudo with an equivalent memory
3596         location and class is an FP register.
3597
3598 2008-08-29  Jan Hubicka  <jh@suse.cz>
3599
3600         * see.c (see_merge_one_def_extension): Silence used uninitialized
3601         warning.
3602         * matrix-reorg.c (check_allocation_function): Likewise.
3603         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
3604
3605 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
3606
3607         PR c/37261
3608         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
3609         compute new & and | in type rather than TREE_TYPE (arg0).
3610
3611         * dwarf2out.c (fortran_common): Update comment.
3612         (gen_variable_die): Swap com_die and var_die variables in Fortran
3613         COMMON block handling code.
3614
3615         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
3616
3617         * dwarf2out.c (gen_const_die): New function.
3618         (size_of_die, value_format, output_die): Output larger
3619         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
3620         (native_encode_initializer): New function.
3621         (tree_add_const_value_attribute): Call it.
3622         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
3623
3624         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
3625         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
3626         TREE_THIS_VOLATILE to add_type_attribute.
3627
3628         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
3629         types.
3630         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
3631         types.
3632
3633         * dwarf2out.c (loc_by_reference): New function.
3634         (add_location_or_const_value_attribute): Use it.
3635
3636         PR fortran/23057
3637         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
3638         as DW_TAG_variable children of DW_TAG_common_block rather than
3639         DW_TAG_member children.  Put DW_AT_external to individual
3640         DW_TAG_variable DIEs, not to DW_TAG_common_block.
3641
3642         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
3643         loc_descriptor_from_tree_1.
3644
3645         PR fortran/29635
3646         PR fortran/23057
3647         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
3648         arguments to imported_module_or_decl.
3649         (debug_nothing_tree_tree): Removed.
3650         (debug_nothing_tree_tree_tree_bool): New prototype.
3651         * debug.c (do_nothing_debug_hooks): Adjust.
3652         (debug_nothing_tree_tree): Removed.
3653         (debug_nothing_tree_tree_tree_bool): New function.
3654         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
3655         (gen_variable_die): Put all common vars for the
3656         same COMMON block under one DW_TAG_common_block.
3657         (declare_in_namespace): Return new context_die, for Fortran
3658         return the module DIE instead of adding extra declarations into
3659         the namespace.
3660         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
3661         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
3662         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
3663         DW_AT_declaration.
3664         (dwarf2out_global_decl): Don't skip Fortran global vars.
3665         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
3666         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
3667         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
3668         DW_TAG_imported_declaration as child of previous
3669         DW_TAG_imported_module.
3670         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
3671         * sdbout.c (sdb_debug_hooks): Likewise.
3672         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3673
3674 2008-08-29  Jan Hubicka  <jh@suse.cz>
3675
3676         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
3677
3678         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
3679         * ipa-cp.c (n_cloning_candidates): New static variable.
3680         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
3681         (ipcp_print_all_lattices): Improve debug output.
3682         (ipcp_cloning_candidate_p): New function.
3683         (ipcp_initialize_node_lattices): Use it.
3684         (ipcp_init_stage): Do only analyzis here; prettier debug output.
3685         (ipcp_propagate_stage): Prettier debug output.
3686         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
3687         (ipcp_print_all_structures): Remove.
3688         (ipcp_need_redirect_p): Test !n_cloning_candidates.
3689         (ipcp_insert_stage): Prettier debug output; call
3690         cgraph_remove_unreachable_nodes before propagating.
3691         (pass_ipa_cp): Schedule function removal pass.
3692         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
3693         debug output.
3694         (cgraph_maybe_hot_edge_p): Move to ...
3695         * predict.c (cgraph_maybe_hot_edge_p) ... here.
3696         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
3697         (common_handle_option): Set them; enable ipa-cp when profiling.
3698         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
3699         (ipa_print_all_jump_functions): Likewise.
3700         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
3701         (ipa_print_node_params, ipa_print_all_params): New.
3702         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
3703         ipa_print_all_param_flags): Remove.
3704         (ipa_print_node_params, ipa_print_all_params): New.
3705
3706 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
3707
3708         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
3709         change from 2008-04-03.
3710         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
3711
3712 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
3713
3714         PR rtl-opt/37251
3715         * ira-color.c (push_allocnos_to_stack): Truncate
3716         removed_splay_allocno_vec.
3717
3718 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
3719
3720         PR rtl-opt/37243
3721         * ira-color (ira_fast_allocation): Don't assign hard registers to
3722         global allocnos.
3723
3724 2008-08-29  Jan Hubicka  <jh@suse.cz>
3725
3726         PR middle-end/37278
3727         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
3728         for cold internal loops.
3729
3730 2008-08-29  Richard Guenther  <rguenther@suse.de>
3731
3732         * tree-ssa-structalias.c (create_variable_info_for): Do not
3733         create fields for heap vars or vars with a noalias state.
3734         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
3735         from ESCAPED.
3736
3737 2008-08-29  Richard Guenther  <rguenther@suse.de>
3738
3739         * common.opt (ftree-store-ccp): Mark as preserved for
3740         backward compatibility.
3741         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
3742         * tree-pass.h (pass_store_ccp): Remove.
3743         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
3744         (first_vdef): Remove declaration.
3745         (get_value_loaded_by): Likewise.
3746         * tree-ssa-ccp.c (do_store_ccp): Remove.
3747         (get_default_value): Simplify as do_store_ccp is always false
3748         now.  Do not initialize mem_ref.
3749         (set_value_varying): Likewise.
3750         (canonicalize_float_value): Likewise.
3751         (set_lattice_value): Likewise.
3752         (likely_value): Likewise.
3753         (surely_varying_stmt_p): Likewise.
3754         (ccp_initialize): Likewise.
3755         (ccp_lattice_meet): Likewise.
3756         (ccp_visit_phi_node): Likewise.
3757         (ccp_fold): Likewise.
3758         (evaluate_stmt): Likewise.
3759         (visit_assignment): Likewise.
3760         (ccp_visit_stmt): Likewise.
3761         (execute_ssa_ccp): Fold into ...
3762         (do_ssa_ccp): ... this.
3763         (do_ssa_store_ccp): Remove.
3764         (gate_store_ccp): Likewise.
3765         (pass_store_ccp): Likewise.
3766         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
3767         initialize mem_ref.
3768         * tree-ssa-propagate.c (first_vdef): Remove.
3769         (get_value_loaded_by): Likewise.
3770         (replace_vuses_in): Likewise.
3771         (substitute_and_fold): Do not call replace_vuses_in.
3772         * opts.c (decode_options): Do not set flag_tree_store_ccp.
3773
3774 2008-08-29  Richard Guenther  <rguenther@suse.de>
3775
3776         PR middle-end/37236
3777         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
3778         PARAM_NOALIAS tags with is_heapvar.
3779         * tree-ssa-operands.c (access_can_touch_variable): Offset
3780         based tests do not apply for heapvars.  Fix offset test.
3781
3782 2008-08-29  Jan Hubicka  <jh@suse.cz>
3783
3784         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
3785         (-fipa-cp-clone): Enabled by default at -O3.
3786         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
3787         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
3788
3789 2008-08-29  Jan Hubicka  <jh@suse.cz>
3790
3791         * tree.c (build_function_type_skip_args,
3792         build_function_decl_skip_args): New functions.
3793         * tree.h (build_function_type_skip_args,
3794         build_function_decl_skip_args): Declare.
3795         * gimple.c (giple_copy_call_skip_args): New function.
3796         (giple_copy_call_skip_args): Declare.
3797
3798         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
3799         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
3800         (ipcp_node_modifiable_p): ... this one; use
3801         tree_versionable_function_p.
3802         (ipcp_create_replace_map): Improve debug output.
3803         (ipcp_need_redirect_p): Return false when not clonning.
3804         (ipcp_update_callgraph): Skip args.
3805         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
3806         skip args.
3807         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
3808         (save_inline_function_body): Update call of tree_function_versioning.
3809         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
3810         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
3811         argument.
3812         (tree_function_versioning): Likewise.
3813         * tree-inline.h (tree_function_versioning): Update prototype.
3814
3815 2008-08-29  Jan Hubicka  <jh@suse.cz>
3816
3817         * loop-unswitch.c (unswitch_single_loop): Use
3818         optimize_loop_for_speed_p.
3819         * tree-ssa-threadupdate.c (mark_threaded_blocks):
3820         Use optimize_function_for_size_p.
3821         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
3822         * postreload-gcse.c (eliminate_partially_redundant_load):
3823         Use optimize_bb_for_size_p.
3824         * value-prof.c (gimple_divmod_fixed_value_transform,
3825         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
3826         gimple_stringops_transform): Use optimize_bb_for_size_p.
3827         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
3828         * final.c (compute_alignments): Use optimize_function_for_size_p.
3829         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
3830         (fold_builtin_strcpy, fold_builtin_fputs): Use
3831         optimize_function_for_size_p.
3832         * fold-const.c (tree_swap_operands_p): Use
3833         optimize_function_for_size_p.
3834         * recog.c (relax_delay_slots): Likewise.
3835         * tree-ssa-math-opts.c (replace_reciprocal):
3836         Use optimize_bb_for_speed_p.
3837         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
3838         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
3839         optimize_function_for_size_p.
3840         (cgraph_decide_inlining_of_small_function): Use
3841         optimize_function_for_size_p.
3842         * global.c (find_reg): Use optimize_function_for_size_p.
3843         * opts.c (decode_options): Do not clear flag_tree_ch,
3844         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
3845         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
3846         work it out from profile.
3847         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
3848         optimize_loop_for_speed_p.
3849         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3850         Constify argument.
3851         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
3852         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
3853         * tree-eh.c (decide_copy_try_finally): Use
3854         optimize_function_for_size_p.
3855         * local-alloc.c (block_alloc): Pass BB pointer.
3856         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
3857         * gcse.c (gcse_main): Use optimize_function_for_size_p.
3858         * loop-unroll.c (decide_unrolling_and_peeling):
3859         Use optimize_loop_for_size_p.
3860         (decide_peel_completely): Likewise.
3861         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
3862         optimize_loop_for_size_p.
3863         (vect_enhance_data_refs_alignment): Likewise.
3864         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
3865         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
3866         Update call.
3867         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
3868         (try_crossjump_bb): Use optimize_bb_for_size_p.
3869         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
3870         optimize_loop_for_speed_p.
3871         * bb-reorder.c (find_traces_1_round): Likewise.
3872         (copy_bb): Use optimize_bb_for_speed_p.
3873         (duplicate_computed_gotos): Likewise.
3874         * basic-block.h (optimize_loop_nest_for_size_p,
3875         optimize_loop_nest_for_speed_p): New.
3876         * stmt.c (expand_case): Use optimize_insn_for_size_p.
3877
3878 2008-08-29  Tristan Gingold  <gingold@adacore.com>
3879
3880         * gcov.c (main): Call expandargv.
3881
3882 2008-08-29  Jan Hubicka  <jh@suse.cz>
3883
3884         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
3885         is not cold.
3886         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3887         Constify arguments.
3888         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
3889         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
3890         Constify.
3891         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
3892
3893 2008-08-29  Jan Hubicka  <jh@suse.cz>
3894
3895         * tree-pass.h (pass_strip_predict_hints): Declare.
3896         * predict.c (strip_builtin_expect): Rename to ...
3897         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
3898         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
3899         (tree_estimate_probability): Do not strip builtin_expect.
3900         (pass_strip_predict_hints): New pass.
3901         * tree-inline.c (expand_call_inline): When inlining cold function,
3902         predict it as unlikely.
3903         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
3904
3905 2008-08-29  Richard Guenther  <rguenther@suse.de>
3906
3907         PR tree-optimization/37207
3908         * tree-vrp.c (extract_range_from_binary_expr): Also try
3909         to constant fold if only one of the operands is a constant.
3910
3911 2008-08-29  Nick Clifton  <nickc@redhat.com>
3912
3913         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
3914         the same way as SYMBOL_REFs.
3915
3916 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
3917
3918         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
3919
3920 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
3921
3922         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
3923         * config/mips/mips.md (branch_likely): Remove const.  Fix
3924         comment formatting.
3925         (define_delay for type "branch"): Change to only apply for branch
3926         with likely variant.
3927         (define_delay for type "branch" and "branch_likely" no).  New delay
3928         definition.
3929         (equality_op): New code iterator.
3930         (bbv, bbinv): New code attributes.
3931         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
3932         patterns.
3933
3934 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3935             Andrew Pinski  <pinskia@gcc.gnu.org>
3936
3937         PR 18050
3938         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
3939
3940 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
3941
3942         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
3943         rule that a symbolic constant must be defined and >= 0 for the
3944         corresponding facility to be present at compile-time.
3945         * gthr-posix.c: Likewise.
3946
3947 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
3948
3949         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
3950         * config/mips/mips.md (D): New mode attribute.
3951         (mulsi3, muldi3): Merge it into ...
3952         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
3953         (muldi3_mul3): New pattern.
3954         (mulsi3_mult3): Rename to mulsi3_mul3.
3955
3956 2008-08-28  Jan Hubicka  <jh@suse.cz>
3957
3958         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
3959         to fail.
3960         * predict.c (always_optimize_for_size_p): Rename to ...
3961         (optimize_function_for_size): ... this one; make extern.
3962         (optimize_function_for_speed_p): New.
3963         (optimize_bb_for_size_p, optimize_bb_for_size_p,
3964         optimize_edge_for_size_p,optimize_edge_for_size_p,
3965         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
3966         * basic-block.h (optimize_function_for_size_p,
3967         optimize_function_for_speed_p): Declare.
3968         * i386.md (optimize_size checks): Replace them by appropriate
3969         predicate.
3970         (standard_80387_constant_p, ix86_compute_frame_layout,
3971         ix86_expand_epilogue, ix86_decompose_address,
3972         print_operand, emit_i387_cw_initialization,
3973         inline_memory_move_cost, ix86_pad_returns,
3974         ix86_reorg): Replace optimize_size checks.
3975
3976 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
3977
3978         * rtl.h (simplify_subreg_regno): Declare.
3979         * rtlanal.c (simplify_subreg_regno): New function, split out from...
3980         * simplify-rtx.c (simplify_subreg): ...here.
3981         * reload.c (find_reloads): Use simplify_subreg_regno instead of
3982         subreg_offset_representable_p.
3983
3984 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3985
3986         PR c/30949
3987         * c-typeck.c (convert_for_assignment): Give a note describing what
3988         was passed and what was expected.
3989
3990 2008-08-28  Joey Ye  <joey.ye@intel.com>
3991
3992         * doc/extend.texi: Document AVX built-in functions.
3993         * doc/invoke.texi: Document -mavx.
3994
3995 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
3996             Joey Ye  <joey.ye@intel.com>
3997             Xuepeng Guo  <xuepeng.guo@intel.com>
3998
3999         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
4000
4001         * config/i386/cpuid.h (bit_FMA): New.
4002         (bit_XSAVE): Likewise.
4003         (bit_OSXSAVE): Likewise.
4004         (bit_AVX): Likewise.
4005
4006         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
4007         define.  Use ASM_OUTPUT_AVX_PREFIX.
4008
4009         * config/i386/gmmintrin.h: New.
4010
4011         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
4012         (OPTION_MASK_ISA_AVX_SET): New.
4013         (OPTION_MASK_ISA_FMA_SET): Likewise.
4014         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
4015         (OPTION_MASK_ISA_FMA_SET): Likewise.
4016         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
4017         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
4018         (pta_flags): Add PTA_AVX and PTA_FMA.
4019         (override_options): Handle PTA_AVX and PTA_FMA.
4020         (init_cumulative_args): Handle warn_avx.
4021         (classify_argument): Return 0 for COImode and OImode.  Return
4022         1 and X86_64_AVX_CLASS for 256bit vector types.
4023         (examine_argument): Handle X86_64_AVX_CLASS.
4024         (construct_container): Likewise.
4025         (function_arg_advance_32): Pass OImode and 256bit vector types
4026         in AVX register.
4027         (function_arg_advance_64): Take a new argument to indicate if a
4028         parameter is named.  Handle 256bit vector types.  Return
4029         immediately for unnamed 256bit vector mode parameters.
4030         (function_arg_advance): Updated.
4031         (function_arg_32): Add comments for TImode.  Handle OImode
4032         and 256bit vector types.
4033         (function_arg_64): Take a new argument to indicate if a
4034         parameter is named.  Handle 256bit vector types.  Return NULL
4035         for unnamed 256bit vector mode parameters.
4036         (function_arg): Updated.
4037         (setup_incoming_varargs_64): Support
4038         AVX encoding for *sse_prologue_save_insn.
4039         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
4040         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
4041         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
4042         enabled, otherwise return -3.
4043         (standard_sse_constant_opcode): Handle AVX and 256bit vector
4044         modes.
4045         (print_reg): Support AVX registers.  Handle 'x' and 't'.
4046         Handle 'd' to duplicate the operand.
4047         (print_operand): Likewise.  Also support AVX vector compare
4048         instructions.
4049         (output_387_binary_op): Support AVX.
4050         (output_fp_compare): Likewise.
4051         (ix86_expand_vector_move_misalign): Likewise.
4052         (ix86_attr_length_vex_default): New.
4053         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
4054         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
4055         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
4056         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
4057         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
4058         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
4059         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
4060         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
4061         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
4062         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
4063         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
4064         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
4065         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
4066         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
4067         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
4068         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
4069         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
4070         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
4071         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
4072         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
4073         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
4074         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
4075         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
4076         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
4077         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
4078         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
4079         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
4080         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
4081         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
4082         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
4083         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
4084         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
4085         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
4086         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
4087         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
4088         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
4089         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
4090         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
4091         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
4092         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
4093         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
4094         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
4095         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
4096         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
4097         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
4098         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
4099         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
4100         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
4101         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
4102         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
4103         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
4104         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
4105         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
4106         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
4107         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
4108         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
4109         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
4110         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
4111         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
4112         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
4113         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
4114         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
4115         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
4116         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
4117         and IX86_BUILTIN_MOVMSKPS256,
4118         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
4119         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
4120         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
4121         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
4122         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
4123         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
4124         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
4125         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
4126         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
4127         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
4128         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
4129         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
4130         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
4131         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
4132         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
4133         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
4134         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
4135         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
4136         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
4137         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
4138         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
4139         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
4140         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
4141         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
4142         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
4143         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
4144         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
4145         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
4146         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
4147         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
4148         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
4149         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
4150         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
4151         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
4152         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
4153         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
4154         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
4155         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
4156         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
4157         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
4158         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
4159         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
4160         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
4161         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
4162         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
4163         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
4164         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
4165         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
4166         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
4167         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
4168         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
4169         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
4170         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
4171         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
4172         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
4173         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
4174         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
4175         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
4176         IX86_BUILTIN_CMPPS,
4177         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
4178         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
4179         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
4180         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
4181         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
4182         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
4183         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
4184         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
4185         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
4186         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
4187         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
4188         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
4189         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
4190         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
4191         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
4192         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
4193         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
4194         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
4195         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
4196         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
4197         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
4198         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
4199         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
4200         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
4201         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
4202         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
4203         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
4204         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
4205         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
4206         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
4207         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
4208         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
4209         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
4210         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
4211         IX86_BUILTIN_MOVMSKPS256.
4212         (ix86_init_mmx_sse_builtins): Support AVX builtins.
4213         (ix86_expand_args_builtin): Likewise.
4214         (ix86_expand_special_args_builtin): Likewise.
4215         (ix86_hard_regno_mode_ok): Handle AVX modes.
4216         (ix86_expand_vector_init_duplicate): Likewise.
4217         (ix86_expand_vector_init_one_nonzero): Likewise.
4218         (ix86_expand_vector_init_one_var): Likewise.
4219         (ix86_expand_vector_init_concat): Likewise.
4220         (ix86_expand_vector_init_general): Likewise.
4221         (ix86_expand_vector_set): Likewise.
4222         (ix86_vector_mode_supported_p): Likewise.
4223         (x86_extended_reg_mentioned_p): Check INSN_P before using
4224         PATTERN.
4225
4226         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
4227         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
4228
4229         * config/i386/i386.h (TARGET_AVX): New.
4230         (TARGET_FMA): Likewise.
4231         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
4232         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
4233         (VALID_AVX256_REG_MODE): New.
4234         (AVX256_VEC_FLOAT_MODE_P): Likewise.
4235         (AVX_FLOAT_MODE_P): Likewise.
4236         (AVX128_VEC_FLOAT_MODE_P): Likewise.
4237         (AVX256_VEC_FLOAT_MODE_P): Likewise.
4238         (AVX_VEC_FLOAT_MODE_P): Likewise.
4239         (ASM_OUTPUT_AVX_PREFIX): Likewise.
4240         (ASM_OUTPUT_OPCODE): Likewise.
4241         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
4242         support.
4243         (SSE_REG_MODE_P): Allow 256bit vector modes.
4244         (ix86_args): Add a warn_avx field.
4245
4246         * config/i386/i386.md (UNSPEC_PCMP): New.
4247         (UNSPEC_VPERMIL): Likewise.
4248         (UNSPEC_VPERMIL2): Likewise.
4249         (UNSPEC_VPERMIL2F128): Likewise.
4250         (UNSPEC_MASKLOAD): Likewise.
4251         (UNSPEC_MASKSTORE): Likewise.
4252         (UNSPEC_CAST): Likewise.
4253         (UNSPEC_VTESTP): Likewise.
4254         (UNSPECV_VZEROALL): Likewise.
4255         (UNSPECV_VZEROUPPER): Likewise.
4256         (XMM0_REG): Likewise.
4257         (XMM1_REG): Likewise.
4258         (XMM2_REG): Likewise.
4259         (XMM3_REG): Likewise.
4260         (XMM4_REG): Likewise.
4261         (XMM5_REG): Likewise.
4262         (XMM6_REG): Likewise.
4263         (XMM8_REG): Likewise.
4264         (XMM9_REG): Likewise.
4265         (XMM10_REG): Likewise.
4266         (XMM11_REG): Likewise.
4267         (XMM12_REG): Likewise.
4268         (XMM13_REG): Likewise.
4269         (XMM14_REG): Likewise.
4270         (XMM15_REG): Likewise.
4271         (prefix): Likewise.
4272         (prefix_vex_imm8): Likewise.
4273         (prefix_vex_w): Likewise.
4274         (length_vex): Likewise.
4275         (maxmin): Likewise.
4276         (movoi): Likewise.
4277         (*avx_ashlti3): Likewise.
4278         (*avx_lshrti3): Likewise.
4279         (*avx_setcc<mode>): Likewise.
4280         (*fop_<mode>_comm_mixed_avx): Likewise.
4281         (*fop_<mode>_comm_avx): Likewise.
4282         (*fop_<mode>_1_mixed_avx): Likewise.
4283         (*fop_<mode>_1_avx): Likewise.
4284         (*avx_<code><mode>3): Likewise.
4285         (*avx_ieee_smin<mode>3): Likewise.
4286         (*avx_ieee_smax<mode>3): Likewise.
4287         (mode): Add OI, V8SF and V4DF.
4288         (length): Support VEX prefix.
4289         (*cmpfp_i_mixed): Set prefix attribute.
4290         (*cmpfp_i_sse): Likewise.
4291         (*cmpfp_iu_mixed): Likewise.
4292         (*cmpfp_iu_sse): Likewise.
4293         (*movsi_1): Support AVX.
4294         (*movdi_2): Likewise.
4295         (*movdi_1_rex64): Likewise.
4296         (*movti_internal): Likewise.
4297         (*movti_rex64): Likewise.
4298         (*movsf_1): Likewise.
4299         (*movdf_nointeger): Likewise.
4300         (*movdf_integer_rex64): Likewise.
4301         (*movtf_internal): Likewise.
4302         (zero_extendsidi2_32): Likewise.
4303         (zero_extendsidi2_rex64): Likewise.
4304         (*extendsfdf2_mixed): Likewise.
4305         (*extendsfdf2_sse): Likewise.
4306         (*truncdfsf_fast_mixed): Likewise.
4307         (*truncdfsf_fast_sse): Likewise.
4308         (*truncdfsf_mixed): Likewise.
4309         (fix_trunc<mode>di_sse): Likewise.
4310         (fix_trunc<mode>si_sse): Likewise.
4311         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
4312         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
4313         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
4314         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
4315         (*rcpsf2_sse): Likewise.
4316         (*rsqrtsf2_sse): Likewise.
4317         (*sqrt<mode>2_sse): Likewise.
4318         (sse4_1_round<mode>2): Likewise.
4319         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
4320         Support AVX.  Set length attribute properly for AVX.
4321
4322         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
4323         (VECTOR_MODES (FLOAT, 32)): Likewise.
4324         (VECTOR_MODE (INT, DI, 8)): Likewise.
4325         (VECTOR_MODE (INT, HI, 32)): Likewise.
4326         (VECTOR_MODE (INT, QI, 64)): Likewise.
4327         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
4328         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
4329         (VECTOR_MODE (INT, DI, 4)): Removed.
4330         (VECTOR_MODE (INT, SI, 8)): Likewise.
4331         (VECTOR_MODE (INT, HI, 16)): Likewise.
4332         (VECTOR_MODE (INT, QI, 32)): Likewise.
4333         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
4334         (INT_MODE (OI, 32)): Likewise.
4335
4336         * config/i386/i386.opt (mavx): New.
4337         (mfma): Likewise.
4338
4339         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
4340
4341         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
4342         (*mov<mode>_internal_avx): New.
4343         (*movv2sf_internal_rex64_avx): Likewise.
4344         (*movv2sf_internal_avx): Likewise.
4345
4346         * config/i386/predicates.md (const_4_to_5_operand): New.
4347         (const_6_to_7_operand): Likewise.
4348         (const_8_to_11_operand): Likewise.
4349         (const_12_to_15_operand): Likewise.
4350         (avx_comparison_float_operator): Likewise.
4351
4352         * config/i386/sse.md (AVX256MODEI): New.
4353         (AVX256MODE): Likewise.
4354         (AVXMODEQI): Likewise.
4355         (AVXMODE): Likewise.
4356         (AVX256MODEF2P): Likewise.
4357         (AVX256MODE2P): Likewise.
4358         (AVX256MODE4P): Likewise.
4359         (AVX256MODE8P): Likewise.
4360         (AVXMODEF2P): Likewise.
4361         (AVXMODEF4P): Likewise.
4362         (AVXMODEDCVTDQ2PS): Likewise.
4363         (AVXMODEDCVTPS2DQ): Likewise.
4364         (avxvecmode): Likewise.
4365         (avxvecpsmode): Likewise.
4366         (avxhalfvecmode): Likewise.
4367         (avxscalarmode): Likewise.
4368         (avxcvtvecmode): Likewise.
4369         (avxpermvecmode): Likewise.
4370         (avxmodesuffixf2c): Likewise.
4371         (avxmodesuffixp): Likewise.
4372         (avxmodesuffixs): Likewise.
4373         (avxmodesuffix): Likewise.
4374         (vpermilbits): Likewise.
4375         (pinsrbits): Likewise.
4376         (mov<mode>): Likewise.
4377         (*mov<mode>_internal): Likewise.
4378         (push<mode>1): Likewise.
4379         (movmisalign<mode>): Likewise.
4380         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4381         (avx_movdqu<avxmodesuffix>): Likewise.
4382         (avx_lddqu<avxmodesuffix>): Likewise.
4383         (<plusminus_insn><mode>3): Likewise.
4384         (*avx_<plusminus_insn><mode>3): Likewise.
4385         (*avx_vm<plusminus_insn><mode>3): Likewise.
4386         (mul<mode>3): Likewise.
4387         (*avx_mul<mode>3): Likewise.
4388         (*avx_vmmul<mode>3): Likewise.
4389         (divv8sf3): Likewise.
4390         (divv4df3): Likewise.
4391         (avx_div<mode>3): Likewise.
4392         (*avx_div<mode>3): Likewise.
4393         (*avx_vmdiv<mode>3): Likewise.
4394         (avx_rcpv8sf2): Likewise.
4395         (*avx_vmrcpv4sf2): Likewise.
4396         (sqrtv8sf2): Likewise.
4397         (avx_sqrtv8sf2): Likewise.
4398         (*avx_vmsqrt<mode>2): Likewise.
4399         (rsqrtv8sf2): Likewise.
4400         (avx_rsqrtv8sf2): Likewise.
4401         (*avx_vmrsqrtv4sf2): Likewise.
4402         (<code><mode>3): Likewise.
4403         (*avx_<code><mode>3_finite): Likewise.
4404         (*avx_<code><mode>3): Likewise.
4405         (*avx_vm<code><mode>3): Likewise.
4406         (*avx_ieee_smin<mode>3): Likewise.
4407         (*avx_ieee_smax<mode>3): Likewise.
4408         (avx_addsubv8sf3): Likewise.
4409         (avx_addsubv4df3): Likewise.
4410         (*avx_addsubv4sf3): Likewise.
4411         (*avx_addsubv2df3): Likewise.
4412         (avx_h<plusminus_insn>v4df3): Likewise.
4413         (avx_h<plusminus_insn>v8sf3): Likewise.
4414         (*avx_h<plusminus_insn>v4sf3): Likewise.
4415         (*avx_h<plusminus_insn>v2df3): Likewise.
4416         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
4417         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
4418         (*avx_maskcmp<mode>3): Likewise.
4419         (avx_nand<mode>3): Likewise.
4420         (*avx_<code><mode>3): Likewise.
4421         (*avx_nand<mode>3): Likewise.
4422         (*avx_<code><mode>3): Likewise.
4423         (*avx_cvtsi2ss): Likewise.
4424         (*avx_cvtsi2ssq): Likewise.
4425         (*avx_cvtsi2sd): Likewise.
4426         (*avx_cvtsi2sdq): Likewise.
4427         (*avx_cvtsd2ss): Likewise.
4428         (avx_cvtss2sd): Likewise.
4429         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
4430         (avx_cvtps2dq<avxmodesuffix>): Likewise.
4431         (avx_cvttps2dq<avxmodesuffix>): Likewise.
4432         (*avx_cvtsi2sd): Likewise.
4433         (*avx_cvtsi2sdq): Likewise.
4434         (avx_cvtdq2pd256): Likewise.
4435         (avx_cvtpd2dq256): Likewise.
4436         (avx_cvttpd2dq256): Likewise.
4437         (*avx_cvtsd2ss): Likewise.
4438         (*avx_cvtss2sd): Likewise.
4439         (avx_cvtpd2ps256): Likewise.
4440         (avx_cvtps2pd256): Likewise.
4441         (*avx_movhlps): Likewise.
4442         (*avx_movlhps): Likewise.
4443         (avx_unpckhps256): Likewise.
4444         (*avx_unpckhps): Likewise.
4445         (avx_unpcklps256): Likewise.
4446         (*avx_unpcklps): Likewise.
4447         (avx_movshdup256): Likewise.
4448         (avx_movsldup256): Likewise.
4449         (avx_shufps256): Likewise.
4450         (avx_shufps256_1): Likewise.
4451         (*avx_shufps_<mode>): Likewise.
4452         (*avx_loadhps): Likewise.
4453         (*avx_storelps): Likewise.
4454         (*avx_loadlps): Likewise.
4455         (*avx_movss): Likewise.
4456         (*vec_dupv4sf_avx): Likewise.
4457         (*vec_concatv2sf_avx): Likewise.
4458         (*vec_concatv4sf_avx): Likewise.
4459         (*vec_setv4sf_0_avx): Likewise.
4460         (*vec_setv4sf_avx): Likewise.
4461         (*avx_insertps): Likewise.
4462         (avx_vextractf128<mode>): Likewise.
4463         (vec_extract_lo_<mode>): Likewise.
4464         (vec_extract_hi_<mode>): Likewise.
4465         (vec_extract_lo_<mode>): Likewise.
4466         (vec_extract_hi_<mode>): Likewise.
4467         (vec_extract_lo_v16hi): Likewise.
4468         (vec_extract_hi_v16hi): Likewise.
4469         (vec_extract_lo_v32qi): Likewise.
4470         (vec_extract_hi_v32qi): Likewise.
4471         (avx_unpckhpd256): Likewise.
4472         (*avx_unpckhpd): Likewise.
4473         (avx_movddup256): Likewise.
4474         (*avx_movddup): Likewise.
4475         (avx_unpcklpd256): Likewise.
4476         (*avx_unpcklpd): Likewise.
4477         (avx_shufpd256): Likewise.
4478         (avx_shufpd256_1): Likewise.
4479         (*avx_punpckhqdq): Likewise.
4480         (*avx_punpcklqdq): Likewise.
4481         (*avx_shufpd_<mode>): Likewise.
4482         (*avx_storehpd): Likewise.
4483         (*avx_loadhpd): Likewise.
4484         (*avx_loadlpd): Likewise.
4485         (*avx_movsd): Likewise.
4486         (*vec_concatv2df_avx): Likewise.
4487         (*avx_<plusminus_insn><mode>3): Likewise.
4488         (*avx_<plusminus_insn><mode>3): Likewise.
4489         (*avx_mulv8hi3): Likewise.
4490         (*avxv8hi3_highpart): Likewise.
4491         (*avx_umulv8hi3_highpart): Likewise.
4492         (*avx_umulv2siv2di3): Likewise.
4493         (*avx_mulv2siv2di3): Likewise.
4494         (*avx_pmaddwd): Likewise.
4495         (*avx_mulv4si3): Likewise.
4496         (*avx_ashr<mode>3): Likewise.
4497         (*avx_lshr<mode>3): Likewise.
4498         (*avx_ashl<mode>3): Likewise.
4499         (*avx_<code><mode>3): Likewise.
4500         (*avx_eq<mode>3): Likewise.
4501         (*avx_gt<mode>3): Likewise.
4502         (*avx_nand<mode>3): Likewise.
4503         (*avx_nand<mode>3): Likewise.
4504         (*avx_<code><mode>3): Likewise.
4505         (*avx_<code><mode>3): Likewise.
4506         (*avx_packsswb): Likewise.
4507         (*avx_packssdw): Likewise.
4508         (*avx_packuswb): Likewise.
4509         (*avx_punpckhbw): Likewise.
4510         (*avx_punpcklbw): Likewise.
4511         (*avx_punpckhwd): Likewise.
4512         (*avx_punpcklwd): Likewise.
4513         (*avx_punpckhdq): Likewise.
4514         (*avx_punpckldq): Likewise.
4515         (*avx_pinsr<avxmodesuffixs>): Likewise.
4516         (*avx_pinsrq): Likewise.
4517         (*avx_loadld): Likewise.
4518         (*vec_extractv2di_1_rex64_avx): Likewise.
4519         (*vec_extractv2di_1_avx): Likewise.
4520         (*vec_dupv2di_avx): Likewise.
4521         (*vec_concatv2si_avx): Likewise.
4522         (*vec_concatv4si_1_avx): Likewise.
4523         (*vec_concatv2di_avx): Likewise.
4524         (*vec_concatv2di_rex64_avx): Likewise.
4525         (*avx_uavgv16qi3): Likewise.
4526         (*avx_uavgv8hi3): Likewise.
4527         (*avx_psadbw): Likewise.
4528         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
4529         (*avx_phaddwv8hi3): Likewise.
4530         (*avx_phadddv4si3): Likewise.
4531         (*avx_phaddswv8hi3): Likewise.
4532         (*avx_phsubwv8hi3): Likewise.
4533         (*avx_phsubdv4si3): Likewise.
4534         (*avx_phsubswv8hi3): Likewise.
4535         (*avx_pmaddubsw128): Likewise.
4536         (*avx_pmulhrswv8hi3): Likewise.
4537         (*avx_pshufbv16qi3): Likewise.
4538         (*avx_psign<mode>3): Likewise.
4539         (*avx_palignrti): Likewise.
4540         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4541         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4542         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4543         (*avx_mpsadbw): Likewise.
4544         (*avx_packusdw): Likewise.
4545         (*avx_pblendvb): Likewise.
4546         (*avx_pblendw): Likewise.
4547         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4548         (avx_ptest256): Likewise.
4549         (avx_roundp<avxmodesuffixf2c>256): Likewise.
4550         (*avx_rounds<ssemodesuffixf2c>): Likewise.
4551         (*avx_aesenc): Likewise.
4552         (*avx_aesenclast): Likewise.
4553         (*avx_aesdec): Likewise.
4554         (*avx_aesdeclast): Likewise.
4555         (avx_vzeroupper): Likewise.
4556         (avx_vzeroupper_rex64): Likewise.
4557         (avx_vpermil<mode>): Likewise.
4558         (avx_vpermilvar<mode>3): Likewise.
4559         (avx_vpermil2<mode>3): Likewise.
4560         (avx_vperm2f128<mode>3): Likewise.
4561         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4562         (avx_vbroadcastss256): Likewise.
4563         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
4564         (avx_vinsertf128<mode>): Likewise.
4565         (vec_set_lo_<mode>): Likewise.
4566         (vec_set_hi_<mode>): Likewise.
4567         (vec_set_lo_<mode>): Likewise.
4568         (vec_set_hi_<mode>): Likewise.
4569         (vec_set_lo_v16hi): Likewise.
4570         (vec_set_hi_v16hi): Likewise.
4571         (vec_set_lo_v32qi): Likewise.
4572         (vec_set_hi_v32qi): Likewise.
4573         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4574         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
4575         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
4576         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
4577         (vec_init<mode>): Likewise.
4578         (*vec_concat<mode>_avx): Likewise.
4579         (blendbits): Support V8SF and V4DF.
4580         (sse2_movq128): Support AVX.
4581         (<sse>_movnt<mode>): Likewise.
4582         (sse2_movntv2di): Likewise.
4583         (sse_rcpv4sf2): Likewise.
4584         (sse_sqrtv4sf2): Likewise.
4585         (sse_rsqrtv4sf2): Likewise.
4586         (<sse>_comi): Likewise.
4587         (<sse>_ucomi): Likewise.
4588         (sse_cvtss2si): Likewise.
4589         (sse_cvtss2si_2): Likewise.
4590         (sse_cvtss2siq): Likewise.
4591         (sse_cvtss2siq_2): Likewise.
4592         (sse_cvttss2si): Likewise.
4593         (sse_cvttss2siq): Likewise.
4594         (sse2_cvtsd2si): Likewise.
4595         (sse2_cvtsd2si_2): Likewise.
4596         (sse2_cvtsd2siq): Likewise.
4597         (sse2_cvtsd2siq_2): Likewise.
4598         (sse2_cvttsd2si): Likewise.
4599         (sse2_cvttsd2siq): Likewise.
4600         (sse2_cvtdq2pd): Likewise.
4601         (*sse2_cvtpd2dq): Likewise.
4602         (*sse2_cvttpd2dq): Likewise.
4603         (*sse2_cvtpd2ps): Likewise.
4604         (sse2_cvtps2pd): Likewise.
4605         (sse3_movshdup): Likewise.
4606         (sse3_movsldup): Likewise.
4607         (sse_storehps): Likewise.
4608         (*sse4_1_extractps): Likewise.
4609         (sse2_storelpd): Likewise.
4610         (vec_dupv2df_sse3): Likewise.
4611         (*vec_concatv2df_sse3): Likewise.
4612         (*sse4_1_pextrb): Likewise.
4613         (*sse4_1_pextrb_memory): Likewise.
4614         (*sse2_pextrw): Likewise.
4615         (*sse4_1_pextrw_memory): Likewise.
4616         (*sse4_1_pextrd): Likewise.
4617         (*sse4_1_pextrq): Likewise.
4618         (sse2_pshufd_1): Likewise.
4619         (sse2_pshuflw_1): Likewise.
4620         (sse2_pshufhw_1): Likewise.
4621         (*sse2_storeq_rex64): Likewise.
4622         (*vec_dupv4si): Likewise.
4623         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
4624         (sse2_pmovmskb): Likewise.
4625         (*sse2_maskmovdqu): Likewise.
4626         (*sse2_maskmovdqu_rex64): Likewise.
4627         (sse_ldmxcsr): Likewise.
4628         (sse_stmxcsr): Likewise.
4629         (abs<mode>2): Likewise.
4630         (sse4_1_movntdqa): Likewise.
4631         (sse4_1_phminposuw): Likewise.
4632         (sse4_1_extendv8qiv8hi2): Likewise.
4633         (*sse4_1_extendv8qiv8hi2): Likewise.
4634         (sse4_1_extendv4qiv4si2): Likewise.
4635         (*sse4_1_extendv4qiv4si2): Likewise.
4636         (sse4_1_extendv2qiv2di2): Likewise.
4637         (*sse4_1_extendv2qiv2di2): Likewise.
4638         (sse4_1_extendv4hiv4si2): Likewise.
4639         (*sse4_1_extendv4hiv4si2): Likewise.
4640         (sse4_1_extendv2hiv2di2): Likewise.
4641         (*sse4_1_extendv2hiv2di2): Likewise.
4642         (sse4_1_extendv2siv2di2): Likewise.
4643         (*sse4_1_extendv2siv2di2): Likewise.
4644         (sse4_1_zero_extendv8qiv8hi2): Likewise.
4645         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
4646         (sse4_1_zero_extendv4qiv4si2): Likewise.
4647         (*sse4_1_zero_extendv4qiv4si2): Likewise.
4648         (sse4_1_zero_extendv2qiv2di2): Likewise.
4649         (*sse4_1_zero_extendv2qiv2di2): Likewise.
4650         (sse4_1_zero_extendv4hiv4si2): Likewise.
4651         (*sse4_1_zero_extendv4hiv4si2): Likewise.
4652         (sse4_1_zero_extendv2hiv2di2): Likewise.
4653         (*sse4_1_zero_extendv2hiv2di2): Likewise.
4654         (sse4_1_zero_extendv2siv2di2): Likewise.
4655         (*sse4_1_zero_extendv2siv2di2): Likewise.
4656         (sse4_1_ptest): Likewise.
4657         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
4658         (sse4_2_pcmpestri): Likewise.
4659         (sse4_2_pcmpestrm): Likewise.
4660         (sse4_2_pcmpistri): Likewise.
4661         (sse4_2_pcmpistrm): Likewise.
4662         (aesimc): Likewise.
4663         (aeskeygenassist): Likewise.
4664
4665 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
4666
4667         * config/i386/predicates.md (vzeroall_operation): New.
4668
4669         * config/i386/sse.md (avx_vzeroall): New.
4670         (*avx_vzeroall): Likewise.
4671
4672 2008-08-28  Paul Brook  <paul@codesourcery.com>
4673             Mark Shinwell  <shinwell@codesourcery.com>
4674             Richard Earnshaw  <richard.earnshaw@arm.com>
4675
4676         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
4677         (TARGET_MIN_ANCHOR_OFFSET): New.
4678         (arm_override_options): Set correct anchor ranges for Thumb-1
4679         and Thumb-2 if required.
4680         (legitimize_pic_address): Handle case involving a TLS symbol
4681         reference with an addend.
4682         (arm_optimization_options): Enable section anchors at -O1 and
4683         above.
4684         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
4685         * config/arm/arm-protos.h (arm_optimization_options): New.
4686
4687 2008-08-28  Nick Clifton  <nickc@redhat.com>
4688
4689         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
4690         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
4691         attribute.
4692
4693         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
4694         * config/v850/v850.md (return): Remove frame size restriction.
4695
4696         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
4697
4698         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
4699
4700         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
4701
4702         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
4703
4704 2008-08-28  Paul Brook  <paul@codesourcery.com>
4705
4706         * config/arm/vfp11.md: Update license notice.
4707         * config/arm/cortex-r4.md: Ditto.
4708
4709 2008-08-28  Richard Guenther  <rguenther@suse.de>
4710
4711         PR tree-optimization/37207
4712         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
4713         tuplification bug.
4714
4715 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
4716
4717         PR c++/36741
4718         * tree.c (int_fits_type_p): Don't forget unsigned integers
4719           of type sizetype which higher end word equals -1.
4720
4721 2008-08-28  Ira Rosen  <irar@il.ibm.com>
4722
4723         * target.h (struct vectorize): Add new target builtin.
4724         * tree-vectorizer.c (destroy_loop_vec_info): Call
4725         vect_free_slp_instance instead of vect_free_slp_node.
4726         * tree-vectorizer.h (enum slp_load_perm_type): New.
4727         (struct _slp_instance): Add new fields.
4728         (SLP_INSTANCE_LOAD_PERMUTATION): New.
4729         (SLP_INSTANCE_LOADS): New.
4730         (vect_free_slp_tree): Remove.
4731         (vect_free_slp_instance): Declare.
4732         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
4733         (vectorizable_load): Add argument.
4734         (vect_transform_slp_perm_load): New.
4735         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
4736         vectorizable_load.
4737         (vect_get_place_in_interleaving_chain): New function.
4738         (vect_free_slp_tree): Make static.
4739         (vect_free_slp_instance): New function.
4740         (vect_build_slp_tree): Add new arguments. Allow load permutations and
4741         collect the load location in the interleaving chain.
4742         (vect_supported_slp_permutation_p): New function.
4743         (vect_supported_load_permutation_p): Likewise.
4744         (vect_analyze_slp_instance): In case of loads permutation, call
4745         vect_supported_load_permutation_p to check that the permutation is
4746         supported.
4747         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
4748         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
4749         (vect_create_mask_and_perm): New function.
4750         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
4751         (vectorizable_load): Add an argument. Don't keep the created vectors
4752         statements in the node if permutation is required. Call
4753         vect_transform_slp_perm_load to generate the permutation.
4754         (vect_transform_stmt): Add new argument. Call vectorizable_load with
4755         additional argument.
4756         (vect_schedule_slp_instance): In case of loads permutation, allocate
4757         vectorized statements structure for all the related SLP nodes. Call
4758         vect_transform_stmt with addditional argument.
4759         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
4760         * config/spu/spu.c (spu_builtin_vec_perm): New.
4761         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
4762         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
4763         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
4764         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
4765
4766 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
4767
4768         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
4769         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
4770         __gthread_cond_signal, __gthread_cond_timedwait,
4771         __gthread_cond_timedwait_recursive): New functions.
4772         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
4773         Likewise.
4774         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
4775         thread interfaces.
4776
4777 2008-08-28  Richard Guenther  <rguenther@suse.de>
4778
4779         PR middle-end/37005
4780         * fold-const.c (maybe_canonicalize_comparison_1): Require
4781         undefined overflow only for canonicalizing A +- CST cmp CST.
4782         Make sure to not generate new constants that are not inside
4783         their TYPE_MIN/MAX_VALUE range.
4784         (maybe_canonicalize_comparison): Remove undefined overflow
4785         checking from here.
4786         (fold_binary): Remove now duplicate folding.
4787
4788 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
4789
4790         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
4791         use not updated in the last change.
4792
4793 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4794
4795         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
4796         (IRA_COVER_CLASSES): Add FPUL_REGS.
4797
4798 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4799
4800         PR 37217
4801         * c-common.c (conversion_warning): Check for null operands.
4802
4803 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4804
4805         PR c/31673
4806         * c-decl.c (check_for_loop_decls): Improve error message. Give
4807         hint.
4808
4809 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4810
4811         PR c/37186
4812         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
4813         (convert_for_assignment): Pass corrent OPT_W* parameter to
4814         WARN_FOR_ASSIGNMENT.
4815
4816 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
4817
4818         PR c++/35321
4819         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
4820
4821 2008-08-27  Paul Brook  <paul@codesourcery.com>
4822
4823         * config.gcc: Loosen checks for arm uclinux eabi targets.
4824
4825 2008-08-27  Paul Brook  <paul@codesourcery.com>
4826
4827         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
4828         _clzsi2.
4829         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
4830
4831 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
4832
4833         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
4834         the enumerators of an ENUMERAL_TYPE.
4835         * dbxout.c (dbxout_type): Ditto.
4836
4837 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4838
4839         PR rtl-opt/37219
4840         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
4841         (fwprop_addr): Check that the loop_father is not the outer loop.
4842
4843 2008-08-26  Paul Brook  <paul@codesourcery.com>
4844
4845         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
4846         Remove documentation entry for fmul type.
4847         Use fmuls to annotate single-precision multiplication patterns,
4848         fmuld to annotate double-precision multiplication patterns,
4849         fmacs to annotate single-precision multiply-accumulate patterns
4850         and fmacd to annotate double-precision multiply-accumulate patterns.
4851         * config/arm/vfp11.md: Update reservations accordingly.
4852         * config/arm/arm.md: Note that certain values of the "type"
4853         attribute are documented in vfp.md.
4854         * config/arm/arm1020e.md: Remove out of date duplicate comment.
4855         (v10_cvt): Use new fmul types.
4856
4857 2008-08-26  Paul Brook  <paul@codesourcery.com>
4858
4859         * config/arm/vfp.md: Move pipeline description for VFP11 to...
4860         * config/arm/vfp11.md: ...here.  New.
4861         * config/arm/arm.md: Include vfp11.md.
4862
4863 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
4864
4865         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
4866         parameter to inform call.
4867
4868 2008-08-26  Jeff Law  <law@redhat.com>
4869
4870         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
4871         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
4872         preferred class when copying a constant into a partial word register.
4873
4874 2008-08-26  Ben Elliston  <bje@au.ibm.com>
4875
4876         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
4877         * cp/typeck.c: Likewise.
4878         * cp/tree.c: Likewise.
4879         * gimple-low.c: Likewise.
4880         * jump.c: Likewise.
4881
4882 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
4883
4884         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
4885         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
4886
4887         * doc/passes.texi: Describe IRA.
4888
4889         * doc/tm.texi (IRA_COVER_CLASSES,
4890         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
4891
4892         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
4893         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
4894         -fira-propagate-cost, -fno-ira-share-save-slots,
4895         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
4896
4897         * flags.h (ira_algorithm): New enumeration.
4898         (flag_ira_algorithm, flag_ira_verbose): New external variable
4899         declarations.
4900
4901         * postreload.c (gate_handle_postreload): Don't do post reload
4902         optimizations unless the reload is completed.
4903
4904         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
4905         IRA.
4906
4907         * tree-pass.h (pass_ira): New external variable declaration.
4908
4909         * reload.h: Add 2008 to the Copyright.
4910
4911         * cfgloopanal.c: Include params.h.
4912         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
4913         mode.
4914
4915         * params.h (IRA_MAX_LOOPS_NUM): New macro.
4916
4917         * toplev.c (ira.h): New include.
4918         (flag_ira_algorithm, flag_ira_verbose): New external variables.
4919         (backend_init_target): Call ira_init.
4920         (backend_init): Call ira_init_once.
4921         (finalize): Call finish_ira_once.
4922
4923         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
4924         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
4925         external variables.
4926
4927         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
4928         may_move_out_cost): New external variable declarations.
4929         (move_table): New typedef.
4930
4931         * caller-save.c: Include headers output.h and ira.h.
4932         (no_caller_save_reg_set): New global variable.
4933         (save_slots_num, save_slots): New variables.
4934         (reg_save_code, reg_restore_code, add_stored_regs): Add
4935         prototypes.
4936         (init_caller_save): Set up no_caller_save_reg_set.
4937         (init_save_areas): Reset save_slots_num.
4938         (saved_hard_reg): New structure.
4939         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
4940         (initiate_saved_hard_regs, new_saved_hard_reg,
4941         finish_saved_hard_regs, saved_hard_reg_compare_func): New
4942         functions.
4943         (setup_save_areas): Add code for sharing stack slots.
4944         (all_blocks): New variable.
4945         (save_call_clobbered_regs): Process pseudo-register too.
4946         (mark_set_regs): Process pseudo-register too.
4947         (insert_one_insn): Put the insn after bb note in a empty basic
4948         block.  Add insn check.
4949
4950         * global.c (eliminable_regset): Make it external.
4951         (mark_elimination): Use DF_LR_IN for IRA.
4952         (pseudo_for_reload_consideration_p): New.
4953         (build_insn_chain): Make it external.  Don't ignore spilled
4954         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
4955         (gate_handle_global_alloc): New function.
4956         (pass_global_alloc): Add the gate function.
4957
4958         * opts.c (decode_options): Set up flag_ira.  Print the warning for
4959         -fira.
4960         (common_handle_option): Process -fira-algorithm and -fira-verbose.
4961
4962         * timevar.def (TV_IRA, TV_RELOAD): New passes.
4963
4964         * regmove.c (regmove_optimize): Don't do replacement of output for
4965         IRA.
4966
4967         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
4968         New external variable declarations.
4969
4970         * local-alloc.c (update_equiv_regs): Make it external.  Return
4971         true if jump label rebuilding should be done.  Rescan new_insn for
4972         notes.
4973         (gate_handle_local_alloc): New function.
4974         (pass_local_alloc): Add the gate function.
4975
4976         * alias.c (value_addr_p, stack_addr_p): New functions.
4977         (nonoverlapping_memrefs_p): Use them for IRA.
4978
4979         * common.opt (fira, fira-algorithm, fira-coalesce,
4980         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
4981         fira-verbose): New options.
4982
4983         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
4984         move_cost, may_move_in_cost, may_move_out_cost): Make the
4985         variables external.
4986         (move_table): Remove typedef.
4987         (init_move_cost): Make it external.
4988         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
4989         functions.
4990
4991         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
4992         setup_reg_classes): New function prototypes.
4993         (eliminable_regset): New external variable declaration.
4994         (build_insn_chain, update_equiv_regs): New function prototypes.
4995
4996         * Makefile.in (IRA_INT_H): New definition.
4997         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
4998         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
4999         (reload1.o, toplev.o): Add dependence on ira.h.
5000         (cfgloopanal.o): Add PARAMS_H.
5001         (caller-save.o): Add dependence on output.h and ira.h.
5002         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
5003         ira-emit.o, ira-lives.o): New entries.
5004
5005         * passes.c (pass_ira): New pass.
5006
5007         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
5008
5009         * reload1.c (ira.h): Include the header.
5010         (changed_allocation_pseudos): New bitmap.
5011         (init_reload): Initiate the bitmap.
5012         (compute_use_by_pseudos): Permits spilled registers in FROM.
5013         (temp_pseudo_reg_arr): New variable.
5014         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
5015         IRA.  Call alter_reg with the additional parameter.  Don't clear
5016         spilled_pseudos for IRA.  Restore original insn chain for IRA.
5017         Clear changed_allocation_pseudos at the end of reload.
5018         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
5019         (hard_regno_to_pseudo_regno): New variable.
5020         (count_pseudo): Check spilled pseudos.  Set up
5021         hard_regno_to_pseudo_regno.
5022         (count_spilled_pseudo): Check spilled pseudos. Update
5023         hard_regno_to_pseudo_regno.
5024         (find_reg): Use better_spill_reload_regno_p.  Check
5025         hard_regno_to_pseudo_regno.
5026         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
5027         code for IRA.
5028         (eliminate_regs_1): Use additional parameter for alter_reg.
5029         (finish_spills): Set up pseudo_previous_regs only for spilled
5030         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
5031         more arguments.  Don't clear live_throughout and dead_or_set for
5032         spilled pseudos.  Use additional parameter for alter_reg.  Call
5033         mark_allocation_change.  Set up changed_allocation_pseudos.
5034         Remove sanity check.
5035         (emit_input_reload_insns, delete_output_reload): Use additional
5036         parameter for alter_reg.  Call mark_allocation_change.
5037         (substitute, gen_reload_chain_without_interm_reg_p): New
5038         functions.
5039         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
5040
5041         * testsuite/gcc.dg/20080410-1.c: New file.
5042
5043         * config/s390/s390.h (IRA_COVER_CLASSES,
5044         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
5045
5046         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
5047
5048         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
5049
5050         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
5051
5052         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
5053
5054         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
5055
5056         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
5057
5058         2008-08-24  Jeff Law  <law@redhat.com>
5059         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
5060         when ignoring unavailable registers.
5061
5062         2008-08-24  Jeff Law  <law@redhat.com>
5063         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
5064         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
5065         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
5066         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
5067
5068         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
5069         * ira-build.c (allocno_range_compare_func): Stabilize sort.
5070
5071         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
5072         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
5073         * reload1.c (find_reg): Process registers in register allocation order.
5074
5075         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
5076         * toplev.c (backend_init_target): Move ira_init call from
5077         here...
5078         (lang_dependent_init_target): ...to here.
5079
5080         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
5081         * ira.c (setup_class_subset_and_memory_move_costs): Don't
5082         calculate memory move costs for NO_REGS.
5083
5084         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
5085         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
5086         STACK_REGS is defined.
5087
5088         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
5089         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
5090
5091         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
5092         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
5093
5094         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
5095         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
5096         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
5097         barrier.
5098
5099 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
5100             Dorit Nuzman  <dorit@il.ibm.com>
5101
5102         * gcc/config/spu/spu.md (vec_extract_evenv4si,
5103         vec_extract_evenv4sf, vec_extract_evenv8hi,
5104         vec_extract_evenv16qi, vec_extract_oddv4si,
5105         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
5106         vec_interleave_highv4sf, vec_interleave_lowv4sf,
5107         vec_interleave_highv4si, vec_interleave_lowv4si,
5108         vec_interleave_highv8hi, vec_interleave_lowv8hi,
5109         vec_interleave_highv16qi, vec_interleave_lowv16qi,
5110         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
5111
5112 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
5113
5114         PR target/36756
5115         * config/rs6000/rs6000.c (optimization_options): Don't default to
5116         section anchors without toplevel reorder.
5117
5118 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5119
5120         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
5121         (mfc_end_critical_section): Likewise.
5122
5123 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5124
5125         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
5126         all type qualifiers from element type to vector type.
5127
5128 2008-08-25  David Daney  <ddaney@avtrex.com>
5129
5130         * config/mips/mips.md (immediate_insn): Move up in file, fix
5131         comment typo, reformat.
5132         (fetchop_bit, atomic_hiqi_op memory_barrier,
5133         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
5134         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
5135         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
5136         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
5137         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
5138         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
5139         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
5140         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
5141         sync_old_nand<mode>, sync_new_nand<mode>,
5142         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
5143         test_and_set_12): Moved to sync.md.
5144         (sync.md): Include.
5145         * config/mips/sync.md: New file.
5146
5147 2008-08-25  Richard Henderson  <rth@redhat.com>
5148
5149         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
5150         (regsave): Likewise.
5151         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
5152         (output_cfi_directive): Likewise.
5153         (div_data_align): New.
5154         (output_cfi): Use it.
5155
5156 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
5157
5158         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
5159         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
5160         (TARGET_OCTEON): New macro.
5161         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
5162         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
5163         (ISA_HAS_POP): New macro.
5164         * config/mips/driver-native.c (host_detect_local_cpu): Handle
5165         Octeon.
5166         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
5167         Handle Octeon.
5168         * config/mips/mips.md (cpu): Add octeon.
5169         (type): Add pop attribute value.
5170         (popcount<mode>2): New pattern.
5171         * doc/invoke.texi (-march=@var{arch}): Add octeon.
5172
5173 2008-08-24  Jan Hubicka  <jh@suse.cz>
5174
5175         * doc/invoke.texi (-fipa-cp-clone): New option.
5176         (-fipa-cp): Update docs.
5177         (--param ipcp-unit-growth):New.
5178         * ipa-cp.c: Include fibheap.h, params.h
5179         (ipcp_initialize_node_lattices): When not cloning, all externally
5180         visible functions are bottom.
5181         (ipcp_need_redirect_p): Accept clones.
5182         (ipcp_insert_stage): Use cost driven heuristics.
5183         (max_count, dead_nodes): New static vars.
5184         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
5185         ipcp_const_param_count): New functions.
5186         * common.opt (ipa-cp-clone): New command line option.
5187         * params.def (ipcp-unit-growth): New.
5188
5189 2008-08-24  Jan Hubicka  <jh@suse.cz>
5190
5191         * tree-inline.c (tree_function_versioning): Look harder
5192         for referenced vars.
5193
5194 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
5195
5196         PR tree-optimization/37185
5197         * matrix-reorg.c (transform_access_sites): Update changed stmt.
5198
5199 2008-08-23  Jan Hubicka  <jh@suse.cz>
5200
5201         * ipa-cp.c (ipcp_analyze_node): New function.
5202         (ipcp_update_cloned_node): Use it.
5203         (ipcp_init_stage): Likewise.
5204         * ipa-inline.c (function_insertion_hook_holder): New static var.
5205         (analyze_function): Break out from ....
5206         (inline_generate_summary): Here; register insertion hook.
5207         (cgraph_decide_inlining): Remove hook.
5208         (add_new_function): New function.
5209
5210 2008-08-23  Jan Hubicka  <jh@suse.cz>
5211
5212         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
5213
5214 2008-08-23  Jan Hubicka  <jh@suse.cz>
5215
5216         * ipa-cp.c (constant_val_insert): Remove.
5217         (ipcp_propagate_one_const): Remove.
5218         (ipcp_create_replace_map): Always insert replacements to the map.
5219         (ipcp_insert_stage): Do not try to insert statements by hand.
5220         * tree-inline.c (insert_init_stmt): Break out from ...
5221         (setup_one_parameter): ... here; allow NULL BB pointer.
5222         (tree_function_versioning): Use setup_one_parameter to process
5223         replacement map.
5224
5225 2008-08-23  Jan Hubicka  <jh@suse.cz>
5226
5227         * tree.c (decl_address_ip_invariant_p): New function.
5228         * tree.h (decl_address_ip_invariant_p): Declare.
5229         * gimple.c (strip_invariant_refs): Break out from ...
5230         (is_gimple_invariant_address): ... here
5231         (is_gimple_ip_invariant_address): New function.
5232         (is_gimple_ip_invariant): New function.
5233         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
5234         Declare.
5235
5236         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
5237         (ipcp_lat_is_insertable): All constants are insertable.
5238         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
5239         IPA_CONST_VALUE_REF.
5240         (ipcp_initialize_node_lattices): Propagate all types of operands.
5241         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
5242         (ipcp_create_replace_map): Reformat.
5243         (ipcp_need_redirect_p): Simplify.
5244         (ipcp_insert_stage): Check that argument is used before clonning.
5245         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
5246         IPA_CONST_REF.
5247         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
5248         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
5249         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
5250         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
5251         (jump_func_type): Remove IPA_CONST_VALUE_REF.
5252         * tree-inline.c (tree_function_versioning): Add variables referenced
5253         by replacing trees.
5254
5255 2008-08-23  Jan Hubicka  <jh@suse.cz>
5256
5257         PR target/37094
5258         * i386.c (standard_80387_constant_p): Use optimize_size.
5259
5260 2008-08-23  Ira Rosen  <irar@il.ibm.com>
5261
5262         PR tree-optimization/37161
5263         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
5264         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
5265         (vect_determine_vectorization_factor): Move the scalar type
5266         retrieval to vect_get_smallest_scalar_type.
5267         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
5268         scalar type. Remove redundant computation.
5269         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
5270         (vect_get_slp_defs): Take the type of RHS into account if
5271         necessary by calling vect_get_smallest_scalar_type. Call
5272         vect_get_constant_vectors with additional argument.
5273
5274 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5275
5276         PR 35648
5277         * doc/invoke.texi (Wwrite-strings): Clarify description.
5278
5279 2008-08-23  Ira Rosen  <irar@il.ibm.com>
5280
5281         PR tree-optimization/37174
5282         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
5283         def stmt is a part of the loop before accessing its stmt_vec_info.
5284
5285 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
5286
5287         PR target/11259
5288         * config/avr/avr.md (UNSPEC_SWAP): New constants.
5289         (*swap): New insn pattern.
5290         (*ashlqi3): Rename from ashlqi3 insn pattern.
5291         (ashlqi3): New expanders.
5292         (*lshrqi3): Rename from lshrqi3 insn pattern.
5293         (lshrqi3): New expanders.
5294         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
5295         lshrqi3_const5, lshrqi3_const6): New splitters.
5296         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
5297         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
5298         peephole2 patterns.
5299
5300 2008-08-22  Richard Guenther  <rguenther@suse.de>
5301
5302         PR tree-optimization/37078
5303         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
5304         [+INF, +INF] ranges.
5305
5306 2008-08-22  Richard Guenther  <rguenther@suse.de>
5307
5308         PR tree-optimization/37143
5309         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
5310         a conversion statement instead of a copy.
5311
5312 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
5313
5314         PR target/37184
5315         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
5316         CCCmode, CCOmode and CCSmode destination modes.
5317
5318         PR target/37191
5319         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
5320         from different units in a single alternative.
5321         (*vec_extractv2sf_1): Ditto.
5322         (*vec_extractv2si_0): Ditto.
5323         (*vec_extractv2si_1): Ditto.
5324         * config/i386/sse.md (sse2_storehpd): Ditto.
5325         (sse2_storelpd): Ditto.
5326         (sse2_loadhpd): Ditto.
5327         (sse2_loadlpd): Ditto.
5328
5329         PR target/37197
5330         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
5331         (popcountsi2): Ditto.
5332         (clzdi2_abm): Ditto.
5333         (popcountdi2): Ditto.
5334         (clzhi2_abm): Ditto.
5335         (popcounthi2): Ditto.
5336
5337 2008-08-22  Richard Guenther  <rguenther@suse.de>
5338
5339         PR middle-end/36548
5340         PR middle-end/37125
5341         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
5342         if the multiplication does not overflow.
5343
5344 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
5345
5346         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
5347
5348 2008-08-21  Richard Henderson  <rth@redhat.com>
5349
5350         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
5351         spurrious comma from test.
5352         * configure: Rebuild.
5353
5354 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5355
5356         PR 30457
5357         * builtins.c (fold_builtin_next_arg): Add warning about undefined
5358         behaviour.
5359
5360 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
5361
5362         * c-tree.h (grokfield): New argument.
5363         * c-decl.c (grokfield): Handle new location argument.
5364         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
5365
5366 2008-08-21  Richard Guenther  <rguenther@suse.de>
5367
5368         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
5369
5370 2008-08-21  Jan Hubicka  <jh@suse.cz>
5371
5372         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
5373         (cgraph_add_function_insertion_hook,
5374         cgraph_remove_function_insertion_hook,
5375         cgraph_call_function_insertion_hooks): New functions.
5376         * cgraph.h (cgraph_add_function_insertion_hook,
5377         cgraph_remove_function_insertion_hook,
5378         cgraph_call_function_insertion_hooks): Declare.
5379         * ipa-reference.c (function_insertion_hook_holder): New variable.
5380         (check_operand, look_for_address_of): When checking late, do not care
5381         about module bitmaps.
5382         (add_new_function): New function.
5383         (generate_summary): Register hooks; zero module bitmaps.
5384         (propagate): Unregister hooks.
5385         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
5386         (add_new_function): New function.
5387         (generate_summary): Register hook.
5388         (propagate): Remove hook.
5389
5390         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
5391
5392         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
5393         * ipa-cp.c (ipcp_update_cloned_node): New function.
5394         (build_const_val): Handle functions correctly; bring type logic
5395         into sync with tree-inline.c
5396         (ipcp_init_stage):  Take care of computing stuff needed by
5397         indirect inlining; update clones.
5398         (ipcp_generate_summary): Break out of ipcp_driver.
5399         (ipcp_driver): Do only execution and transformation.
5400         (pass_ipa_cp): Make IPA_PASS.
5401         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
5402         offset to address.
5403         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
5404         ipcp, some info is already available.
5405         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
5406         * tree-inline.c (remap_ssa_name): Unshare expression.
5407
5408 2008-08-21  Richard Guenther  <rguenther@suse.de>
5409
5410         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
5411         a PHI ask VN if it is already available.
5412         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
5413         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
5414
5415 2008-08-21  Richard Guenther  <rguenther@suse.de>
5416
5417         PR middle-end/36817
5418         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
5419         makes sure to produce a result of the correct type.
5420
5421 2008-08-21  Jan Hubicka  <jh@suse.cz>
5422         Backport from LTO branch:
5423
5424         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
5425                     Jan Hubicka  <jh@suse.cz>
5426
5427         * ipa-pure-const.c
5428         (init_state, finish_state, set_function_state, generate_summary):
5429         New functions.
5430         (scan_stmt): Renamed from scan_function.  Changed to keep state in
5431         local static vars rather than cgraph aux field.
5432         (propagate): Renamed from static_execute. Changed to keep state in
5433         local static vars rather than cgraph aux field.
5434         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
5435         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
5436
5437         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
5438
5439         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
5440         * ipa-reference.c (init_function_info, generate_summary,
5441         propagate): New functions.
5442         (analyze_function):  Call init_function_info.
5443         (static_execute): Stripped into generate_summary and propagate.
5444         (pass_ipa_reference): Made into ipa_opt_pass.
5445
5446 2008-08-21  Richard Guenther  <rguenther@suse.de>
5447
5448         PR tree-optimization/37181
5449         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
5450         folding result.
5451         (extract_range_from_unary_expr): Likewise.
5452
5453 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5454
5455         * diagnostic.c (pedwarn_at): Rename as pedwarn.
5456         (pedwarn): Delete.
5457         * toplev.h (pedwarn_at): Likewise.
5458         * builtins.c: Update all calls to pedwarn.
5459         * c-lex.c: Likewise.
5460         * toplev.c: Likewise.
5461         * c-tree.h: Likewise.
5462         * c-decl.c: Likewise.
5463         * c-errors.c: Likewise.
5464         * c-typeck.c: Likewise.
5465         * c-common.c: Likewise.
5466         * c-parser.c: Likewise.
5467
5468 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
5469
5470         PR target/31070
5471         * config/sparc/sparc.c (function_arg_slotno): Handle structure
5472         with MODE_VECTOR_INT mode.
5473
5474 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5475
5476         PR middle-end/179
5477         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
5478         initialized outside the current module.
5479         (warn_uninitialized_var): Ignore left-hand side when walking the
5480         trees. Ignore address expressions. Examine VUSE operands in gimple
5481         statements with a variable declaration on the right-hand side.
5482
5483 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
5484
5485         PR bootstrap/37155
5486         * rtlanal.c (subreg_offset_representable_p): Revert last change.
5487
5488 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5489
5490         PR 35701
5491         * c-common.c (conversion_warning): Do not warn if applying bit-and
5492         operator to unsigned constant that fits in the target type.
5493
5494 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5495
5496         PR c++/35602
5497         * c-common.c (conversion_warning): Do not warn for artificial
5498         expressions.
5499
5500 2008-08-20  Richard Guenther  <rguenther@suse.de>
5501
5502         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
5503         (extract_range_from_binary_expr): Fall back to constant propagation.
5504         (extract_range_from_unary_expr): Likewise.
5505
5506 2008-08-20  Richard Guenther  <rguenther@suse.de>
5507
5508         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
5509         with TREE_THIS_VOLATILE on shared nodes.
5510         (fold_stmt_r): Likewise.
5511
5512 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
5513
5514         PR c/37171
5515         * c-parser.c (c_parser_attributes): For keywords use canonical
5516         spelling for attr_name.
5517
5518 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5519
5520         * value-prof.c (check_counter): Revert wrong call to error.
5521
5522 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5523
5524         * profile.c: Update calls to inform.
5525         * value-prof.c: Update calls to inform.
5526
5527 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5528
5529         * diagnostic.c (inform): Add an explicit location_t parameter.
5530         * toplev.h (inform): Update declaration.
5531         * builtins.c: Update all calls to inform.
5532         * c-common.c: Likewise.
5533         * c-decl.c: Likewise.
5534         * c-opts.c: Likewise.
5535         * c-pch.c: Likewise.
5536         * c-pragma.c: Likewise.
5537         * c-typeck.c: Likewise.
5538         * coverage.c: Likewise.
5539         * opts.c: Likewise.
5540         * toplev.c: Likewise.
5541         * tree-cfg.c: Likewise.
5542         * tree-ssa.c: Likewise.
5543
5544 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
5545
5546         PR target/37169
5547         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
5548         V2DI mode, for SSE4.1, use movq instead of vector set if the
5549         second element is zero and inter-unit moves are OK.
5550
5551 2008-08-20  Richard Guenther  <rguenther@suse.de>
5552
5553         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
5554         properly handle conversion/copy chains after tuplification.
5555
5556 2008-08-20  Richard Guenther  <rguenther@suse.de>
5557
5558         * passes.c (init_optimization_passes): Move the second
5559         forwprop pass before alias computation.  Remove the second
5560         DCE pass.  Remove the first dominator and phi copy/const
5561         prop passes.
5562
5563 2008-08-20  Nick Clifton  <nickc@redhat.com>
5564
5565         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
5566         support of this feature.  Do not assume that a sufficiently new
5567         assembler will support the feature regardless of the target type.
5568         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
5569         * configure: Regenerate.
5570
5571 2008-08-20  Richard Guenther  <rguenther@suse.de>
5572
5573         * tree-vrp.c (found_in_subgraph): Remove.
5574         (live): New global static.
5575         (live_on_edge): New function.
5576         (blocks_visited): Remove.
5577         (register_edge_assert_for_2): Use live_on_edge.
5578         (find_conditional_asserts): Remove code dealing with
5579         found_in_subgraph.  Do not walk the CFG.
5580         (find_switch_asserts): Likewise.
5581         (find_assert_locations_1): Renamed from find_assert_locations.
5582         Move finding assert locations for conditional and switch
5583         statements first.  Update live bitmap.  Do not walk the CFG.
5584         (find_assert_locations): New function.
5585         (insert_range_assertions): Remove entry of CFG walk.
5586         Adjust call to find_assert_locations.
5587         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
5588         that only can appear because of fake exit edges but assert we
5589         never try to insert on those.
5590         (fini_pre): Do not remove fake exit edges here...
5591         (execute_pre): ...but here, before committing edge inserts.
5592
5593 2008-08-19  Richard Guenther  <rguenther@suse.de>
5594
5595         * passes.c (init_optimization_passes): Exchange store-ccp
5596         with a ccp pass.
5597
5598 2008-08-19  Rafael Espíndola  <espindola@google.com>
5599
5600         * varasm.c (weak_decls): Move earlier in the file.
5601         (assemble_external): Add weak decls to the weak_decls list.
5602         (declare_weak): Don't add decls to the weak_decls list.
5603
5604 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
5605
5606         PR target/37157
5607         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
5608         before (sse2_shufpd_<mode>).
5609
5610 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
5611
5612         PR debug/37156
5613         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
5614         * tree.c (block_nonartificial_location): Likewise.
5615
5616 2008-08-19  Richard Guenther  <rguenther@suse.de>
5617
5618         PR tree-optimization/35972
5619         PR tree-optimization/23094
5620         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
5621         parameter.
5622         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
5623         handle MISALIGNED_INDIRECT_REF.
5624         (get_ref_from_reference_ops): New helper.
5625         (vn_reference_lookup_pieces): Walk the use-def chain using the
5626         alias-oracle if requested.
5627         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
5628         walking the use-def chain.
5629         (compute_avail): But not here.
5630         (create_component_ref_by_pieces_1): Properly handle
5631         MISALIGNED_INDIRECT_REF.
5632         (do_regular_insertion): Handle fully redundant
5633         expressions after PHI-translation also for SSA_NAME values, not
5634         only constants.  Correctly use edoubleprime for that.
5635
5636 2008-08-19  Ira Rosen  <irar@il.ibm.com>
5637
5638         * tree-vectorizer.c (supportable_widening_operation): Support
5639         multi-step conversion, return the number of steps in such conversion
5640         and the required intermediate types.
5641         (supportable_narrowing_operation): Likewise.
5642         * tree-vectorizer.h (vect_pow2): New function.
5643         (supportable_widening_operation): Change argument types.
5644         (supportable_narrowing_operation): Likewise.
5645         (vectorizable_type_promotion): Add an argument.
5646         (vectorizable_type_demotion): Likewise.
5647         * tree-vect-analyze.c (vect_analyze_operations): Call
5648         vectorizable_type_promotion and vectorizable_type_demotion with
5649         additional argument.
5650         (vect_get_and_check_slp_defs): Detect patterns.
5651         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
5652         types.
5653         (vect_analyze_slp_instance): Don't fail in case of multiple types.
5654         Call vect_build_slp_tree with correct arguments. Calculate unrolling
5655         factor according to the smallest type in the loop.
5656         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
5657         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
5658         supportable_widening_operation with correct arguments.
5659         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
5660         operands lists according to the number of vector statements in left
5661         or right node, if exists.
5662         (vect_gen_widened_results_half): Remove unused argument.
5663         (vectorizable_conversion): Call supportable_widening_operation,
5664         supportable_narrowing_operation, and vect_gen_widened_results_half
5665         with correct arguments.
5666         (vectorizable_assignment): Change documentation, support multiple
5667         types in SLP.
5668         (vectorizable_operation): Likewise.
5669         (vect_get_loop_based_defs): New function.
5670         (vect_create_vectorized_demotion_stmts): Likewise.
5671         (vectorizable_type_demotion): Support loop-aware SLP and general
5672         multi-step conversion. Call vect_get_loop_based_defs and
5673         vect_create_vectorized_demotion_stmts for transformation.
5674         (vect_create_vectorized_promotion_stmts): New function.
5675         (vectorizable_type_promotion): Support loop-aware SLP and general
5676         multi-step conversion. Call vect_create_vectorized_promotion_stmts
5677         for transformation.
5678         (vectorizable_store): Change documentation, support multiple
5679         types in SLP.
5680         (vectorizable_load): Likewise.
5681         (vect_transform_stmt): Pass SLP_NODE to
5682         vectorizable_type_promotion and vectorizable_type_demotion.
5683         (vect_schedule_slp_instance): Move here the calculation of number
5684         of vectorized statements for each node from...
5685         (vect_schedule_slp): ... here.
5686         (vect_transform_loop): Call vect_schedule_slp without the last
5687         argument.
5688
5689 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
5690
5691         PR bootstrap/37152
5692         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
5693         to == in assert statement.
5694         (vectorizable_reduction): Fix typo.
5695
5696 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5697
5698         PR bootstrap/37153
5699         * value-prof.c (check_counter): Dereference pointer to overall
5700         count when printing it.
5701
5702 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5703
5704         * profile.h: Really add it.
5705
5706 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
5707
5708         * mcf.c: Really add it.
5709
5710 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
5711             Vinodha Ramasamy  <vinodha@google.com>
5712
5713         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
5714         count_scale.
5715         * value-prof.c (check_counter): Fix the counter if
5716         flag_profile_correction is true.
5717         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
5718         tree_mod_subtract_transform):
5719         Follow check_counter parameter change.
5720         * common.opt (fprofile-correction): New option.
5721         * mcf.c: New file.
5722         * profile.h: Likewise.
5723         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
5724         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
5725         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
5726         functions.
5727         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
5728         flag_profile_correction is set.
5729
5730 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
5731
5732         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
5733
5734 2008-08-18  Tomas Bily  <tbily@suse.cz>
5735
5736         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
5737         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
5738         CONVERT_EXPR_P.
5739         * tree-data-ref.c (split_constant_offset_1): Likewise.
5740         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
5741         * tree-sra.c (sra_walk_expr): Likewise.
5742         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
5743         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
5744         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
5745         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
5746         Likewise.
5747         * gimple.c (gimple_assign_unary_nop_p): Likewise.
5748         * tree-vect-transform.c (vectorizable_type_demotion)
5749         (vectorizable_type_promotion): Likewise.
5750         * tree-inline.c (expand_call_inline):
5751         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
5752         (forward_propagate_addr_expr_1, forward_propagate_comparison)
5753         (tree_ssa_forward_propagate_single_use_vars): Likewise.
5754         * expr.c (expand_expr_real_1): Likewise.
5755         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
5756         (gimple_assign_unary_useless_conversion_p): Likewise.
5757         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
5758         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
5759         * fold-const.c (fold_unary): Likewise.
5760         * tree.h (CONVERT_EXPR_P): Likewise.
5761         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
5762         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
5763         * tree-vrp.c:
5764         (register_edge_assert_for_2, extract_range_from_unary_expr)
5765         (register_edge_assert_for_1): Likewise.
5766
5767 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5768
5769         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
5770         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
5771         (enum real_value_const): Delete.
5772         (get_real_const): Delete.
5773         * real.c (get_real_const): Delete.
5774         (dconst_e_ptr): Define.
5775         (dconst_third_ptr): Define.
5776         (dconst_sqrt2_ptr): Define.
5777         * builtins.c: Update all callers.
5778
5779 2008-08-18  Richard Guenther  <rguenther@suse.de>
5780
5781         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
5782         statement iterator after statement removal.
5783
5784 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
5785
5786         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
5787         (detect_processor_freebsd): Likewise.
5788         (host_detect_local_cpu): Call newly added functions for FreeBSD.
5789
5790 2008-08-18  Richard Guenther  <rguenther@suse.de>
5791
5792         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
5793         and loads have the correct types.
5794
5795 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5796
5797         PR cpp/7263
5798         * c-opts.c (cpp_opts): Remove static.
5799         * c-parser.c (cpp_opts): Declare it extern.
5800         (disable_extension_diagnostics): Handle cpp options.
5801         (enable_extension_diagnostics): Likewise.
5802
5803 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5804
5805         * diagnostics.c (permerror_at): Rename as permerror.
5806         (permerror): Delete.
5807         * toplev.h: Likewise.
5808
5809 2008-08-18  Richard Guenther  <rguenther@suse.de>
5810
5811         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
5812         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
5813         Move call_cdce before build_alias.  Move copyrename2,
5814         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
5815         right after final inlining.
5816         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
5817         (pass_build_cfg): But instead via TODO_dump_func.
5818
5819 2008-08-18  Richard Guenther  <rguenther@suse.de>
5820
5821         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
5822         element index.
5823         (scalarize_init): If we failed to generate some initializers
5824         do not generate zeros for not instantiated members.  Instead
5825         rely on the copy out.
5826         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
5827         about missing flow-sensitive alias info only if we have
5828         aliases computed.
5829
5830 2008-08-17  Nick Clifton  <nickc@redhat.com>
5831
5832         * doc/extend.texi (Function Attributes): Fix typo in description
5833         if hot function attribute.
5834
5835 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
5836             Richard Sandiford  <rdsandiford@googlemail.com>
5837
5838         * doc/install.texi (--with-mips-plt): Document.
5839         * doc/invoke.texi (-mplt, -mno-plt): Document.
5840         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
5841         and handle ${with_mips_plt}.
5842         * config/mips/mips.opt (mplt): New option.
5843         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
5844         (TARGET_ABICALLS_PIC2): Likewise.
5845         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
5846         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
5847         (ASM_SPEC): Use !mabi=* instead of !mabi*.
5848         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
5849         to decide whether to output ".option picX" directives.
5850         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
5851         Pass -call_nonpic rather than -KPIC for -mplt.
5852         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
5853         on the command line.  Also remove it when -mabi=64 is used without
5854         -msym32.
5855         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
5856         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
5857         TARGET_ABICALLS_PIC0.
5858         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
5859         TARGET_ABICALLS.
5860         (mips16_build_function_stub): Only output ".option pic" directives
5861         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
5862         (mips16_build_call_stub): Fix comment and remove redundant
5863         ".set at"/"set .noat" directives.
5864         (mips_function_rodata_section): Use the default behaviour for
5865         TARGET_ABSOLUTE_ABICALLS.
5866         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
5867         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
5868         (mips_restore_gp): Do nothing if the current function doesn't use
5869         a global pointer.
5870         (mips_expand_prologue): Only save $gp if the current function uses it.
5871         Use a normal move for TARGET_ABICALLS_PIC0.
5872         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
5873
5874 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
5875
5876         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
5877         of function when handling GLOBAL_POINTER_REGNUM.
5878
5879 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
5880
5881         PR ada/20548
5882         * common.opt (-fstack-check): Do not declare the variable here.
5883         (-fstack-check=): New option variant.
5884         * doc/invoke.texi (Code Gen Options): Document it.
5885         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
5886         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
5887         (STACK_CHECK_STATIC_BUILTIN): New macro.
5888         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
5889         * opts.c: Include expr.h.
5890         (common_handle_option) <OPT_fold_stack_check_>: New case.
5891         <OPT_fstack_check>: Likewise.
5892         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
5893         consistently in the test for variable-sized types.  Adjust for
5894         new behaviour of flag_stack_check.
5895         * explow.c: Include except.h.
5896         (allocate_dynamic_stack_space): Do not take into account
5897         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
5898         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
5899         for variable-sized parameters.  Treat all parameters whose size is
5900         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
5901         stack checking is enabled.
5902         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
5903         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
5904         if generic stack checking is enabled.
5905         (expand_function_end): Adjust for new behaviour of flag_stack_check.
5906         * reload1.c (reload): Likewise.
5907         * stmt.c (expand_decl): Assert that all automatic variables have
5908         fixed size at this point and remove dead code.
5909         * flags.h (stack_check_type): New enumeration type.
5910         (flag_stack_check): Declare.
5911         * toplev.c (flag_stack_check): New global variable.
5912         * Makefile.in (opts.o): Add dependency on EXPR_H.
5913         (explow.o): Add dependency on except.h.
5914
5915 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
5916
5917         * config/avr/avr.c (avr_override_options): Reduce value of
5918         PARAM_INLINE_CALL_COST.
5919
5920 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
5921
5922         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
5923         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
5924         lieu of TYPE_MODE (type) throughout.
5925
5926 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
5927
5928         * config/arm/arm.c (add_minipool_backward_ref): Check for
5929         8-byte-aligned entries in second case of forcing insertion after a
5930         particular entry.  Change third case to avoid inserting
5931         non-8-byte-aligned entries before 8-byte-aligned ones.
5932
5933 2008-08-15  Richard Guenther  <rguenther@suse.de>
5934
5935         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
5936         strip components for unknown size accesses.
5937
5938 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
5939
5940         * config/s390/2097.md New file.
5941         * config/s390/s390.md ("z10prop" attribute): Define none,
5942         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
5943         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
5944         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
5945         possible values and apply them to insns as appropriate.
5946         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
5947         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
5948         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
5949         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
5950         ("bfp" mode attribute): Removed.  Every occurence replaced
5951         with <mode>.
5952         * config/s390/s390.c (struct "z10_cost"): Updated entries.
5953         * config/s390/2084.md (insn_reservation "x_itof"): Updated
5954         type attribute.
5955
5956 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5957
5958         PR c/28152
5959         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
5960         for keywords.
5961
5962 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
5963
5964         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
5965         additional argument. Support reduction when duplication is needed due
5966         to data-types of different sizes in the loop.
5967         (get_initial_def_for_induction): Fix printout.
5968         (vect_get_vec_def_for_stmt_copy): Support case where the
5969         vec_stmt_for_operand is a phi node.
5970         (vectorizable_reduction): Support reduction when duplication is needed
5971         due to data-types of different sizes in the loop.
5972         (vectorizable_call): Remove restriction to not vectorize in case we
5973         have data-types of different sizes in the loop.
5974         (vectorizable_conversion): Likewise.
5975         (vectorizable_operation): Likewise.
5976         (vectorizable_type_demotion): Likewise.
5977         (vectorizable_type_promotion): Likewise.
5978         (vectorizable_induction): Add restriction to not vectorize in case
5979         we have data-types of different sizes in the loop.
5980
5981 2008-08-14  Christophe Saout  <christophe@saout.de>
5982             Uros Bizjak  <ubizjak@gmail.com>
5983
5984         PR target/37101
5985         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
5986         (*vec_concatv2di_rex64_sse4_1): Ditto.
5987         (*vec_concatv2di_rex64_sse): Ditto.
5988
5989 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
5990
5991         PR middle-end/37103
5992         * fold-const.c (fold_widened_comparison): Do not allow
5993         sign changes that change the result even if shorter type
5994         is wider than arg1_unw's type.
5995
5996 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
5997
5998         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
5999         Skip if the multilib testing specifies -march that does not
6000         agree with the one specified in the testcase.
6001
6002 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
6003
6004         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
6005         zero extend SImode values being converted to TFmode before passing
6006         to libcalls.
6007
6008 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6009
6010         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
6011         __PPU__ when targeting the Cell/B.E. PPU processor.
6012
6013 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
6014
6015         * gimple.h (gimple_call_set_chain): Accept SSA variables.
6016         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
6017         Rematerialize the static chain, if any.
6018         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
6019         static chain.
6020
6021 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
6022
6023         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
6024         (new_loc_descr): Likewise.
6025         (add_loc_descr): Likewise.
6026         (size_of_loc_descr): Likewise.
6027         (size_of_locs): Likewise.
6028         (output_loc_operands): Likewise.
6029         (output_loc_sequence): Likewise.
6030         (new_reg_loc_descr): New.
6031         (build_cfa_loc): Use it.
6032         (build_cfa_aligned_loc): Likewise.
6033         (one_reg_loc_descriptor): Likewise.
6034         (based_loc_descr): Likewise.
6035
6036 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6037
6038         PR 30551
6039         * doc/invoke.texi (Wmain): Update.
6040         * c-decl.c (start_decl): warn_main is only 0 or 1.
6041         (start_function): Likewise. Fix formatting.
6042         (finish_function): Delete redundant warning.
6043         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
6044         * c-opts (c_common_handle_option): -Wall only has effect if
6045         warn_main is uninitialized. OPT_Wmain is automatically
6046         handled. -pedantic also enables Wmain.
6047         (c_common_post_options): Handle all logic for Wmain here.
6048         * c-common.c (warn_main): Delete.
6049         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
6050         * c-common.h (warn_main): Delete.
6051
6052 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
6053
6054         PR middle-end/36701
6055         * expr.c (emit_group_store): Allocate stack temp with the
6056         largest alignment when copying from register to stack.
6057
6058 2008-08-13  Richard Guenther  <rguenther@suse.de>
6059
6060         * tree.h (maybe_fold_offset_to_address): Declare.
6061         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
6062         (ccp_fold): Handle pointer conversions the same as fold_stmt.
6063         Likewise for POINTER_PLUS_EXPR.
6064         (maybe_fold_offset_to_reference): Enable disabled code.
6065         (maybe_fold_offset_to_address): New function.
6066         (fold_stmt_r): Use it.
6067         (fold_gimple_assign): Likewise.
6068         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
6069         (gimplify_expr): Likewise.
6070
6071 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6072
6073         * toplev.h (pedwarn_at): Fix declaration.
6074
6075 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
6076
6077         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
6078         LINK_SPEC): Use %R in -Y P argument.
6079
6080 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6081
6082         PR c/15236
6083         * diagnostic.c (pedwarn_at): New.
6084         * toplev.h (pedwarn_at): Declare.
6085         * c-tree.h (build_enumerator): Update declaration.
6086         * c-decl.c (finish_enum): Update comment.
6087         (build_enumerator): Take a location parameter. Give a pedwarn but do
6088         not perform any conversion.
6089         * c-parser.c (c_parser_enum_specifier): Set correct location for
6090         enumerator.
6091
6092 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6093
6094         PR 35635
6095         * c-common.c (conversion_warning): Use a switch. Ignore boolean
6096         expressions except for conversions to signed:1 bitfields. Handle
6097         COND_EXPR with constant operands.
6098
6099 2008-08-13  Richard Guenther  <rguenther@suse.de>
6100
6101         PR tree-optimization/15255
6102         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
6103         (struct oecount_s): New struct and VEC types.
6104         (cvec): New global.
6105         (oecount_hash): New function.
6106         (oecount_eq): Likewise.
6107         (oecount_cmp): Likewise.
6108         (zero_one_operation): New function.
6109         (build_and_add_sum): Likewise.
6110         (undistribute_ops_list): Perform un-distribution of multiplication
6111         and division on the chain of summands.
6112         (should_break_up_subtract): Also break up subtracts for factors.
6113         (reassociate_bb): Delete dead visited statements.
6114         Call undistribute_ops_list.  Re-sort and optimize if it did something.
6115         * passes.c (init_optimization_passes): Move DSE before
6116         reassociation.
6117         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
6118         PHI nodes.
6119
6120 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
6121
6122         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
6123
6124         * doc/invoke.texi: Revert unintended checkin.
6125
6126 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
6127
6128         PR libgomp/26165
6129         * gcc.c (include_spec_function): Tweak call to find_a_file.
6130
6131 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
6132
6133         PR middle-end/37014
6134         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
6135         and TRUTH_ORIF_EXPR.
6136         * dojump.c (do_jump): Likewise.
6137
6138         PR tree-optimization/37084
6139         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
6140         if id->regimplify, don't assume stmt is a cast assignment.
6141
6142 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
6143
6144         * final.c (final_scan_insn): Use app_enable/app_disable functions.
6145
6146 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6147
6148         PR bootstrap/37097
6149         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
6150         by last change.
6151
6152 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6153
6154         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
6155         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
6156
6157         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
6158         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
6159         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
6160         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
6161         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
6162
6163         * doc/tm.texi (Storage Layout): Remove documentation for
6164         TARGET_FLOAT_FORMAT.
6165
6166         * simplify-rtx.c (simplify_binary_operation_1): Replace
6167         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
6168
6169 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6170
6171         * real.h (struct real_format): New member has_sign_dependent_rounding.
6172         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
6173         spu_single_format, ieee_double_format, mips_double_format,
6174         motorola_double_format, ieee_extended_motorola_format,
6175         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
6176         ieee_extended_intel_96_round_53_format, ibm_extended_format,
6177         mips_extended_format, ieee_quad_format, mips_quad_format,
6178         vax_f_format, vax_d_format, vax_g_format): Initialize it.
6179         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
6180
6181         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
6182         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
6183         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
6184         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
6185         (ROUND_TOWARDS_ZERO): Likewise.
6186
6187         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
6188         (FLOAT_MODE_FORMAT): New macro.
6189         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
6190         (MODE_COMPOSITE_P): ... this new macro.
6191         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
6192         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
6193         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
6194
6195         * flags.h: Include "real.h".
6196
6197         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
6198         REAL_MODE_FORMAT_COMPOSITE_P.
6199         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
6200
6201         * doc/tm.texi (Storage Layout): Remove documentation of
6202         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
6203         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
6204         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
6205         they only apply to libgcc2.a.
6206
6207 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6208
6209         * config/spu/float_disf.c: New file.
6210         * config/spu/float_unsdisf.c: New file.
6211         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
6212         (LIB2FUNCS_EXCLUDE): Define.
6213
6214 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6215             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6216
6217         * real.h (struct real_format): New member round_towards_zero.
6218         * real.c (round_for_format): Respect fmt->round_towards_zero.
6219         (ieee_single_format, mips_single_format, motorola_single_format,
6220         spu_single_format, ieee_double_format, mips_double_format,
6221         motorola_double_format, ieee_extended_motorola_format,
6222         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
6223         ieee_extended_intel_96_round_53_format, ibm_extended_format,
6224         mips_extended_format, ieee_quad_format, mips_quad_format,
6225         vax_f_format, vax_d_format, vax_g_format): Initialize it.
6226         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
6227
6228         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
6229         real_format to choose rounding mode when calling MPFR functions.
6230         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
6231         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
6232
6233         * real.h (real_to_decimal_for_mode): Add prototype.
6234         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
6235         Respect target rounding mode when generating decimal representation.
6236         (real_to_decimal): New stub for backwards compatibility.
6237         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
6238         real_to_decimal_for_mode instead of real_to_decimal.
6239
6240         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
6241
6242 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6243             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6244
6245         * real.c (spu_single_format): New variable.
6246         * real.h (spu_single_format): Declare.
6247
6248         * config/spu/spu.c (spu_override_options): Install SFmode format.
6249         (spu_split_immediate): Use integer mode to operate on pieces of
6250         floating-point values in all cases.
6251
6252         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
6253         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
6254         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
6255
6256 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6257
6258         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
6259
6260 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6261
6262         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
6263
6264 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
6265
6266         PR c++/36688
6267         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
6268         on the VAR_DECL instead of TYPE_READONLY on its type.
6269
6270 2008-08-12  Ira Rosen  <irar@il.ibm.com>
6271
6272         * tree-vectorizer.c: Depend on langhooks.h.
6273         (supportable_widening_operation): Add two arguments. Support double
6274         type conversions.
6275         (supportable_narrowing_operation): Likewise.
6276         * tree-vectorizer.h (supportable_widening_operation): Add two
6277         arguments.
6278         (supportable_narrowing_operation): Likewise.
6279         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
6280         supportable_widening_operation with correct arguments.
6281         * tree-vect-transform.c (vectorizable_conversion): Likewise.
6282         (vectorizable_type_demotion): Support double type conversions.
6283         (vectorizable_type_promotion): Likewise.
6284         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
6285
6286 2008-08-11  Michael Matz  <matz@suse.de>
6287
6288         * i386/i386.c (override_options): Move initialisation from
6289         flag_schedule_insns_after_reload to here from ...
6290         (optimization_options): ... here.
6291
6292 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
6293
6294         PR rtl-optimization/36998
6295         * dwarf2out.c (compute_barrier_args_size_1,
6296         compute_barrier_args_size): Temporarily remove assertions.
6297
6298 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6299
6300         PR middle-end/20644
6301         * tree-ssa.c (struct walk_data): Add new flag
6302         warn_possibly_uninitialized.
6303         (warn_uninitialized_var): Use it.
6304         (warn_uninitialized_vars): New.
6305         (execute_early_warn_uninitialized): Call it.
6306         (execute_late_warn_uninitialized): Likewise.
6307
6308 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6309
6310         PR middle-end/36238
6311         * reload1.c (gen_reload): Guard calls to get_secondary_mem
6312         for memory subregs.
6313
6314 2008-08-09  Jan Hubicka  <jh@suse.cz>
6315
6316         PR target/37055
6317         * optabs.c (maybe_emit_unop_insn): Remove produced code if
6318         expansion failed.
6319         (expand_fix): Be prepared for expansion to fail.
6320         (expand_sfix_optab): Remove instructions if expansion failed.
6321
6322 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
6323
6324         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
6325         avr31 architecture.
6326         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
6327         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
6328
6329 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6330
6331         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
6332         mips/t-libgcc-mips16 to tmake_file.
6333         * config/mips/mips-protos.h (mips_call_type): New enum.
6334         (mips_pic_base_register, mips_got_load): Declare.
6335         (mips_restore_gp): Take an rtx argument.
6336         (mips_use_pic_fn_addr_reg_p): Declare.
6337         (mips_expand_call): Replace the sibcall_p argument with
6338         a mips_call_type argument.  Add a lazy_p parameter.
6339         (mips_split_call): Declare.
6340         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
6341         (MIPS16_PIC_TEMP): Likewise.
6342         (reg_class): Delete M16_NA_REGS.
6343         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
6344         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
6345         (mips_split_hi_p): Declare.
6346         * config/mips/mips.c (mips_split_hi_p): New array.
6347         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
6348         (mips_got_symbol_type_p): New function.
6349         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
6350         (mips16_stub_function_p): New function.
6351         (mips16_local_function_p): Likewise.
6352         (mips_use_pic_fn_addr_reg_p): Likewise.
6353         (mips_cannot_force_const_mem): Return false for HIGHs.
6354         Extend CONST_INT and symbolic handling to MIPS16, using
6355         mips_symbol_insns to check that the base symbol type is a
6356         legitimate constant.  Reject GOT-based constants if
6357         TARGET_MIPS16_PCREL_LOADS.
6358         (mips_const_insns): Check targetm.cannot_force_const_mem when
6359         decomposing a symbolic base and a large offset.
6360         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
6361         When calling a function that needs $25 from MIPS16 code,
6362         move the target address into $25 separately and add a USE
6363         to the call insn.
6364         (mips16_gp_pseudo_reg): Insert the initializer immediately
6365         before the first real insn.
6366         (mips_pic_base_register, mips_got_load): New functions.
6367         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
6368         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
6369         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
6370         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
6371         (mips_call_tls_get_addr): Update the call to mips_expand_call,
6372         also passing NULL_RTX rather than const0_rtx as the aux argument.
6373         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
6374         instead of TARGET_EXPLICIT_RELOCS.
6375         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
6376         (mips_load_call_address): Replace the sibcall_p argument with
6377         a mips_call_type argument.  Use mips_got_load.
6378         (mips16_local_alias): New structure.
6379         (mips16_local_aliases): New variable.
6380         (mips16_local_aliases_hash): New function.
6381         (mips16_local_aliases_eq): Likewise.
6382         (mips16_local_alias): Likewise.
6383         (mips16_stub_function): Likewise.
6384         (mips16_build_function_stub): Create a local alias for the target
6385         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
6386         .cpload directive and an R_MIPS_NONE relocation for the target
6387         function, then load the alias rather than the function itself.
6388         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
6389         (mips16_copy_fpr_return_value): Use mips16_stub_function and
6390         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
6391         (mips16_build_call_stub): Replace the FN parameter with an
6392         FN_PTR parameter.  Force the address into a register if it
6393         isn't a call_insn_operand; don't rely on the caller to do this.
6394         If a call to a locally-defined and locally-binding MIPS16
6395         function must be made indirectly, redirect the call to the
6396         function's local alias.  Use mips16_stub_function_p,
6397         mips16_stub_function, mips_expand_call and use_reg.
6398         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
6399         Use explicit %hi and %lo accesses where possible.
6400         Use MIPS_CALL to generate the correct code form of a
6401         jal instruction.  Add clobbers of $18 instead of uses.
6402         Update the call to mips_emit_call_insn.
6403         (mips_expand_call): Replace the SIBCALL_P argument with a
6404         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
6405         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
6406         allowing it to modify the call address.  Update the calls to
6407         mips_load_call_address and mips_emit_call_insn.
6408         (mips_split_call): New function.
6409         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
6410         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
6411         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
6412         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
6413         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
6414         if TARGET_MIPS16.
6415         (mips_cprestore_slot): New function.
6416         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
6417         and use mips_cprestore_slot.
6418         (mips_output_function_prologue): Handle TARGET_MIPS16 for
6419         LOADGP_OLDABI.
6420         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
6421         then use a copygp_mips16 instruction to set up $28.
6422         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
6423         (mips16_lay_out_constants): Call split_all_insns_noflow.
6424         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
6425         false if TARGET_MIPS16.
6426         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
6427         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
6428         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
6429         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
6430         MIPS16 code.  Allow MIPS16 o32 PIC.
6431         (mips_override_options): Allow MIPS16 o32 PIC.
6432         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
6433         after reload if TARGET_USE_GOT.
6434         (UNSPEC_COPYGP): New constant.
6435         (length): Use a default length of 8 for MIPS16 GOT loads.
6436         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
6437         (*got_page<mode>): Check mips_split_hi_p.
6438         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
6439         (unspec_got<mode>, unspec_call<mode>): New expanders.
6440         (load_got<mode>, load_call<mode>): Remove the length attributes.
6441         Use a got attribute instead of a type attribute.
6442         (copygp_mips16): New insn.
6443         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
6444         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
6445         (sibcall, sibcall_value, call, call_value): Update the calls
6446         to mips_expand_call.
6447         (call_internal, call_value_internal): Use mips_split_call.
6448         (call_value_multiple_internal): Likewise.
6449         (call_split): Move after call_internal (the insn it is split from).
6450         (call_internal_direct, call_value_internal_direct): Turn into
6451         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
6452         (call_direct_split, call_value_direct_split): New patterns.
6453         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
6454         and use M16_REGS instead of M16_NA_REGS.
6455         * config/mips/predicates.md (const_call_insn_operand): Replace
6456         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
6457         mips_use_pic_fn_addr_reg_p check.
6458         (move_operand): Reject HIGHs if mips_split_hi_p.
6459         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
6460         (__mips16_floatunsisf): Inline __mips16_floatsisf.
6461         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
6462         * config/mips/libgcc-mips16.ver: New file.
6463         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
6464         $(srcdir)/config/mips/libgcc-mips16.ver.
6465
6466 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6467
6468         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
6469         in file.
6470         (mips_unspec_address, mips_unspec_offset_high): Likewise.
6471         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
6472         (mips16_cfun_returns_in_fpr_p): Likewise.
6473
6474 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6475
6476         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
6477         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
6478         rather than 4 to PC.
6479
6480 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6481
6482         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
6483         (FUNCTION_PROFILER): Save the static chain pointer into $2
6484         beforehand and restore it aftewards.
6485         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
6486         address directly into $25 and call the function through $25;
6487         do not clobber $3.  Pad the DImode version to cover the space
6488         left by the deleted $25 <- $3 move.
6489         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
6490         the removal of the $25 <- $3 move.
6491         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
6492         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
6493
6494 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
6495             Daniel Jacobowitz  <dan@codesourcery.com>
6496
6497         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
6498         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
6499         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
6500         * config/mips/mips.c (mips_start_function_definition): New function.
6501         (mips_end_function_definition): Likewise.
6502         (mips_output_function_prologue): Use mips_start_function_definition.
6503         (mips_output_function_epilogue): Use mips_end_function_definition.
6504         (build_mips16_function_stub): Use mips_start_function_definition
6505         and mips_end_function_definition.
6506         (build_mips16_call_stub): Likewise.
6507
6508 2008-08-09  Richard Guenther  <rguenther@suse.de>
6509
6510         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
6511         * gimple.h (gimple_call_fn): Adjust comment.
6512         (gimple_call_set_fndecl): New function.
6513         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
6514         longer having bare FUNCTION_DECL operand.
6515         (gimple_call_return_type): Likewise.
6516         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
6517
6518         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
6519         (gimple_mod_pow2): Likewise.
6520         (gimple_mod_subtract): Likewise.
6521         (gimple_ic): Likewise.
6522         (gimple_stringop_fixed_value): Likewise.
6523         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
6524         longer having bare FUNCTION_DECL operand.
6525         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
6526         * omp-low.c (optimize_omp_library_calls): Likewise.
6527         * cgraphunit.c (update_call_expr): Likewise.
6528         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
6529         (execute_convert_to_rsqrt): Likewise.
6530         * cfgexpand.c (gimple_to_tree): Simplify.
6531         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
6532         bare FUNCTION_DECL operand.
6533         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
6534         (convert_gimple_call): Use gimple_call_fndecl.
6535         * c-common.c (c_warn_unused_result): Likewise.
6536
6537 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6538
6539         PR c/17880
6540         * c-typeck.c (digest_init): Call verify_sequence_points from here.
6541         (c_finish_return): Likewise.
6542         (c_start_case): Likewise.
6543         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
6544         * c-parser.c (c_parser_condition): New. Call
6545         verify_sequence_points.
6546         (c_parser_paren_condition): Call c_parser_condition.
6547         (c_parser_for_statement): Call c_parser_condition.
6548
6549 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6550
6551         PR 36901
6552         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
6553         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
6554         Moved from diagnostic.h
6555         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
6556         DK_PERMERROR.
6557         (emit_diagnostic): New.
6558         (warning0, pedwarn0): Delete.
6559         (warning, warning_at, pedwarn, permerror): Return bool.
6560         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
6561         Moved to diagnostic.c.
6562         (struct diagnostic_context): Use correct type for
6563         classify_diagnostic.
6564         (diagnostic_report_diagnostic): Update declaration.
6565         (emit_diagnostic): Declare.
6566         * errors.c (warning): Return bool.
6567         * errors.h (warning): Update declaration.
6568         * toplev.h (warning0, pedwarn0): Delete.
6569         (warning, warning_at, pedwarn, permerror): Return bool.
6570         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
6571         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
6572         inform. Update all calls.
6573         (diagnose_mismatched_decls): Check return value of warning/pedwarn
6574         before giving informative note.
6575         (implicit_decl_warning): Likewise.
6576         * c-typeck.c (build_function_call): Likewise.
6577         * tree-sssa.c (warn_uninit): Likewise.
6578         * builtins.c (gimplify_va_arg_expr): Likewise.
6579
6580 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6581
6582         PR 7651
6583         * doc/invoke.texi (-Wextra): Move warning from here...
6584         (-Wuninitialized): ... to here.
6585
6586 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6587
6588         PR 28875
6589         * flags.h (set_Wunused): Delete
6590         * toplev.c (process_options): Handle Wunused flags here.
6591         * opts.c (maybe_warn_unused_parameter): Delete.
6592         (common_handle_option): Replace set_Wunused by warn_unused.
6593         (set_Wextra): Do not handle Wunused-parameter here.
6594         (set_Wunused): Delete.
6595         * c-opts.c (c_common_handle_option): Replace set_Wunused by
6596         warn_unused.
6597         * common.opt (Wunused): Add Var and Init.
6598         (Wunused-function): Likewise.
6599         (Wunused-label): Likewise.
6600         (Wunused-parameter): Likewise.
6601         (Wunused-value): Likewise.
6602         (Wunused-variable): Likewise.
6603
6604 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
6605
6606         * doc/invoke.texi: Add cpu_type power7.
6607         * config.in (HAVE_AS_VSX): New.
6608         * config.gcc: Add cpu_type power7.
6609         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
6610         VSX instructions.
6611         * configure: Regenerate.
6612         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
6613         power5.
6614         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
6615         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
6616         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
6617
6618 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
6619
6620         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
6621         type to vectorize.builtin_conversion.
6622         (vectorizable_conversion): Likewise.
6623         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
6624         integral type as input.
6625         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
6626         FIX_TRUNC_EXPR.
6627         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
6628         and ALTIVEC_BUILTIN_VCTSXS.
6629         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
6630         formatting.
6631
6632 2008-08-08  Richard Guenther  <rguenther@suse.de>
6633
6634         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
6635         (surely_varying_stmt_p): Calls are varying only if they are
6636         non-builtin and not indirect or have no result.
6637         (ccp_fold): Re-instantiate code before the tuples merge.
6638
6639 2008-08-08  Richard Guenther  <rguenther@suse.de>
6640
6641         PR tree-optimization/37056
6642         * gimple.h (gimple_assign_rhs_class): New helper function.
6643         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
6644         unary operations properly.
6645
6646 2008-08-07  Jan Hubicka  <jh@suse.cz>
6647
6648         * i386.h (ix86_size_cost): Declare.
6649         (ix86_cur_cost): New function macro.
6650         * i386.md (peepholes expanding size and splitters): Predicate by
6651         optimize_insn_for_speed_p.
6652         (peepholes reduce size and splitters): Predicate by
6653         optimize_insn_for_size_p.
6654         * i386.c (ix86_size_cost): Rename from ...
6655         (size_cost): This one.
6656         (override_options): Update.
6657         (decide_alg): Likewise.
6658         (ix86_expand_clear): Use RTL profile.
6659         (ix86_pad_returns): Use RTL profile.
6660
6661 2008-08-07  Jan Hubicka  <jh@suse.cz>
6662
6663         * recog.c (split_all_insns): Set RTL profile
6664         (peephole2_optimize): Likewise.
6665         * function.c (thread_prologue_and_epilogue_insns): Likewise.
6666         * combine.c (combine_instructions): Likewise.
6667
6668 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6669
6670         * c-common.c (c_common_reswords): Also warn about keyword "bool".
6671
6672 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
6673
6674         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
6675         value in a6 after the set_frame_ptr insn.
6676
6677 2008-08-07  Richard Henderson  <rth@redhat.com>
6678
6679         PR debug/37033
6680         * gcc.c (cpp_options): Pass along -g*.
6681
6682 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
6683
6684         * config/arm/arm.c (output_move_neon): Update comment describing
6685         big-endian vector layout.
6686         (arm_assemble_integer): Do not handle big-endian NEON vectors
6687         specially.
6688         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
6689         neon_vget_lane<mode>_sext_internal,
6690         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
6691         element indices for big-endian.
6692
6693 2008-08-07  Richard Henderson  <rth@redhat.com>
6694
6695         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
6696         * configure, config.in: Rebuild.
6697         * debug.h (dwarf2out_do_cfi_asm): Declare.
6698         * c-cppbuiltin.c (c_cpp_builtins): Use it.
6699         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
6700         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
6701         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
6702
6703 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
6704
6705         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
6706         movv2si_internal): Combine into mov<mode>_internal.
6707         (movv2si_internal_2): Remove.
6708
6709 2008-08-07  Jan Hubicka  <jh@suse.cz>
6710
6711         PR target/37048
6712         * i386.md (single stringop patterns): Enable unconditionally.
6713
6714 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
6715
6716         PR target/36992
6717         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
6718
6719         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
6720         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
6721
6722         * config/i386/sse.md (sse2_movq128): New.
6723
6724         * doc/extend.texi: Document __builtin_ia32_movq128.
6725
6726 2008-08-07  Richard Guenther  <rguenther@suse.de>
6727
6728         PR middle-end/37042
6729         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
6730         pointers can access anything.
6731
6732 2008-08-06  Jan Hubicka  <jh@suse.cz>
6733
6734         * optabs.c (emit_unop_insn): Break out to ...
6735         (maybe_emit_unop_insn): ... this one.
6736         (expand_sfix_optab): Use maybe variant.
6737         * optabs.h (maybe_emit_unop_insn): Declare.
6738
6739         * i386.md (mov0 patterns): Enable by default.
6740         (FP conversion expanders): Disable expansion of code expanding
6741         sequences when instruction should be optimized for size.
6742         (single strinop patterns): Enable when optimizing for size.
6743         (string expanders): Disable expanding of code expanding sequences
6744         when optimizning instruction for size.
6745         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
6746         per BB basis.
6747         (ix86_fp_comparison_sahf_cost): Likewise.
6748         (ix86_expand_branch): Likewise.
6749         (ix86_expand_ashl_const): Likewise.
6750         (ix86_split_ashl): Likewise.
6751         (ix86_expand_strlen): Likewise.
6752         (ix86_emit_fp_unordered_jump): Likewie.
6753
6754 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6755
6756         * c-common.c: Fix typo.
6757         (c_common_reswords): Activate more C++ keyword warnings.
6758
6759         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
6760
6761 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6762
6763         PR 26785
6764         * diagnostic.c (permerror_at): New.
6765         * toplev.h (permerror_at): Declare.
6766
6767 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
6768             Ira Rosen  <irar@il.ibm.com>
6769
6770         * tree-vect-transform.c (vect_model_simple_cost): Return
6771         immediately if stmt is pure SLP.
6772         (vect_model_store_cost): Ditto.
6773         (vect_model_load_cost): Ditto.
6774         (vectorizable_store): Remove PURE_SLP check before call
6775         to vect_model_store_cost.
6776         (vect_model_store_cost): When checking whether stmt describe
6777         strided access, add a check that it is not slp_node.
6778
6779 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6780
6781         PR 8715
6782         * c-common.c (warn_for_sign_compare): New. Handle separately the
6783         case that 'constant' is zero.
6784         * c-typeck.c (build_binary_op): Move code to c-common.c
6785
6786 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6787
6788         * config/alpha/alpha.c (alpha_preferred_reload_class,
6789         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
6790         alpha_output_mi_thunk_osf): Avoid C++ keywords.
6791         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
6792         * config/arm/arm.md: Likewise.
6793         * config/avr/avr-protos.h (preferred_reload_class,
6794         test_hard_reg_class, avr_simplify_comparison_p,
6795         out_shift_with_cnt, class_max_nregs): Likewise.
6796         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
6797         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
6798         preferred_reload_class, test_hard_reg_class): Likewise.
6799         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
6800         bfin_memory_move_cost, bfin_secondary_reload,
6801         bfin_output_mi_thunk): Likewise.
6802         * config/crx/crx.c (crx_secondary_reload_class,
6803         crx_memory_move_cost): Likewise.
6804         * config/frv/frv-protos.h (frv_secondary_reload_class,
6805         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
6806         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
6807         frv_secondary_reload_class, frv_class_likely_spilled_p,
6808         frv_class_max_nregs): Likewise.
6809         * config/h8300/h8300.c (h8300_classify_operand,
6810         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
6811         Likewise.
6812         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
6813         * config/ia64/ia64.c (ia64_preferred_reload_class,
6814         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
6815         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
6816         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
6817         Likewise.
6818         * config/m68hc11/m68hc11.c (preferred_reload_class,
6819         m68hc11_memory_move_cost): Likewise.
6820         * config/mcore/mcore.c (mcore_secondary_reload_class,
6821         mcore_reload_class): Likewise.
6822         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
6823         mips_class_max_nregs, mips_cannot_change_mode_class,
6824         mips_preferred_reload_class, mips_secondary_reload_class,
6825         mips_output_mi_thunk): Likewise.
6826         * config/mmix/mmix.c (mmix_preferred_reload_class,
6827         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
6828         Likewise.
6829         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
6830         Likewise.
6831         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
6832         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
6833         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
6834         * config/rs6000/rs6000.c (paired_expand_vector_init,
6835         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
6836         compare_section_name, rs6000_memory_move_cost): Likewise.
6837         * config/s390/s390.c (s390_emit_compare_and_swap,
6838         s390_preferred_reload_class, s390_secondary_reload,
6839         legitimize_pic_address, legitimize_tls_address,
6840         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
6841         s390_class_max_nregs): Likewise.
6842         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
6843         * config/s390/s390.md: Likewise.
6844         * config/score/score-protos.h (score_secondary_reload_class,
6845         score_preferred_reload_class): Likewise.
6846         * config/score/score.c (score_preferred_reload_class,
6847         score_secondary_reload_class): Likewise.
6848         * config/score/score3.c (score3_output_mi_thunk,
6849         score3_preferred_reload_class, score3_secondary_reload_class,
6850         score3_hard_regno_mode_ok): Likewise.
6851         * config/score/score3.h (score3_preferred_reload_class,
6852         score3_secondary_reload_class): Likewise.
6853         * config/score/score7.c (score7_output_mi_thunk,
6854         score7_preferred_reload_class, score7_secondary_reload_class,
6855         score7_hard_regno_mode_ok): Likewise.
6856         * config/score/score7.h (score7_preferred_reload_class,
6857         score7_secondary_reload_class): Likewise.
6858         * config/sh/sh.c (prepare_move_operands, output_far_jump,
6859         output_branchy_insn, add_constant, gen_block_redirect,
6860         sh_insn_length_adjustment, sh_cannot_change_mode_class,
6861         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
6862         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
6863         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
6864         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
6865         xstormy16_preferred_reload_class): Likewise.
6866         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
6867         xtensa_expand_atomic, override_options,
6868         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
6869         Likewise.
6870         * reorg.c (try_merge_delay_insns): Likewise.
6871         * tree.c (merge_dllimport_decl_attributes): Likewise.
6872
6873         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
6874
6875 2008-08-06  Michael Matz  <matz@suse.de>
6876
6877         * Makefile.in (write_entries_to_file): Quote words.
6878         * gengtype.c: (read_input_line): Skip over leading white-space.
6879
6880 2008-08-06  Marc Gauthier  <marc@tensilica.com>
6881
6882         * config.gcc: Match more processor names for Xtensa.
6883         * configure.ac: Likewise.
6884         * doc/install.texi (Specific): Likewise.
6885         * configure: Regenerate.
6886
6887 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6888
6889         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
6890         * calls.c (avoid_likely_spilled_reg): Likewise.
6891         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
6892         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
6893         * config/i386/i386.c (ix86_expand_special_args_builtin,
6894         ix86_secondary_reload): Likewise.
6895         * except.c (struct eh_region, gen_eh_region_catch,
6896         remove_unreachable_regions, duplicate_eh_regions,
6897         assign_filter_values, build_post_landing_pads,
6898         sjlj_find_directly_reachable_regions, remove_eh_handler,
6899         reachable_next_level, foreach_reachable_handler,
6900         can_throw_internal_1, can_throw_external_1,
6901         collect_one_action_chain): Likewise.
6902         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
6903         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
6904         * function.c (update_temp_slot_address, instantiate_new_reg,
6905         instantiate_virtual_regs_in_rtx,
6906         instantiate_virtual_regs_in_insn): Likewise.
6907         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
6908         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
6909         gimplify_cleanup_point_expr): Likewise.
6910         * ipa-cp.c (ipcp_lattice_changed): Likewise.
6911         * passes.c (next_pass_1): Likewise.
6912         * print-tree.c (print_node_brief, print_node): Likewise.
6913         * profile.c (branch_prob): Likewise.
6914         * tree-dump.c (dump_register): Likewise.
6915         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
6916         Likewise.
6917         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
6918         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
6919         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
6920         copy_arguments_for_versioning, copy_static_chain): Likewise.
6921         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
6922         add_new_name_mapping, register_new_name_mapping): Likewise.
6923         * tree-mudflap.c (mf_xform_derefs): Likewise.
6924         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
6925         get_init_expr, combine_chains): Likewise.
6926         * tree-pretty-print.c (dump_generic_node): Likewise.
6927         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
6928         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
6929         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
6930         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
6931
6932 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
6933
6934         PR middle-end/37010
6935         * calls.c (expand_call): Use the biggest preferred stack
6936         boundary.
6937
6938 2008-08-06  Michael Matz  <matz@suse.de>
6939
6940         PR target/36613
6941         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
6942         for reused reload, instead of overwriting them.
6943
6944 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
6945
6946         PR middle-end/37009
6947         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
6948         for incoming stack boundary.
6949
6950         * function.c (assign_parm_find_entry_rtl): Update
6951         parm_stack_boundary.
6952
6953         * function.h (rtl_data): Add parm_stack_boundary.
6954
6955         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
6956         parm_stack_boundary for incoming stack boundary.
6957
6958 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
6959
6960         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
6961         for unrepresentable subregs or treat them as equal to other regs
6962         or subregs with the same register number.
6963
6964 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
6965
6966         PR middle-end/35432
6967         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
6968         if want_value.
6969
6970 2008-08-06  Jan Hubicka  <jh@suse.cz>
6971
6972         * predict.c (maybe_hot_frequency_p): When profile is absent, all
6973         frequencies might be hot.
6974
6975 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
6976
6977         * reload.c (find_reloads): Force constants into literal pool
6978         also if they are wrapped in a SUBREG.
6979
6980 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6981
6982         PR target/35659
6983         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
6984         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
6985         Don't allow predicated instructions for data speculation.
6986         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
6987         declaration.
6988
6989 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6990
6991         * haifa-sched.c (extend_global): Split to extend_global_data and
6992         extend_region_data.  Update all uses.
6993         (extend_all): Rename to extend_block_data.
6994
6995 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
6996
6997         * sched-rgn.c (new_ready): Check if instruction can be
6998         speculatively scheduled before attempting speculation.
6999         (debug_rgn_dependencies): Remove wrongful assert.
7000
7001 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
7002
7003         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
7004
7005 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
7006
7007         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
7008         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
7009         va_size, and type_size.
7010
7011 2008-08-04  Jason Merrill  <jason@redhat.com>
7012
7013         PR c++/37016
7014         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
7015         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
7016
7017 2008-08-05  Richard Henderson  <rth@redhat.com>
7018
7019         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
7020         * configure: Rebuild.
7021
7022 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7023
7024         PR tree-opt/37024
7025         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
7026         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
7027         is a conversion.
7028
7029 2008-08-05  Richard Henderson  <rth@redhat.com>
7030
7031         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
7032         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
7033         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
7034         * common.opt (fdwarf2-cfi-asm): New.
7035         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
7036         * config.in, configure: Rebuild.
7037         * dwarf2asm.c (dw2_asm_output_data_raw): New.
7038         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
7039         New.
7040         (dw2_force_const_mem): Externalize.
7041         * dwarf2asm.h: Update.
7042         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
7043         generate a real label.
7044         (output_cfi_directive): New.
7045         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
7046         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
7047         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
7048         and .cfi_lsda.
7049         (dwarf2out_end_epilogue): Emit .cfi_endproc.
7050         (output_loc_operands_raw, output_loc_sequence_raw): New.
7051         (output_cfa_loc_raw): New.
7052
7053 2008-08-05  Paul Brook  <paul@codesourcery.com>
7054
7055         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
7056         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
7057         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
7058         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
7059         * config/arm/arm.h (TARGET_VFPD32): Define.
7060         (TARGET_VFP3): Use TARGET_VFPD32.
7061         (fputype): Add FPUTYPE_VFP3D16.
7062         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
7063         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
7064         * config/arm/arm-cores.def: Add cortex-r4f.
7065         * config/arm/arm-tune.md: Regenerate.
7066
7067 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7068
7069         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
7070         Reword some comments throughout the file.
7071
7072         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
7073         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
7074         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
7075         MFC_MIN_DMA_LIST_ELEMENTS.
7076         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
7077         MFC_MAX_DMA_LIST_ELEMENTS.
7078
7079         (MFC_START_ENABLE): Remove PPU-only define.
7080         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
7081         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
7082
7083         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
7084         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
7085         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
7086         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
7087         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
7088         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
7089         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
7090
7091         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
7092         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
7093         (mfc_sdcrt, mfc_sdcrtst): Likewise.
7094         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
7095
7096         (spu_read_machine_status): Fix typo.
7097
7098 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7099
7100         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
7101         SUBREG of multi-word hard register.
7102         * config/spu/spu.c (valid_subreg): Likewise.
7103         (adjust_operand): Handle SUBREGs of multi-word hard registers.
7104
7105 2008-08-04  Richard Guenther  <rguenther@suse.de>
7106
7107         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
7108         the candidate with the stripped base if that base is different
7109         from the original base even for offset zero.
7110
7111 2008-08-04  Richard Guenther  <rguenther@suse.de>
7112
7113         PR middle-end/36691
7114         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
7115         check for no_overflow.
7116
7117 2008-08-04  Richard Guenther  <rguenther@suse.de>
7118
7119         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
7120
7121 2008-08-04  Paul Brook  <paul@codesourcery.com>
7122
7123         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
7124         (arm_order_regs_for_local_alloc): New function.
7125         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
7126         prototype.
7127         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
7128
7129 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
7130
7131         PR target/37012
7132         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
7133         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
7134         (ix86_expand_epilogue): Likewise.
7135
7136 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
7137
7138         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
7139         in comments.
7140
7141 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
7142
7143         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
7144         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
7145         (*movv2sf_internal_rex64): Ditto.
7146
7147 2008-08-03  Jan Hubicka  <jh@suse.cz>
7148
7149         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
7150         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
7151         * expmed.c (expand_smod_pow2): Likewise.
7152
7153 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
7154
7155         PR target/36992
7156         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
7157         alternative 0 of operand 1.
7158         (*vec_concatv2di_rex64_sse): Ditto.
7159         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
7160         of operand 1.
7161         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
7162         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
7163         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
7164         (*movv2sf_internal_rex64): Ditto.
7165
7166 2008-08-02  Richard Guenther  <rguenther@suse.de>
7167
7168         PR target/35252
7169         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
7170         (ssedoublesizemode): New mode attribute.
7171         (sse_shufps): Call gen_sse_shufps_v4sf.
7172         (sse_shufps_1): Macroize.
7173         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
7174         (sse2_shufpd_1): Macroize.
7175         (vec_extract_odd, vec_extract_even): New expanders.
7176         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
7177         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
7178         * i386.c (ix86_expand_vector_init_one_nonzero): Call
7179         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
7180         (ix86_expand_vector_set): Likewise.
7181         (ix86_expand_reduc_v4sf): Likewise.
7182
7183 2008-08-01  Doug Kwan  <dougkwan@google.com>
7184
7185         * matrix-reorg.c: Re-enable all code.
7186         (struct malloc_call_data): Change CALL_STMT to gimple type.
7187         (collect_data_for_malloc_call): Tuplify.
7188         (struct access_site_info): Change STMT to gimple type.
7189         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
7190         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
7191         (struct free_info): Change STMT to gimple type.
7192         (struct matrix_access_phi_node):  Change PHI to gimple type.
7193         (get_inner_of_cast_expr): Remove.
7194         (may_flatten_matrices_1): Tuplify.
7195         (may_flatten_matrices): Ditto.
7196         (mark_min_matrix_escape_level): Ditto.
7197         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
7198         (ssa_accessed_in_call_rhs): New
7199         (ssa_accessed_in_assign_rhs): New
7200         (record_access_alloc_site_info): Tuplify.
7201         (add_allocation_site): Ditto.
7202         (analyze_matrix_allocation_site): Ditto.
7203         (analyze_transpose): Ditto.
7204         (get_index_from_offset): Ditto.
7205         (update_type_size): Ditto.
7206         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
7207         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
7208         (analyze_accesses_for_phi_node): Tuplify.
7209         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
7210         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
7211         (analyze_matrix_accesses): Tuplify.
7212         (check_var_data): New call-back type for check_var_notmodified_p.
7213         (check_var_notmodified_p): Tuplify and use call-back struct to
7214         return statement found.
7215         (can_calculate_expr_before_stmt): Factor out statement related code
7216         into ...
7217         (can_calculate_stmt_before_stmt): New.
7218         (check_allocation_function): Tuplify.
7219         (find_sites_in_func): Ditto.
7220         (record_all_accesses_in_func): Ditto.
7221         (transform_access_sites): Ditto.
7222         (transform_allocation_sites): Ditto.
7223         (matrix_reorg): Re-enable.
7224         (gate_matrix_reorg): Re-enable.
7225
7226 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
7227
7228         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
7229         for labels for which it hasn't been set yet.  If it has been set,
7230         stop walking insns and continue with next worklist item.
7231         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
7232         if the only BARRIER is at the very end of a function.
7233
7234 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
7235
7236         * cfgexpand.c (expand_stack_alignment): Assert that
7237         stack_realign_drap and drap_rtx must match.
7238
7239         * function.c (instantiate_new_reg): If DRAP is used to realign
7240         stack, replace virtual_incoming_args_rtx with internal arg
7241         pointer.
7242
7243 2008-08-01  Richard Guenther  <rguenther@suse.de>
7244
7245         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
7246         loop information only if we initialized it.
7247         (execute_pre): Call fini_pre with in_fre.
7248         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
7249         if we do not unroll because we hit max-completely-peeled-insns.
7250         Use our estimation for consistency, do allow shrinking.
7251
7252 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
7253
7254         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
7255         with MIN_STACK_BOUNDARY.
7256         (ix86_update_stack_boundary): Likewise.
7257         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
7258         STACK_BOUNDARY.
7259
7260         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
7261         (MIN_STACK_BOUNDARY): This.
7262
7263 2008-08-01  Richard Guenther  <rguenther@suse.de>
7264
7265         PR middle-end/36997
7266         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
7267
7268 2008-08-01  Richard Guenther  <rguenther@suse.de>
7269
7270         PR tree-optimization/36988
7271         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
7272         do not matter if that doesn't change volatile qualification.
7273
7274 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
7275
7276         * configure.ac: Do not generate libada-mk.  Do not subst
7277         host_cc_for_libada.
7278         * libada-mk.in: Remove.
7279         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
7280         * configure: Regenerate.
7281
7282 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
7283
7284         * tree-pass.h: Added comment about not dumping passes with name
7285         starting with star in struct opt_pass.
7286         * passes.c (register_dump_files_1): Don't do dump for a pass with
7287         name starting with star.
7288         * doc/passes.texi (Pass manager): Mention pass names and special
7289         meaning of star prefix to avoid dump.
7290
7291 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
7292
7293         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
7294         to MIPS64r2.
7295         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
7296         (ISA_MIPS64R2): New macro.
7297         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
7298         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
7299         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
7300         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
7301         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
7302         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
7303         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
7304         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
7305         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
7306         Move up to keep list alphabetically sorted.
7307         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
7308         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
7309         processor.
7310         * doc/invoke.texi (MIPS Options): Add -mips64r2.
7311         (-march=@var{arch}): Add mips64r2.
7312
7313 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7314
7315         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
7316
7317 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
7318
7319         * expr.c (expand_assignment): Check for complete type.
7320
7321 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7322
7323         PR debug/36977
7324         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
7325
7326         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
7327         for stack alignment.
7328
7329         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
7330
7331 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
7332
7333         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
7334         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
7335
7336 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
7337
7338         PR rtl-optimization/36419
7339         * dwarf2out.c (barrier_args_size): New variable.
7340         (compute_barrier_args_size, compute_barrier_args_size_1): New
7341         functions.
7342         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
7343         if not called yet in the current function, use barrier_args_size
7344         array to find the new args_size value.
7345         (dwarf2out_frame_debug): Free and clear barrier_args_size.
7346
7347 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7348
7349         PR debug/36980
7350         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
7351         rule 19.
7352
7353 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
7354
7355         PR debug/36976
7356         * dwarf2out.c (dwarf2out_args_size_adjust): New.
7357         (dwarf2out_stack_adjust): Use it.
7358         (dwarf2out_frame_debug_expr): Likewise.
7359
7360 2008-07-31  Richard Guenther  <rguenther@suse.de>
7361
7362         PR tree-optimization/36978
7363         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
7364         the generated condition.
7365
7366 2008-07-31  Richard Guenther  <rguenther@suse.de>
7367
7368         * passes.c (init_optimization_passes): Always call
7369         pass_early_warn_uninitialized.
7370         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
7371         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
7372         * doc/passes.texi (Warn for uninitialized variables): Adjust.
7373
7374 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
7375
7376         PR c/36970
7377         * builtins.c (maybe_emit_free_warning): New function.
7378         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
7379         maybe_emit_free_warning for BUILT_IN_FREE.
7380
7381         PR debug/36278
7382         * dwarf2out.c (get_context_die): New function.
7383         (force_decl_die, force_type_die): Use it.
7384         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
7385         returns NULL, force generation of DW_TAG_typedef and put that into
7386         DW_AT_import.
7387
7388         PR preprocessor/36649
7389         * c-pch.c (c_common_read_pch): Save and restore
7390         line_table->trace_includes across PCH restore.
7391
7392 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
7393
7394         PR ada/36554
7395         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
7396
7397 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
7398
7399         PR 36974
7400         * final.c (call_from_call_insn): Handle COND_EXEC.
7401
7402 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
7403
7404         * builtins.c (std_gimplify_va_arg_expr): Replace
7405         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
7406         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7407
7408 2008-07-30  Joey Ye  <joey.ye@intel.com>
7409             H.J. Lu  <hongjiu.lu@intel.com>
7410
7411         * builtins.c (expand_builtin_setjmp_receiver): Replace
7412         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
7413         (expand_builtin_apply_args_1): Likewise.
7414         (expand_builtin_longjmp): Need DRAP for stack alignment.
7415         (expand_builtin_apply): Likewise.
7416
7417         * caller-save.c (setup_save_areas): Call assign_stack_local_1
7418         instead of assign_stack_local to allow alignment reduction.
7419
7420         * calls.c (emit_call_1): Need DRAP for stack alignment if
7421         return pops.
7422         (expand_call): Replace virtual_incoming_args_rtx with
7423         crtl->args.internal_arg_pointer.
7424         * stmt.c (expand_nl_goto_receiver): Likewise.
7425
7426         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
7427         alignment and store to stack_alignment_estimated and
7428         max_used_stack_slot_alignment.
7429         (expand_one_var): Likewise.
7430         (expand_stack_alignment): New function.
7431         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
7432         and stack_alignment_estimated fields in rtl_data.  Call
7433         expand_stack_alignment at end.
7434
7435         * defaults.h (INCOMING_STACK_BOUNDARY): New.
7436         (MAX_STACK_ALIGNMENT): Likewise.
7437         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
7438         (SUPPORTS_STACK_ALIGNMENT): Likewise.
7439
7440         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
7441         stack alignment when generating virtual registers.
7442
7443         * function.c (assign_stack_local): Renamed to ...
7444         (assign_stack_local_1): This.  Add a parameter to indicate
7445         if it is OK to reduce alignment.
7446         (assign_stack_local): Use it.
7447         (instantiate_new_reg): Instantiate virtual incoming args rtx
7448         to vDRAP if stack realignment and DRAP is needed.
7449         (assign_parms): Collect parameter/return type alignment and
7450         contribute to stack_alignment_estimated.
7451         (locate_and_pad_parm): Likewise.
7452         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
7453         with crtl->args.internal_arg_pointer.
7454
7455         * function.h (rtl_data): Add new field drap_reg,
7456         max_used_stack_slot_alignment, stack_alignment_estimated,
7457         stack_realign_needed, need_drap, stack_realign_processed and
7458         stack_realign_finalized.
7459         (stack_realign_fp): New macro.
7460         (stack_realign_drap): Likewise.
7461
7462         * global.c (compute_regsets): Frame pointer is needed when
7463         stack is realigned.  Can eliminate frame pointer when stack is
7464         realigned and dynamic realigned argument pointer isn't used.
7465
7466         * reload1.c (update_eliminables):  Frame pointer is needed
7467         when stack is realigned.
7468         (init_elim_table): Can eliminate frame pointer when stack is
7469         realigned and dynamic realigned argument pointer isn't used.
7470
7471         * rtl.h (assign_stack_local_1): Declare new funtion.
7472
7473         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
7474         (TARGET_GET_DRAP_RTX): Likewise.
7475         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
7476         TARGET_GET_DRAP_RTX.
7477
7478         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
7479
7480         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
7481         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
7482
7483 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
7484             H.J. Lu  <hongjiu.lu@intel.com>
7485
7486         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
7487         vdrap_reg, stack_realign and drap_reg_saved.
7488         (add_cfi): Don't allow redefining CFA when DRAP is used.
7489         (reg_save): Handle stack alignment.
7490         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
7491         alignment.  Don't generate DWARF information for (set fp sp)
7492         when DRAP is used.
7493         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
7494         to INVALID_REGNUM.
7495         (int_loc_descriptor): Move prototype forward.  Also define if
7496         DWARF2_UNWIND_INFO is true.
7497         (output_cfa_loc): Handle DW_CFA_expression.
7498         (build_cfa_aligned_loc): New.
7499         (based_loc_descr): Update assert for stack realign.  For local
7500         variables, use sp+offset when stack is aligned without drap and
7501         fp+offset when stack is aligned with drap.  For arguments, use
7502         cfa+offset when drap is used to align stack.
7503
7504 2008-07-30  Joey Ye  <joey.ye@intel.com>
7505             H.J. Lu  <hongjiu.lu@intel.com>
7506
7507         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
7508         Break long line.
7509         (ix86_gen_andsp): New.
7510         (ix86_user_incoming_stack_boundary): Likewise.
7511         (ix86_default_incoming_stack_boundary): Likewise.
7512         (ix86_incoming_stack_boundary): Likewise.
7513         (ix86_can_eliminate): Likewise.
7514         (find_drap_reg): Likewise.
7515         (ix86_update_stack_boundary): Likewise.
7516         (ix86_get_drap_rtx): Likewise.
7517         (ix86_finalize_stack_realign_flags): Likewise.
7518         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
7519         (TARGET_GET_DRAP_RTX): Likewise.
7520         (override_options): Overide option value for new options.
7521         (ix86_function_ok_for_sibcall): Remove check for
7522         force_align_arg_pointer.
7523         (ix86_handle_cconv_attribute): Likewise.
7524         (ix86_function_regparm): Likewise.
7525         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
7526         (ix86_va_start): Replace virtual_incoming_args_rtx with
7527         crtl->args.internal_arg_pointer.
7528         (ix86_select_alt_pic_regnum): Check DRAP register.
7529         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
7530         (ix86_compute_frame_layout): Compute frame layout wrt stack
7531         realignment.
7532         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
7533         (ix86_expand_prologue): Decide if stack realignment is needed
7534         and generate prologue code accordingly.
7535         (ix86_expand_epilogue): Generate epilogue code wrt stack
7536         realignment is really needed or not.
7537
7538         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
7539         (ABI_STACK_BOUNDARY): Likewise.
7540         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
7541         (STACK_REALIGN_DEFAULT): Likewise.
7542         (INCOMING_STACK_BOUNDARY): Likewise.
7543         (MAX_STACK_ALIGNMENT): Likewise.
7544         (ix86_incoming_stack_boundary): Likewise.
7545         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
7546         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
7547         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
7548         (machine_function): Remove force_align_arg_pointer.
7549
7550         * config/i386/i386.md (BX_REG): New.
7551         (R13_REG): Likewise.
7552
7553         * config/i386/i386.opt (mforce_drap): New.
7554         (mincoming-stack-boundary): Likewise.
7555         (mstackrealign): Add Init(-1).
7556
7557         * config/i386/i386-protos.h (ix86_can_eliminate): New
7558
7559 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
7560
7561         * doc/extend.texi: Update force_align_arg_pointer.
7562
7563         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
7564         -mstackrealign.
7565
7566         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
7567         (INCOMING_STACK_BOUNDARY): Likewise.
7568         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
7569         (TARGET_GET_DRAP_RTX): Likewise.
7570
7571 2008-07-30  Andreas Schwab  <schwab@suse.de>
7572
7573         PR rtl-optimization/36929
7574         * dse.c (replace_inc_dec): Use emit_insn_before instead of
7575         add_insn_before and fix argument order.
7576         (replace_inc_dec_mem): Handle NULL rtx.
7577
7578 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
7579
7580         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
7581         function.
7582         (arm_compute_initial_elimination_offset): Use it.
7583         (arm_compute_save_reg_mask): Include static chain save slot when
7584         calculating alignment.
7585         (arm_get_frame_offsets): Ditto.
7586         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
7587         that we can use to decrement the stack when the stack decrement
7588         could be too big for an immediate value in a single insn.
7589         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
7590
7591 2008-07-30  Richard Guenther  <rguenther@suse.de>
7592
7593         PR tree-optimization/36967
7594         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
7595         Release defs of statements we remove.
7596
7597 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
7598
7599         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
7600         instead of NULL_RTVEC.
7601
7602 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
7603
7604         PR target/35866
7605
7606         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
7607         vector modes.
7608
7609 2008-07-30  Rafael Ãƒvila de Espíndola  <espindola@google.com>
7610
7611         * final.c (call_from_call_insn): New.
7612         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
7613
7614 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
7615
7616         * configure.ac: Substitute ADA_CFLAGS.
7617         * configure: Regenerate.
7618         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
7619         * Makefile.in: Remove mention of X_* variables.
7620         * config/pa/x-ada-hpux10: Remove.
7621         * config/pa/x-ada: Remove.
7622
7623         * doc/fragments.texi: Update.
7624
7625 2008-07-30  Olivier Hainque  <hainque@adacore.com>
7626
7627         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
7628         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
7629         __dso_handle explicitly here.
7630
7631 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7632
7633         PR 34389
7634         * c-typeck.c (build_binary_op): Encapsulate code into...
7635         * c-common.c (shorten_binary_op): ...this new function.
7636         (conversion_warning): Use the new function. Handle non-negative
7637         constant in bitwise-and.
7638         * c-common.h (shorten_binary_op): Declare.
7639
7640 2008-07-30  Olivier Hainque  <hainque@adacore.com>
7641
7642         * scan.c (make_sstring_space): Add explicit conversions of
7643         allocator's return value.
7644         * fix-header.c (recognized_function): Likewise.
7645
7646 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7647
7648         * doc/cpp.texi: Update to GFDL 1.2.
7649         * doc/gcc.texi: Do not list GPL as Invariant Section.
7650         * doc/gccint.texi: Likewise.  Update copyright years.
7651         * doc/install.texi: Update copyright years.
7652
7653 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
7654
7655         PR target/36955
7656         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
7657         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
7658
7659 2008-07-29  Jan Hubicka  <jh@suse.cz>
7660
7661         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
7662         (grokdeclarator): Likewise.
7663         * langhooks.c (lhd_warn_unused_global_decl): Use
7664         DECL_DECLARED_INLINE_P.
7665         * print-tree.c (print_node): Remove DECL_INLINE check.
7666
7667 2008-07-29  Richard Guenther  <rguenther@suse.de>
7668
7669         PR tree-optimization/36945
7670         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
7671         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
7672         Record invariant addresses un-decomposed.
7673         (copy_reference_ops_from_call): Record reference call
7674         arguments properly.  Simplify.
7675         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
7676         helper split out from ...
7677         (create_component_ref_by_pieces): ... here.  Simplify.
7678         Prepare for recursive invocation for call arguments.
7679         (create_expression_by_pieces): Adjust call to
7680         create_component_ref_by_pieces.
7681         (compute_avail): Process operand 2 of reference ops.
7682
7683 2008-07-29  Richard Guenther  <rguenther@suse.de>
7684
7685         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
7686
7687 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
7688
7689         * c-format.c (check_format_types): Revert unwanted checkin.
7690
7691 2008-07-29  Jan Hubicka  <jh@suse.cz>
7692
7693         * flags.h (flag_really_no_inline): Remove.
7694         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
7695         * toplev.c (flag_really_no_inline): Remove.
7696         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
7697         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
7698         (cgraph_decide_inlining_incrementally): Likewise.
7699         (compute_inline_parameters): Likewise.
7700         * opts.c (decode_options): Simplify.
7701         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
7702         * common.opt (finline): Initialize to 1.
7703         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
7704
7705 2008-07-29  Jan Hubicka  <jh@suse.cz>
7706
7707         * predict.c (always_optimize_for_size_p): New function.
7708         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
7709         optimize_edge_for_size_p, optimize_edge_for_speed_p,
7710         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
7711         functions.
7712         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
7713         * function.c (prepare_function_start): Set default profile.
7714         * function.h (rtl_data): Add maybe_hot_insn_p.
7715         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
7716         (construct_exit_block): Likewise.
7717         (tree_expand_cfg): Likewise.
7718         * basic-block.h
7719         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
7720         optimize_edge_for_size_p, optimize_edge_for_speed_p,
7721         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
7722         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
7723         Declare.
7724
7725 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7726
7727         PR 34985
7728         * c-decl.c (merge_decls): Merge USED flags.
7729
7730 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
7731
7732         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
7733         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
7734         next_stack, lab_false and lab_over trees.
7735
7736 2008-07-28  Richard Guenther  <rguenther@suse.de>
7737
7738         PR tree-optimization/36957
7739         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
7740         (useless_type_conversion_p): Remove.
7741         (types_compatible_p): Remove.
7742         * gimple.h (tree_ssa_useless_type_conversion): Declare.
7743         (useless_type_conversion_p): Declare.
7744         (types_compatible_p): Declare.
7745         (gimple_expr_type): Return the base type only if it is
7746         trivially convertible to the subtype.
7747
7748 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
7749
7750         * configure.ac: Use the m4_do macro to concatenate the warnings into
7751         one string in ACX_PROG_CC_WARNING_OPTS,
7752         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
7753         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
7754         * configure: Regenerate.
7755
7756 2008-07-28  Richard Guenther  <rguenther@suse.de>
7757
7758         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
7759         (insert_fake_stores): Remove.
7760         (realify_fake_stores): Likewise.
7761         (execute_pre): Remove dead code.
7762         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
7763         (find_func_aliases): Deal with it here instead.
7764         Re-enable gcc_unreachable call.
7765
7766 2008-07-28  Richard Guenther  <rguenther@suse.de>
7767
7768         Merge from gimple-tuples-branch.
7769
7770         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
7771         * gimple.def: New file.
7772         * gsstruct.def: Likewise.
7773         * gimple-iterator.c: Likewise.
7774         * gimple-pretty-print.c: Likewise.
7775         * tree-gimple.c: Removed.  Merged into ...
7776         * gimple.c: ... here.  New file.
7777         * tree-gimple.h: Removed.  Merged into ...
7778         * gimple.h: ... here.  New file.
7779
7780         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
7781         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
7782         --enable-checking=gimple flag.
7783         * config.in: Likewise.
7784         * configure: Regenerated.
7785
7786         * tree-ssa-operands.h: Tuplified.
7787         * tree-vrp.c: Likewise.
7788         * tree-loop-linear.c: Likewise.
7789         * tree-into-ssa.c: Likewise.
7790         * tree-ssa-loop-im.c: Likewise.
7791         * tree-dump.c: Likewise.
7792         * tree-complex.c: Likewise.
7793         * cgraphbuild.c: Likewise.
7794         * tree-ssa-threadupdate.c: Likewise.
7795         * tree-ssa-loop-niter.c: Likewise.
7796         * tree-pretty-print.c: Likewise.
7797         * tracer.c: Likewise.
7798         * gengtype.c: Likewise.
7799         * tree-loop-distribution.c: Likewise.
7800         * tree-ssa-loop-unswitch.c: Likewise.
7801         * cgraph.c: Likewise.
7802         * cgraph.h: Likewise.
7803         * tree-ssa-loop-manip.c: Likewise.
7804         * value-prof.c: Likewise.
7805         * tree-ssa-loop-ch.c: Likewise.
7806         * tree-tailcall.c: Likewise.
7807         * value-prof.h: Likewise.
7808         * tree.c: Likewise.
7809         * tree.h: Likewise.
7810         * tree-pass.h: Likewise.
7811         * ipa-cp.c: Likewise.
7812         * tree-scalar-evolution.c: Likewise.
7813         * tree-scalar-evolution.h: Likewise.
7814         * target.h: Likewise.
7815         * lambda-mat.c: Likewise.
7816         * tree-phinodes.c: Likewise.
7817         * diagnostic.h: Likewise.
7818         * builtins.c: Likewise.
7819         * tree-ssa-alias-warnings.c: Likewise.
7820         * cfghooks.c: Likewise.
7821         * fold-const.c: Likewise.
7822         * cfghooks.h: Likewise.
7823         * omp-low.c: Likewise.
7824         * tree-ssa-dse.c: Likewise.
7825         * ipa-reference.c: Likewise.
7826         * tree-ssa-uncprop.c: Likewise.
7827         * toplev.c: Likewise.
7828         * tree-gimple.c: Likewise.
7829         * tree-gimple.h: Likewise.
7830         * tree-chrec.c: Likewise.
7831         * tree-chrec.h: Likewise.
7832         * tree-ssa-sccvn.c: Likewise.
7833         * tree-ssa-sccvn.h: Likewise.
7834         * cgraphunit.c: Likewise.
7835         * tree-ssa-copyrename.c: Likewise.
7836         * tree-ssa-ccp.c: Likewise.
7837         * tree-ssa-loop-ivopts.c: Likewise.
7838         * tree-nomudflap.c: Likewise.
7839         * tree-call-cdce.c: Likewise.
7840         * ipa-pure-const.c: Likewise.
7841         * c-format.c: Likewise.
7842         * tree-stdarg.c: Likewise.
7843         * tree-ssa-math-opts.c: Likewise.
7844         * tree-ssa-dom.c: Likewise.
7845         * tree-nrv.c: Likewise.
7846         * tree-ssa-propagate.c: Likewise.
7847         * ipa-utils.c: Likewise.
7848         * tree-ssa-propagate.h: Likewise.
7849         * tree-ssa-alias.c: Likewise.
7850         * gimple-low.c: Likewise.
7851         * tree-ssa-sink.c: Likewise.
7852         * ipa-inline.c: Likewise.
7853         * c-semantics.c: Likewise.
7854         * dwarf2out.c: Likewise.
7855         * expr.c: Likewise.
7856         * tree-ssa-loop-ivcanon.c: Likewise.
7857         * predict.c: Likewise.
7858         * tree-ssa-loop.c: Likewise.
7859         * tree-parloops.c: Likewise.
7860         * tree-ssa-address.c: Likewise.
7861         * tree-ssa-ifcombine.c: Likewise.
7862         * matrix-reorg.c: Likewise.
7863         * c-decl.c: Likewise.
7864         * tree-eh.c: Likewise.
7865         * c-pretty-print.c: Likewise.
7866         * lambda-trans.c: Likewise.
7867         * function.c: Likewise.
7868         * langhooks.c: Likewise.
7869         * ebitmap.h: Likewise.
7870         * tree-vectorizer.c: Likewise.
7871         * function.h: Likewise.
7872         * langhooks.h: Likewise.
7873         * tree-vectorizer.h: Likewise.
7874         * ipa-type-escape.c: Likewise.
7875         * ipa-type-escape.h: Likewise.
7876         * domwalk.c: Likewise.
7877         * tree-if-conv.c: Likewise.
7878         * profile.c: Likewise.
7879         * domwalk.h: Likewise.
7880         * tree-data-ref.c: Likewise.
7881         * tree-data-ref.h: Likewise.
7882         * tree-flow-inline.h: Likewise.
7883         * tree-affine.c: Likewise.
7884         * tree-vect-analyze.c: Likewise.
7885         * c-typeck.c: Likewise.
7886         * gimplify.c: Likewise.
7887         * coretypes.h: Likewise.
7888         * tree-ssa-phiopt.c: Likewise.
7889         * calls.c: Likewise.
7890         * tree-ssa-coalesce.c: Likewise.
7891         * tree.def: Likewise.
7892         * tree-dfa.c: Likewise.
7893         * except.c: Likewise.
7894         * except.h: Likewise.
7895         * cfgexpand.c: Likewise.
7896         * tree-cfgcleanup.c: Likewise.
7897         * tree-ssa-pre.c: Likewise.
7898         * tree-ssa-live.c: Likewise.
7899         * tree-sra.c: Likewise.
7900         * tree-ssa-live.h: Likewise.
7901         * tree-predcom.c: Likewise.
7902         * lambda.h: Likewise.
7903         * tree-mudflap.c: Likewise.
7904         * ipa-prop.c: Likewise.
7905         * print-tree.c: Likewise.
7906         * tree-ssa-copy.c: Likewise.
7907         * ipa-prop.h: Likewise.
7908         * tree-ssa-forwprop.c: Likewise.
7909         * ggc-page.c: Likewise.
7910         * c-omp.c: Likewise.
7911         * tree-ssa-dce.c: Likewise.
7912         * tree-vect-patterns.c: Likewise.
7913         * tree-ssa-ter.c: Likewise.
7914         * tree-nested.c: Likewise.
7915         * tree-ssa.c: Likewise.
7916         * lambda-code.c: Likewise.
7917         * tree-ssa-loop-prefetch.c: Likewise.
7918         * tree-inline.c: Likewise.
7919         * tree-inline.h: Likewise.
7920         * tree-iterator.c: Likewise.
7921         * tree-optimize.c: Likewise.
7922         * tree-ssa-phiprop.c: Likewise.
7923         * tree-vect-transform.c: Likewise.
7924         * tree-object-size.c: Likewise.
7925         * tree-outof-ssa.c: Likewise.
7926         * cfgloop.c: Likewise.
7927         * system.h: Likewise.
7928         * tree-profile.c: Likewise.
7929         * cfgloop.h: Likewise.
7930         * c-gimplify.c: Likewise.
7931         * c-common.c: Likewise.
7932         * tree-vect-generic.c: Likewise.
7933         * tree-flow.h: Likewise.
7934         * c-common.h: Likewise.
7935         * basic-block.h: Likewise.
7936         * tree-ssa-structalias.c: Likewise.
7937         * tree-switch-conversion.c: Likewise.
7938         * tree-ssa-structalias.h: Likewise.
7939         * tree-cfg.c: Likewise.
7940         * passes.c: Likewise.
7941         * ipa-struct-reorg.c: Likewise.
7942         * ipa-struct-reorg.h: Likewise.
7943         * tree-ssa-reassoc.c: Likewise.
7944         * cfgrtl.c: Likewise.
7945         * varpool.c: Likewise.
7946         * stmt.c: Likewise.
7947         * tree-ssanames.c: Likewise.
7948         * tree-ssa-threadedge.c: Likewise.
7949         * langhooks-def.h: Likewise.
7950         * tree-ssa-operands.c: Likewise.
7951         * config/alpha/alpha.c: Likewise.
7952         * config/frv/frv.c: Likewise.
7953         * config/s390/s390.c: Likewise.
7954         * config/m32c/m32c.c: Likewise.
7955         * config/m32c/m32c-protos.h: Likewise.
7956         * config/spu/spu.c: Likewise.
7957         * config/sparc/sparc.c: Likewise.
7958         * config/i386/i386.c: Likewise.
7959         * config/sh/sh.c: Likewise.
7960         * config/xtensa/xtensa.c: Likewise.
7961         * config/stormy16/stormy16.c: Likewise.
7962         * config/ia64/ia64.c: Likewise.
7963         * config/rs6000/rs6000.c: Likewise.
7964         * config/pa/pa.c: Likewise.
7965         * config/mips/mips.c: Likewise.
7966
7967 2008-07-28  Simon Baldwin  <simonb@google.com>
7968
7969         * c-pragma.c (handle_pragma_message): New function.
7970         (init_pragma): Register handle_pragma_message.
7971         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
7972         documentation.
7973
7974 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
7975
7976         PR tree-optimization/35252
7977         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
7978         REALPART_EXPR to be considered as same load operation.
7979
7980 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
7981
7982         PR tree-optimization/36830
7983         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
7984         (expressions_equal_p): Return false if only one operand is null.
7985
7986 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
7987
7988         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
7989         version requirements.
7990
7991 2008-07-26  Olivier Hainque  <hainque@adacore.com>
7992
7993         * collect2.c (symkind): New enum.  Symbol kinds we care about.
7994         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
7995         code and head comment accordingly.
7996         (scan_prog_file): Use symkind names instead of bare integers.
7997
7998 2008-07-25  Jan Hubicka  <jh@suse.cz>
7999
8000         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
8001         DECL_INLINE.
8002         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
8003         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
8004         * dojump.c (clear_pending_stack_adjust): Likewise.
8005         * print-tree.c (print_node): Ignore DECL_INLINE.
8006         * tree-inline.c (inlinable_function_p): Likewise.
8007
8008 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
8009
8010         * doc/extend.texi (hot attribute): Document that the hot attribute
8011         turns on -O3 for some ports.
8012         (cold attribute): Document that the cold attribute turns on -Os
8013         for some ports
8014
8015         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
8016         reflect function specific option support.
8017
8018         * target.h (struct target_option_hooks): Add fields to say whether
8019         the cold attribute implies -Os and the hot attribute implies -O3.
8020
8021         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
8022         By default, do not turn on -Os for cold functions.
8023         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
8024         not turn on -O3 for hot functions.
8025
8026         * c-common.c (handle_hot_attribute): Use target hook to determine
8027         if hot functions should enable -O3.
8028         (handle_cold_attribute): Use target hook to determine if cold
8029         functions should enable -Os.
8030
8031         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
8032         (override_options): Move disable scheduling to
8033         optimization_options.
8034         (optimization_options): Disable scheduling here, not
8035         override_options.
8036         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
8037         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
8038
8039         * config/ia64/ia64.c (ia64_override_options): Move setting
8040         scheduling flags to ia64_optimization_options.
8041         (ia64_optimization_options): Disable scheduling options here, and
8042         not in ia64_override_options.
8043         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
8044         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
8045
8046 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
8047
8048         PR target/36936
8049         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
8050
8051 2008-07-25  Martin Jambor  <mjambor@suse.cz>
8052
8053         PR tree-optimization/36926
8054         * ipa-prop.c (ipa_analyze_call_uses): Call
8055         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
8056
8057 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
8058
8059         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
8060         movv2si_internal): Add mem = reg alternative.
8061
8062 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
8063
8064         PR bootstrap/36918
8065         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
8066         DEFAULT_PCC_STRUCT_RETURN to 127.
8067
8068 2008-07-24  Jan Hubicka  <jh@suse.cz>
8069
8070         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
8071         (build_cgraph_edges): Likewise.
8072         * cgraph.c (cgraph_node): Do not update assembler hash.
8073         (cgraph_remove_node): Drop non-unit-at-a-time code.
8074         * tree-pass.h (pass_O0_always_inline): Remove.
8075         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
8076         * toplev.c (process_options): Flag unit-at-a-time does not imply
8077         no section anchors.
8078         * cgraphunit.c: Update comments.
8079         (decide_is_function_needed): Drop non-unit-at-a-time mode.
8080         (cgraph_assemble_pending_functions): Remove.
8081         (cgraph_reset_node): Drop non-unit-at-a-time code.
8082         (cgraph_finalize_function): Likewise.
8083         (cgraph_analyze_function): Likewise.
8084         (cgraph_finalize_compilation_unit): Likewise.
8085         (cgraph_expand_function): Likewise.
8086         (cgraph_optimize): Likesise.
8087         (save_inline_function_body): Likewise.
8088         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
8089         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
8090         * ipa-inline.c: Update comments.
8091         (enum inlining_mode): remove INLINE_SPEED.
8092         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
8093         (cgraph_mark_inline_edge): Likewise.
8094         (try_inline): Likewise.
8095         (cgraph_decide_inlining_incrementally): Likewise.
8096         (cgraph_gate_inlining): Remove.
8097         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
8098         (cgraph_gate_early_inlining): Likewise.
8099         (gate_inline_passes): Remove.
8100         (pass_inline_parameters, pass_ipa_inline): Remove gates.
8101         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
8102         pass_O0_always_inline): Remove.
8103         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
8104         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
8105         * opts.c (no_unit_at_a_time_default): Remove.
8106         (decode_options): Remove flag_unit_at_a_time reset and warning.
8107         * opts.h (no_unit_at_a_time_default): Remove.
8108         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
8109         early in GNU dialect.
8110         (merge_decls): Update comment; drop unit-at-a-time check.
8111         (finish_decl): Likewise.
8112         (grok_declaration): Remove flag_inline_trees code.
8113         (finish_functions): Return on function returning non-void on all
8114         statics.
8115         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
8116         * cfgexpand.c (expand_one_static_var): Remove.
8117         (expand_one_var): Remove expand_one_static_var call.
8118         (expand_used_vars_for_block): Remove flag_unit_a_time check.
8119         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
8120         and flag_unit_at_a-time compatibility checks.
8121         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
8122         * tree-inline.c (flag_inline_trees): Remove.
8123         (inlinable_function_p): Don't check it.
8124         (expand_call_inline): Remove non-unit-at-a-time code.
8125         * tree-inline.h (flag_inline_trees): Remove.
8126         * tree-optimize.c (execute_early_local_optimizations): Remove
8127         unit-at-a-time checks.
8128         (tree_rest_of_compilation): Likewise.
8129         * combine.c (setup_incoming_promotions): Likewise.
8130         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
8131         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
8132         * passes.c (pass_inline_parameters): Update comments; remove
8133         O0_alwaysinline pass.
8134         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
8135         (execute_one_pass): Likewise.
8136         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
8137         (ix86_function_sseregparm): Likewise.
8138         * arm.c (arm_function_in_section_p): Likewise.
8139         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
8140         * varpool.c: Update comments.
8141         (decide_is_variable_needed): Remove unit-at-a-time checks.
8142         (varpool_finalize_decl): Likewise.
8143
8144 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
8145
8146         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
8147         to 2 instead of -1.
8148         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
8149
8150 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
8151
8152         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
8153         imp symbol extension.
8154
8155         2008-07-23  Ian Lance Taylor  <iant@google.com>
8156
8157         * tree-vrp.c (infer_value_range): Ignore asm statements when
8158         looking for memory accesses for -fdelete-null-pointer-checks.
8159
8160 2008-07-24  Ben Elliston  <bje@au.ibm.com>
8161
8162         * config/spu/spu-c.c (__vector_keyword): New variable.
8163         (vector_keyword): Likewise.
8164         (spu_categorize_keyword): New function.
8165         (spu_macro_to_expand): Likewise.
8166         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
8167         compiling an ISO C dialect.
8168
8169 2008-07-24  Ben Elliston  <bje@au.ibm.com>
8170
8171         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
8172         conventional usage.
8173
8174 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
8175
8176         * configure: Regenerate.
8177         * configure.ac: Require texinfo 4.7.
8178         * doc/install.texi: Document texinfo 4.7 requirement.
8179
8180 2008-07-23  Martin Jambor  <mjambor@suse.cz>
8181
8182         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
8183         rather than for DECL_SAVED_TREE.
8184         * ipa-prop.c: Include diagnostic.h.
8185         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
8186         thoroughly.
8187         (ipa_detect_param_modifications): Function rewritten from scratch.
8188         (ipa_compute_jump_functions): Changed accesses to modification flags.
8189         (ipa_free_node_params_substructures): Update flags destruction.
8190         (ipa_node_duplication_hook): Update flags duplication.
8191         (ipa_print_all_params_modified): Updated flag access.
8192         * ipa-prop.h (struct ipa_param_flags): New structure.
8193         (struct ipa_node_params): New field modification_analysis_done,
8194         modified_flags changed into param_flags.
8195         (ipa_is_ith_param_modified): Changed to use new flags.
8196         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
8197
8198         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
8199         ipa-cp.c and split into two functions.
8200         (ipa_print_node_jump_functions): New function.
8201         (compute_scalar_jump_functions): New function.
8202         (type_like_member_ptr_p): New function.
8203         (compute_pass_through_member_ptrs): New function.
8204         (fill_member_ptr_cst_jump_function): New function.
8205         (determine_cst_member_ptr): New function.
8206         (compute_cst_member_ptr_arguments): New function.
8207         (ipa_compute_jump_functions): Complete rewrite.
8208         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
8209         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
8210         (struct ipa_member_ptr_cst): New structure.
8211         (union jump_func_value): New field member_cst.
8212         * ipa-cp.c (ipcp_lat_is_insertable): New function.
8213         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
8214         jump function types.
8215         (ipcp_print_all_lattices): Slight fprintf rearrangement.
8216         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
8217         instead of ipcp_print_all_jump_functions.
8218         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
8219         only for replacable scalars.
8220
8221         * doc/invoke.texi (Optimize options): Add description of
8222         -findirect-inlining.
8223         * common.opt (flag_indirect_inlining): New flag.
8224         * opts.c (decode_options): Set flag_indirect_inlining when
8225         optimize >= 3.
8226
8227         * ipa-inline.c: Include ipa-prop.h.
8228         (inline_indirect_intraprocedural_analysis): New function.
8229         (inline_generate_summary): Allocate parameter and argument info
8230         structures, call inline_indirect_intraprocedural_analysis on each
8231         node when doing indirect inlining and deallocate indirect inlining
8232         data structures in the end.
8233         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
8234         (free_all_ipa_structures_after_iinln): New function.
8235         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
8236         done.
8237         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
8238
8239         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
8240         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
8241         of computing the frequency separately.
8242         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
8243         of computing the frequency separately.
8244         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
8245         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
8246         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
8247         (ipa_get_stmt_member_ptr_load_param): New function.
8248         (ipa_is_ssa_with_stmt_def): New function.
8249         (ipa_note_param_call): New function.
8250         (ipa_analyze_call_uses): New function.
8251         (ipa_analyze_stmt_uses): New function.
8252         (ipa_analyze_params_uses): New function.
8253         (ipa_free_node_params_substructures): Also free the param_calls linked
8254         list.
8255         (ipa_node_duplication_hook): Also duplicate the param_calls
8256         linked list.
8257         (ipa_print_node_param_flags): New function.
8258         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
8259         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
8260         * ipa-prop.h (struct ipa_param_flags): New field called.
8261         (struct ipa_param_call_note): New structure.
8262         (struct ipa_node_params): New fields param_calls and
8263         uses_analysis_done.
8264         (ipa_is_ith_param_called): New function.
8265         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
8266         ipa_analyze_params_uses and dump parameter flags.
8267
8268         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
8269         ipa_propagate_indirect_call_infos if performing indirect inlining,
8270         pass a new parameter new_edges to it.
8271         (add_new_edges_to_heap): New fucntion.
8272         (cgraph_decide_inlining_of_small_functions): New vector
8273         new_indirect_edges for newly found indirect edges , call
8274         ipa_propagate_indirect_call_infos after inlining.
8275         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
8276         inlining if performing indirect inlining.  Call
8277         free_all_ipa_structures_after_iinln when doing so too.
8278         (inline_generate_summary): Do not call
8279         free_all_ipa_structures_after_iinln here.
8280         * ipa-prop.c (update_jump_functions_after_inlining): New function.
8281         (print_edge_addition_message): New function.
8282         (update_call_notes_after_inlining): New function.
8283         (propagate_info_to_inlined_callees): New function.
8284         (ipa_propagate_indirect_call_infos): New function.
8285         * ipa-prop.h: Include cgraph.h
8286         (struct ipa_param_call_note): Fields reordered, new field processed.
8287         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
8288         flag indirect_call.
8289         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
8290         rediscovered call statements.
8291         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
8292         (dump_cgraph_node): Dump also the indirect_call flag.
8293         (cgraph_clone_edge): Copy also the indirect_call flag.
8294         * tree-inline.c (copy_bb): Do not check for fndecls from call
8295         expressions, check for edge availability when moving clones.
8296         (get_indirect_callee_fndecl): New function.
8297         (expand_call_inline): If callee declaration is not apprent from
8298         the statement, try calling get_indirect_callee_fndecl.  Do not
8299         issue warnings or call sorry when not inlinings an indirect edge.
8300         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
8301
8302         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
8303         bit more frandly to matching.
8304         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
8305         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
8306         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
8307
8308 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8309
8310         PR 36907
8311         * opth-gen.awk: Suppress function specific features when building
8312         target libraries.
8313         * optc-gen.awk: Ditto.
8314
8315 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8316
8317         PR 35058
8318         * diagnostic.c (pedwarn): Add opt parameter.
8319         (pedwarn0): New.
8320         * c-tree.h (pedwarn_init): Add opt parameter.
8321         (pedwarn_c90): Likewise.
8322         (pedwarn_c99): Likewise.
8323         * c-errors.c (pedwarn_c99): Likewise.
8324         (pedwarn_c90): Likewise.
8325         * toplev.h (pedwarn): Update declaration.
8326         (pedwarn0): Declare.
8327         * c-lex.c: All calls to pedwarn changed.
8328         * builtins.c: All calls to pedwarn changed.
8329         * toplev.c: All calls to pedwarn changed.
8330         * c-decl.c: All calls to pedwarn changed.
8331         * c-typeck.c: All calls to pedwarn changed.
8332         * c-common.c: All calls to pedwarn changed.
8333         * c-parser.c: All calls to pedwarn changed.
8334
8335 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8336             Karthik Kumar  <karthikkumar@gmail.com>
8337
8338         * attribs.c (file scope): Include c-common.h.
8339         (decl_attributes): Add support for #pragma GCC optimize and
8340         #pragma GCC option.
8341
8342         * targhooks.c (default_can_inline_p): New function that is the
8343         default for the TARGET_CAN_INLINE_P target hook.
8344
8345         * targhooks.h (default_can_inline_p): Add declaration.
8346
8347         * tree.c (cl_optimization_node): New static tree for building
8348         OPTIMIZATION_NODE tree.
8349         (cl_target_option_node): New static tree for building
8350         TARGET_OPTION_NODE tree.
8351         (cl_option_hash_table): New hash table for hashing
8352         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8353         (cl_option_hash_hash): New function to provide the hash value for
8354         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8355         (cl_option_hash_eq): New function to provide an equality test for
8356         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
8357         (tree_code_size): Add support for OPTIMIZATION_NODE and
8358         TARGET_OPTION_NODE trees.
8359         (tree_code_structure): Add support for OPTIMIZATION_NODE and
8360         TARGET_OPTION_NODE trees.
8361         (build_optimization_node): Build a tree that has all of the
8362         current optimization options.
8363         (build_target_option_node): Build a tree that has the target
8364         options that might be changed on a per function basis.
8365
8366         * tree.h (file scope): Include options.h.
8367         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
8368         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
8369         (TREE_OPTIMIZATION): Ditto.
8370         (TREE_TARGET_SPECIFIC): Ditto.
8371         (struct tree_function_decl): Add fields for remembering the
8372         current optimization options and target specific options.
8373         (struct tree_optimization_option): New tree variant that remembers
8374         the optimization options.
8375         (struct tree_target_option): New tree variant that remembers the
8376         target specific flags that might change for compiling a particular
8377         function.
8378         (union tree_node): Include tree_optimization_option and
8379         tree_target_option fields.
8380         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
8381         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
8382         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
8383         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
8384         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
8385         optimization and target options.
8386         (optimization_default_node): New macro to refer to global_trees
8387         field.
8388         (optimization_current_node): Ditto.
8389         (optimization_cold_node): Ditto.
8390         (optimization_hot_node): Ditto.
8391         (target_option_default_node): Ditto.
8392         (target_option_current_node): Ditto.
8393         (current_option_pragma): Ditto.
8394         (current_optimize_pragma): Ditto.
8395
8396         * target.h (struct gcc_target): Add valid_option_attribute_p,
8397         target_option_save, target_option_restore, target_option_print,
8398         target_option_pragma_parse, and can_inline_p hooks.
8399
8400         * toplev.h (parse_optimize_options): Add declaration.
8401         (fast_math_flags_struct_set_p): Ditto.
8402
8403         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
8404         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
8405         optimize is used.
8406
8407         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
8408         tree_can_inline_p hook to see if one function can inline another.
8409         (cgraph_decide_inlining): Ditto.
8410         (cgraph_decide_inlining_incrementally): Ditto.
8411
8412         * opts.c (decode_options): Add support for running multiple times
8413         to allow functions with different target or optimization options
8414         than was specified on the command line.
8415         (fast_math_flags_struct_set_p): New function that is similar to
8416         fast_math_flags_set_p, except it uses the values in the
8417         cl_optimization structure instead of global variables.
8418
8419         * optc-gen.awk: Add support for TargetSave to allow a back end to
8420         declare new fields that need to be saved when using function
8421         specific options.  Include flags.h and target.h in the options.c
8422         source.  Add support for Save to indicate which options can be set
8423         for individual functions.  Generate cl_optimize_save,
8424         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
8425         cl_target_option_restore, cl_target_option_print functions to
8426         allow functions to use different optimization or target options.
8427
8428         * opt-functions.awk (var_type_struct): Return the type used for
8429         storing the field in a structure.
8430
8431         * opth-gen.awk: Add support for TargetSave to allow a back end to
8432         declare new fields that need to be saved when using function
8433         specific options.  Add support for Save to indicate which options
8434         can be set for individual functions.  Only generate one extern for
8435         Mask fields.  Generate cl_optimization and cl_target_option
8436         structures to remember optimization and target options.
8437
8438         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
8439         collecting new tree nodes.
8440         (TS_TARGET_OPTION): Ditto.
8441
8442         * c-decl.c (merge_decls): Merge function specific target and
8443         optimization options.
8444
8445         * function.c (invoke_set_current_function_hook): If the function
8446         uses different optimization options, change the global variables
8447         to reflect this.
8448
8449         * coretypes.h (struct cl_optimization): Add forward reference.
8450         (struct cl_target_option): Ditto.
8451
8452         * c-pragma.c (option_stack): New static vector to remember the
8453         current #pragma GCC option stack.
8454         (handle_pragma_option): New function to support #pragma GCC option
8455         to change target options.
8456         (optimize_stack): New static vector to remember the current
8457         #pragma GCC optimize stack.
8458         (handle_pragma_optimize): New function to support #pragma GCC
8459         optimize to change optimization options.
8460         (init_pragma): Add support for #pragma GCC optimize and #pragma
8461         GCC option.
8462
8463         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
8464         optimization options.
8465         (TARGET_OPTION_NODE): New tree code for remembering certain target
8466         options.
8467
8468         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
8469         TARGET_OPTION_NODE trees.
8470
8471         * common.opt (-O): Add Optimization flag.
8472         (-Os): Ditto.
8473         (-fmath-errno): Ditto.
8474         (-falign-functions): Add UInteger flag to make sure flag gets full
8475         int in cl_optimization structure.
8476         (-falign-jumps): Ditto.
8477         (-falign-labels): Ditto.
8478         (-falign-loops): Ditto.
8479         (-fsched-stalled-insns): Ditto.
8480         (-fsched-stalled-insns-dep): Ditto.
8481
8482         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
8483         definition.
8484         (TARGET_OPTION_SAVE): Ditto.
8485         (TARGET_OPTION_RESTORE): Ditto.
8486         (TARGET_OPTION_PRINT): Ditto.
8487         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
8488         (TARGET_CAN_INLINE_P): Ditto.
8489         (TARGET_INITIALIZER): Add new hooks.
8490
8491         * tree-inline.c (tree_can_inline_p): New function to determine
8492         whether one function can inline another.  Check if the functions
8493         use compatible optimization options, and also call the backend
8494         can_inline_p hook.
8495
8496         * tree-inline.h (tree_can_inline_p): Add declaration.
8497
8498         * c-common.c (c_common_attribute): Add support for option and
8499         optimize attributes.
8500         (handle_option_attribute): Add support for the option attribute to
8501         allow the user to specify different target options for compiling a
8502         specific function.
8503         (handle_optimize_attribute): Add support for the optimize
8504         attribute to allow the user to specify different optimization
8505         options for compiling a specific function.
8506         (handle_hot_attribute): Turn on -O3 optimization for this one
8507         function if it isn't the default optimization level.
8508         (handle_cold_attribute): Turn on -Os optimization for this one
8509         function if it insn't the default optimization.
8510         (const_char_p): New const char * typedef.
8511         (optimize_args): New static vector to remember the optimization
8512         arguments.
8513         (parse_optimize_options): New function to set up the optimization
8514         arguments from either the optimize attribute or #pragma GCC optimize.
8515
8516         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
8517         (builtin_define_std): Ditto.
8518
8519         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
8520         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
8521         (x86_64-*-*): Ditto.
8522
8523         * Makefile.in (TREE_H): Add options.h.
8524         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
8525
8526         * doc/extend.texi (option attribute): Document new attribute.
8527         (optimize attribute): Ditto.
8528         (hot attribute): Document hot attribute sets -O3.
8529         (cold attribute): Document cold attribute sets -Os.
8530         (#pragma GCC option): Document new pragma.
8531         (#pragma GCC optimize): Ditto.
8532
8533         * doc/options.texi (TargetSave): Document TargetSave syntax.
8534         (UInteger): Document UInteger must be used for certain flags.
8535         (Save): Document Save option to create target specific options
8536         that can be saved/restored on a function specific context.
8537
8538         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
8539         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
8540
8541         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
8542         (TARGET_OPTION_SAVE): Ditto.
8543         (TARGET_OPTION_RESTORE): Ditto.
8544         (TARGET_OPTION_PRINT): Ditto.
8545         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
8546         (TARGET_CAN_INLINE_P): Ditto.
8547
8548         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
8549         -mfpmath=sse,387.
8550         (-mfpmath=both): Ditto.
8551
8552 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
8553             Karthik Kumar  <karthikkumar@gmail.com>
8554
8555         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
8556         (TARGET_POPCNT): Ditto.
8557         (TARGET_SAHF): Ditto.
8558         (TARGET_AES): Ditto.
8559         (TARGET_PCLMUL): Ditto.
8560         (TARGET_CMPXCHG16B): Ditto.
8561         (TARGET_RECIP): Move switch into target_flags.
8562         (TARGET_FUSED_MADD): Ditto.
8563         (ix86_arch_features): Make an unsigned char type.
8564         (ix86_tune_features): Ditto.
8565         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
8566         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
8567         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
8568
8569         * config/i386/i386.opt (arch): New TargetSave field to define
8570         fields that need to be saved for function specific option support.
8571         (tune): Ditto.
8572         (fpmath): Ditto.
8573         (branch_cost): Ditto.
8574         (ix86_isa_flags_explicit): Ditto.
8575         (tune_defaulted): Ditto.
8576         (arch_specified): Ditto.
8577         (-m128-long-double): Add Save flag to save option for target
8578         specific option support.
8579         (-m80387): Ditto.
8580         (-maccumulate-outgoing-args): Ditto.
8581         (-malign-double): Ditto.
8582         (-malign-stringops): Ditto.
8583         (-mfancy-math-387): Ditto.
8584         (-mhard-float): Ditto.
8585         (-mieee-fp): Ditto.
8586         (-minline-all-stringops): Ditto.
8587         (-minline-stringops-dynamically): Ditto.
8588         (-mms-bitfields): Ditto.
8589         (-mno-align-stringops): Ditto.
8590         (-mno-fancy-math-387): Ditto.
8591         (-mno-push-args): Ditto.
8592         (-mno-red-zone): Ditto.
8593         (-mpush-args): Ditto.
8594         (-mred-zone): Ditto.
8595         (-mrtd): Ditto.
8596         (-msseregparm): Ditto.
8597         (-mstack-arg-probe): Ditto.
8598         (-m32): Ditto.
8599         (-m64): Ditto.
8600         (-mmmx): Ditto.
8601         (-m3dnow): Ditto.
8602         (-m3dnowa): Ditto.
8603         (-msse): Ditto.
8604         (-msse2): Ditto.
8605         (-msse3): Ditto.
8606         (-msse4.1): Ditto.
8607         (-msse4.2): Ditto.
8608         (-msse4): Ditto.
8609         (-mno-sse4): Ditto.
8610         (-msse4a): Ditto.
8611         (-msse5): Ditto.
8612         (-mrecip): Move flag into target_flags.
8613         (-mcld): Ditto.
8614         (-mno-fused-madd): Ditto.
8615         (-mfused-madd): Ditto.
8616         (-mabm): Move flag into ix86_isa_flags.
8617         (-mcx16): Ditto.
8618         (-mpopcnt): Ditto.
8619         (-msahf): Ditto.
8620         (-maes): Ditto.
8621         (-mpclmul): Ditto.
8622
8623         * config/i386/i386-c.c: New file for #pragma support.
8624         (ix86_target_macros_internal): New function to #define or #undef
8625         target macros based when the user uses the #pragma GCC option to
8626         change target options.
8627         (ix86_pragma_option_parse): New function to add #pragma GCC option
8628         support.
8629         (ix86_target_macros): Move defining the target macros here from
8630         TARGET_CPU_CPP_BUILTINS in i386.h.
8631         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
8632         defined, initialize any subtarget #pragmas.
8633
8634         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
8635         REGISTER_TARGET_PRAGMAS.
8636
8637         * config/i386/t-i386: New file for x86 dependencies.
8638         (i386.o): Make dependencies mirror the include files used.
8639         (i386-c.o): New file, add dependencies.
8640
8641         * config/i386/i386-protos.h (override_options): Add bool argument.
8642         (ix86_valid_option_attribute_tree): Add declaration.
8643         (ix86_target_macros): Ditto.
8644         (ix86_register_macros): Ditto.
8645
8646         * config/i386/i386.c (ix86_tune_features): Move initialization of
8647         the target masks to initial_ix86_tune_features to allow functions
8648         to have different target options.  Make type unsigned char,
8649         instead of unsigned int.
8650         (initial_ix86_tune_features): New static vector to hold processor
8651         masks for the tune variables.
8652         (ix86_arch_features): Move initialization of the target masks to
8653         initial_ix86_arch_features to allow functions to have different
8654         target options.  Make type unsigned char, instead of unsigned int.
8655         (initial_ix86_arch_features): New static vector to hold processor
8656         masks for the arch variables.
8657         (enum ix86_function_specific_strings): New enum to describe the
8658         string options used for attribute((option(...))).
8659         (ix86_target_string): New function to return a string that
8660         describes the target options.
8661         (ix86_debug_options): New function to print the current options in
8662         the debugger.
8663         (ix86_function_specific_save): New function hook to save the
8664         function specific global variables in the cl_target_option structure.
8665         (ix86_function_specific_restore): New function hook to restore the
8666         function specific variables from the cl_target_option structure to
8667         the global variables.
8668         (ix86_function_specific_print): New function hook to print the
8669         target specific options in the cl_target_option structure.
8670         (ix86_valid_option_attribute_p): New function hook to validate
8671         attribute((option(...))) arguments.
8672         (ix86_valid_option_attribute_tree): New function that is common
8673         code between attribute((option(...))) and #pragma GCC option
8674         support that parses the options and returns a tree holding the options.
8675         (ix86_valid_option_attribute_inner_p): New helper function for
8676         ix86_valid_option_attribute_tree.
8677         (ix86_can_inline_p): New function hook to decide if one function
8678         can inline another on a target specific basis.
8679         (ix86_set_current_function); New function hook to switch target
8680         options if the user used attribute((option(...))) or #pragma GCC
8681         option.
8682         (ix86_tune_defaulted): Move to static file scope from
8683         override_options.
8684         (ix86_arch_specified): Ditto.
8685         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
8686         ix86_isa_flags.
8687         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
8688         (OPTION_MASK_ISA_ABM_SET): Ditto.
8689         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
8690         (OPTION_MASK_ISA_CX16_SET): Ditto.
8691         (OPTION_MASK_ISA_SAHF_SET): Ditto.
8692         (OPTION_MASK_ISA_AES_UNSET): Ditto.
8693         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
8694         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
8695         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
8696         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
8697         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
8698         (struct ptt): Move to static file scope from override_options.
8699         (processor_target_table): Ditto.
8700         (cpu_names): Ditto.
8701         (ix86_handle_option): Add support for options that are now isa options.
8702         (override_options): Add support for declaring functions that
8703         support different target options than were specified on the
8704         command line.  Move struct ptt, processor_target_table, cpu_names,
8705         ix86_tune_defaulted, ix86_arch_specified to static file scope.
8706         Add bool argument.  Fix up error messages so the appropriate error
8707         is given for either command line or attribute.
8708         (ix86_previous_fndecl): New static to remember previous function
8709         declaration to see if we need to change target options.
8710         (ix86_builtins_isa): New array to record the ISA of each builtin
8711         function.
8712         (def_builtin): Always create the builtin function, even if the
8713         current ISA doesn't support it.
8714         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
8715         tests for those builtins.
8716         (ix86_init_builtins): Remove TARGET_MMX test for calling
8717         ix86_init_mmx_sse_builtins.
8718         (ix86_expand_builtin): If the current ISA doesn't support a given
8719         builtin, signal an error.
8720         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
8721         (TARGET_SET_CURRENT_FUNCTION): Ditto.
8722         (TARGET_OPTION_SAVE): Ditto.
8723         (TARGET_OPTION_RESTORE): Ditto.
8724         (TARGET_OPTION_PRINT): Ditto.
8725         (TARGET_CAN_INLINE_P): Ditto.
8726
8727 2008-07-22  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8728
8729         * c-typeck.c (build_external_ref): Don't call assemble_external.
8730         * final.c (output_operand): Call assemble_external.
8731
8732 2008-07-21  DJ Delorie  <dj@redhat.com>
8733
8734         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
8735         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
8736
8737 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8738
8739         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
8740         original insn and splitter contents into ...
8741         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
8742         flag_unsafe_math_optimizations.  Add dummy scratch register.
8743         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
8744         !flag_unsafe_math_optimizations.  Returns number with next
8745         highest magnitude if this is still less or equal to the true
8746         quotient in magnitude.
8747
8748 2008-07-21  Rafael Ãƒvila de Espíndola  <espindola@google.com>
8749
8750         * Makefile.in: Replace toplev.h with TOPLEV_H.
8751         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
8752         * c-lex.c (fe_file_change): Don't set in_system_header.
8753         * c-parser.c (c_token): Remove in_system_header.
8754         (c_lex_one_token): Don't set in_system_header.
8755         (c_parser_set_source_position_from_token): Don't set in_system_header.
8756         * diagnostic.c (diagnostic_report_diagnostic): Use location from
8757         diagnostic_info.
8758         (warning_at): New.
8759         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
8760         * flags.h (in_system_header): Remove.
8761         * function.c (saved_in_system_header): Remove.
8762         (push_cfun): Don't set in_system_header.
8763         (pop_cfun): Don't set in_system_header.
8764         (push_struct_function): Don't set in_system_header.
8765         * input.h (expanded_location): Add sysp.
8766         (in_system_header_at): New.
8767         (in_system_header): New.
8768         * toplev.c (in_system_header): Remove.
8769         * toplev.h: Include input.h
8770         (warning_at): New.
8771         * tree-cfg.c (execute_warn_function_return): Call warning_at.
8772         * tree-ssa.c (warn_uninit): Call warning_at.
8773         (warn_uninitialized_var): Update calls to warn_uninit.
8774         (warn_uninitialized_phi): Update calls to warn_uninit.
8775         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
8776         (expand_location): Initialize xloc.sysp.
8777         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
8778         (tree_decl_with_vis): Remove in_system_header_flag.
8779
8780 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
8781
8782         PR target/36822
8783         * recog.c (asm_operand_ok): Change the order of the extra
8784         memory constraint checks.
8785
8786 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8787
8788         PR tree-opt/36879
8789         * tree-switch-conversion.c (build_one_array): Call
8790         varpool_mark_needed_node and varpool_finalize_decl
8791         instead of assemble_variable.
8792
8793 2008-07-19  Jan Hubicka  <jh@suse.cz>
8794
8795         * cgraph.c (cgraph_add_new_function): Do early local passes.
8796         * tree-nrv.c (gate_pass_return_slot): New gate.
8797         (pass_nrv): Add the gate.
8798         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
8799         functions.
8800         (coalesce_ssa_name): Coalesce SSA names.
8801         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
8802         not optimizing so unused user vars remains visible.
8803         * common.opt (flag_tree_ter): Always enable by default.
8804         * tree-ssa-ter.c: Include flags.h
8805         (is_replaceable_p): Check that locations match; when aliasing
8806         is missing be conservative about loads.
8807         * tree-optimize.c (gate_init_datastructures): Remove.
8808         (pass_init_datastructures): New.
8809         * passes.c: Reorder passes so we always go into SSA.
8810
8811 2008-07-19  Jan Hubicka  <jh@suse.cz>
8812
8813         * doc/extend.texi (flatten attribute): Remove note about
8814         unit-at-a-time.
8815         * doc/invoke.texi (--combine): Likewise.
8816         (-finline-functions-called-once): Update levels when enabled.
8817         (-funit-at-a-time): Document new behaviour.
8818         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
8819         -fno-section-anchors when disabled explicitly.
8820         (inline params): They are not ignored now.
8821         (precompiled headers): Remove unit-at-a-time as being incompatible.
8822         * opts.c (decode_options): Handle unit-at-a-time as alias;
8823         imply -fno-section-anchors when toplevel reorder is disabled
8824         explicitly.
8825         * common.opt (ftoplevel-reorder): Set default value to 2.
8826         (funit-at-a-time): Set default value to 1.
8827         * config/rs6000/rs6000.c (optimization_options): Set section anchors
8828         to 2.
8829
8830 2008-07-19  Jan Hubicka  <jh@suse.cz>
8831
8832         * builtins.c (expand_builtin_int_roundingfn,
8833         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
8834         it is not useful.
8835
8836 2008-07-19  Richard Guenther  <rguenther@suse.de>
8837
8838         PR bootstrap/36864
8839         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
8840         * tree-ssa-sccvn.c (get_constant_value_id): New function.
8841         * tree-ssa-pre.c (get_expr_value_id): For newly created
8842         constant value-ids make sure to add the expression to its
8843         expression-set.
8844
8845 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
8846
8847         PR middle-end/36877
8848         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
8849         return value of the builtin is ignored.
8850
8851 2008-07-19  Olivier Hainque  <hainque@adacore.com>
8852
8853         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
8854         bits, a C conformant malloc implementation has to provide.
8855         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
8856
8857 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
8858
8859         PR target/36780
8860         PR target/36827
8861         * reload.c (find_reloads_subreg_address): Only reload address if
8862         reloaded == 0, not for reloaded != 1.
8863
8864         Revert:
8865         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
8866         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
8867         (m32c_legitimate_address_p): Handle "++rii" addresses created by
8868         m32c_legitimize_reload_address.
8869
8870         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
8871         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
8872         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
8873
8874 2008-07-19  Olivier Hainque  <hainque@adacore.com>
8875
8876         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
8877         argument, saying whether nested array are to be collapsed
8878         into a single array type DIE with multiple subscripts.
8879         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
8880         issues, centralize the nested array types collapsing control and
8881         disable the transformation for Ada.
8882
8883 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
8884
8885         PR target/36786
8886         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
8887         x86_64_shift_adj.
8888         (x86_64_shift_adj_2): New expander.
8889         (x86_64_shift_adj_3): Ditto.
8890         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
8891         to split TImode operands.
8892         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
8893         (ix86_split_lshr): Ditto.
8894
8895 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
8896
8897         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
8898         and __CHAR32_TYPE__.
8899         * c-typeck.c (digest_init): Support char16_t and char32_t.
8900         (set_nonincremental_init_from_string): Idem.
8901
8902 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
8903
8904         PR middle-end/36859
8905         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
8906         PREFERRED_STACK_BOUNDARY.
8907         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
8908
8909 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
8910
8911         PR middle-end/36858
8912         * function.c (locate_and_pad_parm): Cap boundary earlier.
8913
8914 2008-07-17  Julian Brown  <julian@codesourcery.com>
8915
8916         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
8917         no-op for targets which don't use DLLs.
8918
8919 2008-07-17  Martin Jambor  <mjambor@suse.cz>
8920
8921         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
8922         that nodes are relevant by examining the node->analyzed flag.
8923         (ipcp_init_stage): Check which nodes are relevant, assert that the
8924         relevant ones are also required.
8925         (ipcp_propagate_stage): Check on the side arrays are properly
8926         allocated.
8927         (ipcp_print_all_jump_functions): Make sure not to touch any node
8928         that is not analyzed or an edge that does not have a corresponding
8929         entry in the on-the-side vectors.
8930         (ipcp_function_scale_print): Likewise.
8931         (ipcp_update_callgraph): Check that the node is relevant.
8932         (ipcp_insert_stage): Check that the node is relevant.  Check there is
8933         an info for every node and edge.
8934         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
8935         (ipa_print_all_tree_maps): Likewise and a new variable info.
8936         (ipa_print_all_params_modified): Likewise.
8937         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
8938
8939 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
8940
8941         PR target/25343
8942         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
8943
8944 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
8945
8946         PR rtl-optimization/36753
8947         * fwprop.c (use_killed_between): Don't shortcut
8948         single-definition global registers.
8949
8950 2008-07-16  Jan Hubicka  <jh@suse.cz>
8951
8952         * cgraph.h (varpool_empty_needed_queue): Declare.
8953         * cgraphunit.c (output_in_order): Mark all variables as needed;
8954         empty the queue.
8955         * varpool.c (varpool_assemble_node): Update debug queue.
8956         (varpool_assemble_pending_decls): Don't do it here.
8957         (varpool_empty_needed_queue):  New function.
8958
8959 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8960
8961         * recog.c (peephole2_optimize): Fix formatting.
8962
8963 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8964
8965         * c-pch.c (get_ident): Avoid C++ keywords.
8966         * combine-stack-adj.c (single_set_for_csa): Likewise.
8967         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
8968         output_asm_insn): Likewise.
8969         * reload.c (push_secondary_reload, find_reusable_reload,
8970         push_reload, combine_reloads, find_reloads,
8971         debug_reload_to_stream): Likewise.
8972         * reload.h (struct reload): Likewise.
8973         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
8974         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
8975         emit_output_reload_insns): Likewise.
8976         * targhooks.c (default_secondary_reload): Likewise.
8977         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
8978
8979 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8980
8981         * recog.c (validate_change_1, validate_change,
8982         validate_unshare_change, validate_replace_rtx_1, struct
8983         funny_match, constrain_operands, peephole2_optimize): Avoid C++
8984         keywords.
8985         * reload.c (push_secondary_reload, secondary_reload_class,
8986         scratch_reload_class, find_valid_class, find_reusable_reload,
8987         push_reload, find_dummy_reload, find_reloads_address_1,
8988         find_reloads_address_part, find_equiv_reg): Likewise.
8989         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
8990         choose_reload_regs): Likewise.
8991         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
8992         Likewise.
8993         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
8994         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
8995         * sched-rgn.c (concat_INSN_LIST): Likewise.
8996         * stor-layout.c (mode_for_size, mode_for_size_tree,
8997         smallest_mode_for_size): Likewise.
8998
8999 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9000
9001         * cfg.c (dump_reg_info): Avoid C++ keywords.
9002         * dwarf2asm.c (dw2_force_const_mem,
9003         dw2_asm_output_encoded_addr_rtx): Likewise.
9004         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
9005         * expmed.c (expand_shift): Likewise.
9006         * global.c (find_reg): Likewise.
9007         * graph.c (draw_edge): Likewise.
9008         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
9009         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
9010         widen_clz, widen_bswap, expand_parity, expand_unop,
9011         emit_cmp_and_jump_insn_1): Likewise.
9012         * postreload.c (reload_cse_simplify_operands): Likewise.
9013         * ra.h (add_neighbor): Likewise.
9014         * reg-stack.c (remove_regno_note, change_stack): Likewise.
9015         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
9016         record_reg_classes, copy_cost, record_address_regs,
9017         invalid_mode_change_p): Likewise.
9018         * regrename.c (regrename_optimize, scan_rtx_reg,
9019         dump_def_use_chain, find_oldest_value_reg,
9020         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
9021
9022 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
9023
9024         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
9025         MASK_POWERPC64 for power4 in previous commit.
9026
9027 2008-07-16  Olivier Hainque  <hainque@adacore.com>
9028
9029         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
9030         instead of bare conversion to cast const-ness away.
9031
9032 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
9033
9034         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
9035         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
9036         * config/xtensa/xtensa.c (xtensa_function_value): New function.
9037         (TARGET_FUNCTION_VALUE): Define.
9038
9039 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
9040
9041         * config/rs6000/rs6000.c (processor_target_table): Add
9042         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
9043
9044 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
9045
9046         PR target/36827
9047         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
9048         (m32c_legitimate_address_p): Handle "++rii" addresses created by
9049         m32c_legitimize_reload_address.
9050
9051 2007-07-16  Rafael Ãƒvila de Espíndola  <espindola@google.com>
9052
9053         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
9054         DECL_IN_SYSTEM_HEADER in sync.
9055
9056 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
9057
9058         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
9059         * tree-ssa-pre.c (pre_expr_eq): Ditto
9060         (get_constant_for_value_id): Take a type as an argument.
9061         (fully_constant_expression): Pass in type.
9062         (find_or_generate_expression): Short circuit constant case.
9063         (create_expression_by_pieces): Remove special casing of
9064         pointer_plus.
9065         (do_regular_insertion): Short circuit constant case.
9066         (do_partial_partial_insertion): Ditto.
9067
9068 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
9069
9070         PR target/36782
9071         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
9072
9073 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
9074
9075         * config/xtensa/libgcc-xtensa.ver: New file.
9076         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
9077
9078 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9079
9080         * df-problems.c (df_set_note): Avoid C++ keywords.
9081         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
9082         * dse.c (record_store, remove_useless_values): Likewise.
9083         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
9084         gen_reg_rtx_offset, operand_subword, change_address_1,
9085         change_address, adjust_address_1, offset_address,
9086         widen_memory_access, emit_copy_of_insn_after): Likewise.
9087         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
9088         * fwprop.c (should_replace_address, propagate_rtx_1,
9089         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
9090         Likewise.
9091         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
9092         gcse_emit_move_after, update_ld_motion_stores): Likewise.
9093         * lcm.c (compute_insert_delete, pre_edge_lcm,
9094         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
9095         * lower-subreg.c (resolve_reg_notes): Likewise.
9096         * mode-switching.c (optimize_mode_switching): Likewise.
9097
9098 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9099
9100         * bt-load.c (add_btr_def, migrate_btr_def,
9101         branch_target_load_optimize): Avoid C++ keywords.
9102         * caller-save.c (insert_restore, insert_save, insert_one_insn):
9103         Likewise.
9104         * combine.c (subst, simplify_set, make_extraction,
9105         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
9106         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
9107         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
9108
9109 2008-07-15  Richard Guenther  <rguenther@suse.de>
9110
9111         PR middle-end/36369
9112         * c-common.c (strict_aliasing_warning): Do not warn for
9113         TYPE_REF_CAN_ALIAS_ALL pointers.
9114         (c_common_get_alias_set): may_alias types are not special.
9115         * tree.c (build_pointer_type_for_mode): Look up the may_alias
9116         attribute and set can_ref_all accordingly.
9117         (build_reference_type_for_mode): Likewise.
9118         * doc/extend.texi (may_alias): Clarify.
9119
9120 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
9121
9122         PR target/36780
9123         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
9124         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
9125
9126 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9127
9128         PR target/31568
9129         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
9130         gcc_assert, instead call output_operand_lossage.
9131
9132 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
9133
9134         * builtins.c (std_canonical_va_list): Treat structure based
9135         va_list types.
9136
9137 2008-07-15  Ben Elliston  <bje@au.ibm.com>
9138
9139         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
9140
9141 2007-07-14  Rafael Ãƒvila de Espíndola  <espindola@google.com>
9142
9143         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
9144         is set.
9145
9146 2008-07-14  Jan Hubicka  <jh@suse.cz>
9147
9148         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
9149         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
9150         fix predicates and constraints.
9151         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
9152         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
9153
9154 2008-07-14  Doug Kwan  <dougkwan@google.com>
9155
9156         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
9157         additional option file arm/eabi.opt.
9158         * config/arm/eabi.h (File): New configuration file for EABI targets.
9159         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
9160         SUBSUBTARGET_EXTRA_SPECS.
9161         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
9162         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
9163         from STARTFILE_SPEC so that it can be referenced in an override.
9164         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
9165         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
9166         can be referenced in an override.
9167         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
9168         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
9169         so that it can be referenced in an override.
9170         (LINK_SPEC): Use BPABI_LINK_SPEC.
9171         * config/arm/eabi.opt (File): New.
9172
9173 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9174
9175         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
9176         (FIXED_VALUE_H): New variable.
9177         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
9178         input.h, fixed-value.h.
9179         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
9180         (BASIC_BLOCK_H): Use $(BITMAP_H).
9181         (FUNCTION_H): Add varray.h.
9182         (IPA_REFERENCE_H): Use $(BITMAP_H).
9183         (CGRAPH_H): Add $(BASIC_BLOCK_H).
9184         (DF_H): Use $(BITMAP_H).
9185         (GGC_H): Add statistics.h.
9186         (INSN_ADDR_H): New.
9187         (INSN_ATTR_H): Use it.
9188         (SYSTEM_H): Add safe-ctype.h, filenames.h.
9189         (INPUT_H): New.
9190         (SYMTAB_H): Add $(OBSTACK_H).
9191         (CPP_INTERNAL_H): New.
9192         (TREE_DUMP_H): Add tree-pass.h.
9193         (TREE_FLOW_H): Use $(BITMAP_H)
9194         (PRETTY_PRINT_H): Use $(INPUT_H).
9195         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
9196         (GSTAB_H): New.
9197         (BITMAP_H): New.
9198         (many object files): Fix lots of header dependencies throughout.
9199
9200 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9201
9202         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
9203         New macros.
9204         (s-gtyp-input): Use them to write tmp-gi.list.
9205         (echo_to_gi.list): Remove.
9206
9207 2008-07-14  Richard Guenther  <rguenther@suse.de>
9208
9209         * tree-ssa-sccvn.c (pre_info): Remove.
9210         (switch_to_PRE_table): Likewise.
9211         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
9212         (set_hashtable_value_ids): Do not create value-ids for the
9213         optimistic tables.
9214         (run_scc_vn): Remove double test.  Remove bogus special-case
9215         in value-number printing.
9216         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
9217         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
9218         SSA_NAME_VALUE.
9219         * tree-flow-inline.h (get_value_handle): Remove.
9220         * tree-flow.h (get_value_handle): Remove.
9221
9222 2008-07-14  Martin Jambor  <mjambor@suse.cz>
9223
9224         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
9225         in which we generate arithmetics is not a subrange.
9226
9227 2008-07-14  Martin Jambor  <mjambor@suse.cz>
9228
9229         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
9230
9231 2008-07-14  Richard Guenther  <rguenther@suse.de>
9232
9233         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
9234
9235 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
9236
9237         PR target/36745
9238         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
9239         reload for symbol refs moved to r0 with -fPIC.
9240         (legitimize_pic_address): Use the target register as temporary
9241         reg if possible.
9242         (emit_symbolic_move): Adjust comment.
9243         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
9244         New expanders.
9245
9246 2008-07-14  Ben Elliston  <bje@au.ibm.com>
9247
9248         * c-common.h (C_CPP_HASHNODE): New macro.
9249         * coretypes.h (struct cpp_token): Forward declare.
9250         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
9251         the context-sensitive keyword method.
9252         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
9253         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
9254         expand_bool_pixel): New.
9255         (altivec_categorize_keyword): New function.
9256         (init_vector_keywords): New function.
9257         (rs6000_macro_to_expand): Likewise.
9258         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
9259         compiling an ISO C dialect.
9260
9261 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
9262
9263         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
9264         (create_expression_by_pieces): Fix typo.
9265         (do_regular_insertion): Use debug counter here too.
9266
9267 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
9268
9269         PR target/35492.
9270         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
9271         CONST_OK_FOR_LETTER_P.  All port-local users changed.
9272         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
9273         implement Kp matching power-of-two.
9274         (CONSTRAINT_LEN): Define to match.
9275         * config/cris/cris.md: Replace all use of constraint K with Kc.
9276         ("*btst*): Use Kp for operand 0 of last alternative.
9277
9278 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9279
9280         PR testsuite/36440
9281         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
9282         and quad formats.
9283
9284 2008-07-13  Jan Hubicka  <jh@suse.cz>
9285
9286         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
9287         to be mangled too.
9288
9289 2008-07-13  Richard Guenther  <rguenther@suse.de>
9290
9291         PR middle-end/36811
9292         * langhooks.c (lhd_print_error_function): Deal with recursive
9293         BLOCK trees.
9294
9295 2008-07-12  Jan Hubicka  <jh@suse.cz>
9296
9297         * cgraph.c (assembler_name_hash): New static var.
9298         (hash_node_by_assembler_name, eq_assembler_name): New.
9299         (cgraph_node_for_asm): Use hashtable.
9300         (cgraph_remove_node): Maintain hashtable.
9301         (change_decl_assembler_name): Sanity check that names are not changing
9302         after aliasing was processed.
9303         * cgraph.h (varpoon_node): Add next GGC marker.
9304         * tree.c (decl_assembler_name_equal): Constify.
9305         (decl_assembler_name_hash): New.
9306         * tree.h (decl_assembler_name_equal): Constify.
9307         (decl_assembler_name_hash): Update.
9308
9309 2008-07-12  David Daney  <ddaney@avtrex.com>
9310
9311         * config/mips/driver-native.c (host_detect_local_cpu): Handle
9312         sb1 and r5000 cpus.
9313
9314 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
9315
9316         * doc/md.texi: Document the MIPS "v" constraint.
9317         * config/mips/mips.h (reg_class): Revert last change.
9318         (REG_CLASS_NAMES): Likewise.
9319         (REG_CLASS_CONTENTS): Likewise.
9320         * config/mips/mips.c (mips_regno_to_class): Likewise.
9321         * config/mips/constraints.md (v): Likewise, but add documentation.
9322         Add a comment to say that this constraint should not be used in
9323         gcc code.
9324
9325 2008-07-11  DJ Delorie  <dj@redhat.com>
9326
9327         * config/h8300/h8300.md (length): Fix branch offset limit.
9328
9329 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
9330
9331         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
9332         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
9333         (avr_hard_regno_scratch_ok): New function.
9334         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
9335         * config/avr/avr.md (all peepholes that request a scratch register):
9336         Remove avr_peep2_scratch_safe use.
9337
9338 2008-07-11  Tom Tromey  <tromey@redhat.com>
9339             Ian Lance Taylor  <iant@google.com>
9340
9341         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
9342         (struct c_common_resword): Define.
9343         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
9344         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
9345         (c_common_reswords, num_c_common_reswords): Declare.
9346         * c-common.c (c_common_reswords): New global const array.
9347         (num_c_common_reswords): New const int.
9348         * c-parser.c (struct resword, reswords): Don't define.
9349         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
9350         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
9351         than reswords.  If warning about C++ keywords, give them a special
9352         RID code.
9353         (c_lex_one_token): Warn about C++ keywords.  Call
9354         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
9355         (c_parser_external_declaration): Look for RID_xxx rather than
9356         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
9357         (c_parser_statement_after_labels): Likewise.
9358         (c_parser_objc_class_instance_variables): Likewise.
9359         (c_parser_objc_class_declaration): Likewise.
9360         (c_parser_objc_try_catch_statement): Likewise.
9361         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
9362         (declspecs_add_type): Likewise.
9363
9364 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
9365
9366         * ggc-page.c (alloc_page):
9367         Substituting xmalloc, xcalloc with
9368         XNEWVEC and XCNEWVAR macros which add the
9369         needed casts.
9370
9371 2008-07-11  Richard Guenther  <rguenther@suse.de>
9372
9373         PR tree-optimization/36765
9374         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
9375         aliases from HEAP vars to SMTs.
9376
9377 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9378
9379         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
9380         * configure.ac (loose_warn): Move -Wc++-compat from here...
9381         (strict_warn): ...to here.
9382         * configure: Regenerate.
9383
9384 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
9385
9386         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
9387         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
9388         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
9389         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
9390         excluding more specific h8300-*-* and sh-*-* targets.
9391
9392 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
9393
9394         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
9395         (eliminate): Ditto.
9396         (execute_pre): Call loop_optimizer_finalize in early exit.
9397
9398 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
9399
9400         PR middle-end/36790
9401         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
9402         uids in the bitmap, not just VAR_DECL uids.
9403
9404         PR rtl-optimization/36419
9405         * combine-stack-adj.c (adjust_frame_related_expr): New function.
9406         (combine_stack_adjustments_for_block): Call it if needed.  Delete
9407         correct insn.
9408         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
9409         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
9410         prologue sp adjustment.
9411
9412 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
9413
9414         PR other/28322
9415         * opts.c (print_ignored_options): Report postponed diagnostics for
9416         unknown -Wno-* options as warnings, not errors.
9417         (postpone_unknown_option_error): Renamed to...
9418         (postpone_unknown_option_warning): ... this.
9419
9420 2008-07-09  Doug Kwan  <dougkwan@google.com>
9421
9422         Revert:
9423         2008-07-08  Doug Kwan  <dougkwan@google.com>
9424
9425         * config/arm/arm.opt (mandroid): New option.
9426         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
9427         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
9428         (CC1_SPEC): Same.
9429         (CC1PLUS_SPEC): Same.
9430         (LIB_SPEC): Same.
9431         (STARTFILE_SPEC): Same.
9432         (ENDFILE_SPEC): Same.
9433         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
9434         used.
9435
9436 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
9437
9438         PR target/35802
9439         * config/mips/mips.h (reg_class): Remove V1_REG.
9440         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
9441         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
9442         instead of V1_REGS.
9443         (mips_get_tp): New function.
9444         (mips_legitimize_tls_address): Use it.
9445         * config/mips/constraints.md (v): Delete.
9446         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
9447         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
9448         After reload, split into a move and ...
9449         (*tls_get_tp_<mode>_split): ...this new instruction.
9450
9451 2008-07-09  David Daney  <ddaney@avtrex.com>
9452
9453         * config/mips/driver-native.c: Include coretypes.h and tm.h.
9454
9455 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
9456
9457         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
9458         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
9459         Add c argument.
9460         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
9461         htab_delete should be called.  Don't free c.
9462         (lookup_tmp_var): Create temp_htab lazily.
9463         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
9464         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
9465         callers.
9466         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
9467         lower_omp_ordered, lower_omp_critical, lower_omp_for,
9468         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
9469         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
9470         * tree-sra.c (generate_element_init): Likewise.
9471         * tree-mudflap.c (execute_mudflap_function_ops,
9472         execute_mudflap_function_decls): Likewise.
9473         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
9474         * tree-gimple.h (struct gimplify_ctx): New type.
9475         (push_gimplify_context): Adjust prototype.
9476
9477 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
9478
9479         * tree-ssa-pre.c (phi_translate_1): Update placement of
9480         add_to_value calls.
9481
9482 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
9483
9484         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
9485         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
9486         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
9487         * targhooks.c (default_hard_regno_scratch_ok): New function.
9488         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
9489         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
9490         * recog.c:  Include "target.h".
9491         (peep2_find_free_register): Add check for global regs. Add target
9492         specific check.
9493         * Makefile.in (recog.o): Depend on target.h.
9494
9495 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
9496
9497         * config/sh/sh.c (sh_canonical_va_list_type): New.
9498         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
9499
9500 2008-07-09  Raksit Ashok <raksit@google.com>
9501
9502         * doc/invoke.texi (Option Summary): Mention new option
9503         -Wdisallowed-function-list=...
9504         (Warning Options): Document -Wdisallowed-function-list=...
9505         * common.opt (Wdisallowed-function-list=): New flag.
9506         * flags.h (warn_disallowed_functions): External definition of new
9507         boolean warning flag.
9508         (warn_if_disallowed_function_p): Declare new function.
9509         * opts.c (warning_disallowed_functions): New static variable.
9510         (warn_disallowed_functions): New boolean warning flag.
9511         (warn_if_disallowed_function_p): New function.
9512         (add_comma_separated_to_vector): Rename
9513         add_instrument_functions_exclude_list to this.
9514         (common_handle_option): Handle new option. Rename calls to
9515         add_instrument_functions_exclude_list into calls to
9516         add_comma_separated_to_vector.
9517         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
9518         based on flag warn_disallowed_functions.
9519
9520 2008-07-09  Christian Bruel  <christian.bruel@st.com>
9521
9522         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
9523          instead of get_attr_length.
9524
9525 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9526
9527         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
9528         keywords.
9529         * genemit.c (gen_insn): Likewise.
9530         * gengtype.c (note_def_vec): Likewise.
9531         * gengtype.h (note_def_vec): Likewise.
9532         * genoutput.c (struct data, output_insn_data, process_template,
9533         gen_expand, gen_split, note_constraint): Likewise.
9534         * genrecog.c (new_decision, add_to_sequence, factor_tests,
9535         make_insn_sequence): Likewise.
9536         * gensupport.c (record_insn_name): Likewise.
9537
9538 2008-07-08  Doug Kwan  <dougkwan@google.com>
9539
9540         * config/arm/arm.opt (mandroid): New option.
9541         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
9542         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
9543         (CC1_SPEC): Same.
9544         (CC1PLUS_SPEC): Same.
9545         (LIB_SPEC): Same.
9546         (STARTFILE_SPEC): Same.
9547         (ENDFILE_SPEC): Same.
9548         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
9549         used.
9550
9551 2008-07-08  Raksit Ashok  <raksit@google.com>
9552
9553         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
9554         (set_storage_via_setmem): Fix expected_align parameter.
9555         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
9556         missing from the list.
9557         * doc/md.texi (movmem): Explicitly state that expected alignment is
9558         to be expressed in bytes.
9559         (setmem): Explicitly state that expected alignment is to be expressed
9560         in bytes.
9561
9562 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
9563
9564         * reload.c (find_reloads_subreg_address): Do not require validity
9565         of address in original mode before reloading address.
9566
9567 2008-07-07  Tianwei Sheng  <tianweis@google.com>
9568
9569         * df-core.c (df_remove_problem): Adjust the access to avoid out of
9570         bounds array access.
9571
9572 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
9573
9574         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
9575
9576 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
9577
9578         Fix PR tree-optimization/23455
9579         Fix PR tree-optimization/35286
9580         Fix PR tree-optimization/35287
9581         * Makefile.in (OBJS-common): Remove tree-vn.o.
9582         (tree-vn.o): Remove.
9583         * dbgcnt.def: Add treepre_insert debug counter.
9584         * gcc/tree-flow.h (add_to_value): Updated for other changes.
9585         (debug_value_expressions): Ditto.
9586         (print_value_expressions): Ditto.
9587         * tree-pretty-print.c (dump_generic_node): Updated for
9588         VALUE_HANDLE removal.
9589         * tree-ssa-dom.c (record_equality): Ditto.
9590         (cprop_operand): Ditto.
9591         (lookup_avail_expr): Ditto.
9592         * tree-ssa-threadedge.c
9593         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
9594         (simplify_control_stmt_condition): Ditto.
9595         * tree.c (tree_code_size): Ditto.
9596         (tree_node_structure): Ditto.
9597         (iterative_hash_expr): Ditto.
9598         * tree.def: Ditto.
9599         * tree.h (VALUE_HANDLE_ID): Ditto.
9600         (VALUE_HANDLE_EXPR_SET): Ditto.
9601         (struct tree_value_handle): Ditto.
9602         (union tree_node): Ditto.
9603         * treestruct.def: Ditto.
9604         * tree-vn.c: Removed.
9605         * tree-ssa-pre.c: Rewritten entirely.
9606         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
9607         (constant_value_ids): Ditto.
9608         (vn_nary_op_t): Moved to header.
9609         (vn_phi_t): Ditto.
9610         (vn_reference_op_t): Ditto
9611         (vn_reference_t): Ditto.
9612         (next_value_id): New variable.
9613         (VN_INFO): Add an assert.
9614         (vn_constant_eq): New function.
9615         (vn_constant_hash): Ditto.
9616         (get_or_alloc_constant_value_id): Ditto.
9617         (value_id_constant_p): Ditto.
9618         (vn_reference_compute_hash): De-staticify.
9619         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
9620         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
9621         (valueize_refs): Update opcode if it changes from ssa name to constant.
9622         (vn_reference_lookup_1): Add new argument.
9623         (vn_reference_lookup):  Ditto.
9624         (vn_reference_lookup_pieces): New function.
9625         (vn_reference_insert): Add return type. Modify to deal with value ids.
9626         (vn_reference_insert_pieces):  New function.
9627         (vn_nary_op_compute_hash): De-staticify.
9628         (vn_nary_op_eq): Ditto.
9629         (vn_nary_op_lookup_pieces): New function.
9630         (vn_nary_op_lookup): Add new argument.
9631         (vn_nary_op_insert_pieces): New function.
9632         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
9633         (vn_phi_insert): Ditto.
9634         (visit_unary_op): Update for callee changes.
9635         (visit_binary_op): Ditto.
9636         (visit_reference_op_load): Ditto.
9637         (visit_reference_op_store): Ditto.
9638         (init_scc_vn): Init next_value_id, constant_to_value_id and
9639         constant_value_ids.
9640         (free_scc_vn): Free them.
9641         (set_hashtable_value_ids): New function.
9642         (run_scc_vn): Use it.
9643         (get_max_value_id): New function.
9644         (get_next_value_id): Ditto.
9645         (expressions_equal_p): Moved from tree-vn.c
9646         (sort_vuses): Ditto.
9647         (sort_vuses_heap): Ditto.
9648         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
9649         above).
9650         * tree.c (iterative_hash_hashval_t): Made non-static
9651         * tree.h (iterative_hash_hashval_t): Declare it.
9652
9653 2008-07-08  Martin Jambor  <mjambor@suse.cz>
9654
9655         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
9656         instead of ipa_create_node_params.
9657         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
9658         ipa_check_create_edge_args, free them with
9659         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
9660
9661         * ipa-prop.c: Include flags.h and tree-inline.h.
9662         (ipa_node_params_vector): New variable.
9663         (ipa_edge_args_vector): New variable.
9664         (edge_removal_hook_holder): New variable.
9665         (node_removal_hook_holder): New variable.
9666         (edge_duplication_hook_holder): New variable.
9667         (node_duplication_hook_holder): New variable.
9668         (ipa_detect_param_modifications): Check for presence of modified flags.
9669         (ipa_compute_jump_functions): Check for presence of jump functions.
9670         (ipa_free_edge_args_substructures): New function.
9671         (ipa_create_node_params): Removed.
9672         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
9673         (ipa_free_node_params_substructures): New function.
9674         (ipa_free_all_node_params): Changed to deallocate the on-the-side
9675         vector.
9676         (ipa_edge_removal_hook): New function.
9677         (ipa_node_removal_hook): New function.
9678         (duplicate_array): New function.
9679         (ipa_edge_duplication_hook): New function.
9680         (ipa_node_duplication_hook): New function.
9681         (ipa_register_cgraph_hooks): New function.
9682         (ipa_unregister_cgraph_hooks): New function.
9683         (free_all_ipa_structures_after_ipa_cp): New function.
9684
9685         * ipa-prop.h: Include vec.h.
9686         (ipa_node_params_t): New typedef with vector types for it.
9687         (ipa_edge_args_t):  New typedef with vector types for it.
9688         (IPA_NODE_REF): Changed to access an on-the-side vector.
9689         (IPA_EDGE_REF): Changed to access an on-the-side vector.
9690         (ipa_check_create_node_params): New function.
9691         (ipa_check_create_edge_args): New function.
9692
9693         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
9694         all users.
9695
9696 2008-07-07  Tom Tromey  <tromey@redhat.com>
9697
9698         * configure, config.in: Rebuilt.
9699         * configure.ac: Don't check for scandir or alphasort.
9700
9701 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
9702
9703         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
9704         types immediately after creating them.
9705
9706 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
9707
9708         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
9709
9710 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
9711
9712         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
9713         dump_constraint_graph.
9714         (dump_constraint_edge): New function.
9715         (dump_constraint_graph): New function.
9716         (debug_constraint_graph): New function.
9717         (dump_constraint): Removed useless comparison.
9718         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
9719         (dump_constraint_graph): Declare.
9720         (debug_constraint_graph): Declare.
9721         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
9722
9723 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
9724
9725         * config/i386/i386.c (is_va_list_char_pointer): New.
9726         (ix86_va_start): Replace compare with ms_va_list_type_node
9727         by is_va_list_char_pointer.
9728         (ix86_gimplify_va_arg): Likewise.
9729
9730 2008-07-07  Martin Jambor  <mjambor@suse.cz>
9731
9732         * cgraph.c (cgraph_edge_max_uid): New variable.
9733         (struct cgraph_edge_hook_list): New type.
9734         (struct cgraph_node_hook_list): New type.
9735         (struct cgraph_2edge_hook_list): New type.
9736         (struct cgraph_2node_hook_list): New type.
9737         (first_cgraph_edge_removal_hook): New variable.
9738         (first_cgraph_node_removal_hook): New variable.
9739         (first_cgraph_edge_duplicated_hook): New variable.
9740         (first_cgraph_node_duplicated_hook): New variable.
9741         (cgraph_add_edge_removal_hook): New function.
9742         (cgraph_remove_edge_removal_hook): New function.
9743         (cgraph_call_edge_removal_hooks):  New function.
9744         (cgraph_add_node_removal_hook):  New function.
9745         (cgraph_remove_node_removal_hook):  New function.
9746         (cgraph_call_node_removal_hooks):  New function.
9747         (cgraph_add_edge_duplication_hook):  New function.
9748         (cgraph_remove_edge_duplication_hook):  New function.
9749         (cgraph_call_edge_duplication_hooks):  New function.
9750         (cgraph_add_node_duplication_hook):  New function.
9751         (cgraph_remove_node_duplication_hook):  New function.
9752         (cgraph_call_node_duplication_hooks):  New function.
9753         (cgraph_create_edge): Assign to edge uid.
9754         (cgraph_remove_edge): Call edge removal hooks.
9755         (cgraph_node_remove_callees): Call edge removal hooks.
9756         (cgraph_node_remove_callers): Call edge removal hooks.
9757         (cgraph_remove_node): Call node removal hooks.
9758         (cgraph_clone_edge): Call edge duplication hooks.
9759         (cgraph_clone_node): Call node duplication hooks.
9760
9761         * cgraph.h (cgraph_edge): New field uid.
9762         (cgraph_edge_hook): New type.
9763         (cgraph_node_hook): New type.
9764         (cgraph_2edge_hook): New type.
9765         (cgraph_2node_hook): New type.
9766
9767 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
9768
9769         * config.in: Regenerate.
9770
9771 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
9772
9773         * gcc.c (print_sysroot): New.
9774         (option_map, display_help, process_command): Handle the
9775         -print-sysroot option.
9776         (main): Print the sysroot if requested.
9777         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
9778
9779 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9780
9781         PR target/34780
9782         * unwind-pe.h (size_of_encoded_value): add attribute unused.
9783
9784 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
9785
9786         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
9787         (assign_parm_setup_block_p): Also check mode of entry_parm.
9788
9789 2008-07-07  Richard Guenther  <rguenther@suse.de>
9790
9791         * tree-ssa-structalias.h (set_used_smts): Remove.
9792         * tree-ssa-structalias.c (used_smts): Likewise.
9793         (set_used_smts): Likewise.
9794         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
9795         call to set_used_smts.
9796
9797 2008-07-07  Richard Guenther  <rguenther@suse.de>
9798
9799         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
9800         (new_var_info): Set it to false.
9801         (solution_set_add): Correctly handle pointers outside a var and
9802         inside a field.
9803         (type_safe): Treat variables with is_full_var properly.
9804         (do_sd_constraint): Likewise.
9805         (do_ds_constraint): Likewise.
9806         (process_constraint): Remove zeroing offset for !use_field_sensitive.
9807         (get_constraint_for_ptr_offset): New function.
9808         (get_constraint_for_component_ref): For addresses at least include
9809         the last field of the variable.  Handle is_full_vars properly.
9810         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
9811         (handle_ptr_arith): Remove.
9812         (find_func_aliases): Simplify assignment handling.
9813         (create_function_info_for): For parameter and result varinfos set
9814         is_full_var flag.
9815         (create_variable_info_for): Set is_full_var flag whenever we
9816         just created a single varinfo for a decl.
9817         (init_alias_vars): Initialize use_field_sensitive from
9818         max-fields-for-field-sensitive parameter.
9819
9820 2008-07-07  Richard Guenther  <rguenther@suse.de>
9821
9822         PR tree-optimization/36713
9823         * tree-flow-inline.h (is_call_used): New function.
9824         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
9825         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
9826         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
9827
9828 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
9829
9830         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
9831
9832 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
9833
9834         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
9835
9836 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
9837             Nathan Sidwell  <nathan@codesourcery.com>
9838
9839         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
9840         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
9841         tmake_file.
9842         * config/m68k/t-linux: New.
9843         * doc/install.texi: Document m68k-*-linux is now multilibbed by
9844         default.
9845
9846 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
9847
9848         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
9849         * config/m68k/m68k-devices.def: Remove multilibs that only differ
9850         by MAC/EMAC.
9851
9852 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9853
9854         * gcc.c (execute): Fix -Wc++-compat warning.
9855
9856 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
9857
9858         PR target/36720
9859         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
9860         constant for little endian.
9861
9862 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
9863
9864         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
9865         mips_base_mips16 instead of TARGET_MIPS16.
9866         (mips_base_mips16): Declare.
9867         * config/mips/mips.c (mips_base_mips16): Make global.
9868         (was_mips16_p): Remove GTY marker.
9869         (was_mips16_pch_p): New variable.
9870         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
9871         (mips_override_options): Force to non-MIPS16 mode initially.
9872         Do not complain about MIPS16 PIC incompatibilities here.
9873         Only allow -mgpopt if -mexplicit-relocs is in force for
9874         non-MIPS16 code.
9875
9876 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
9877
9878         * configure.ac: Check for caddr_t, define to char * if not defined.
9879         * configure: Regenerate.
9880         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
9881         (mmap_gt_pch_use_address): Likewise.
9882         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
9883
9884 2008-07-06  Richard Guenther  <rguenther@suse.de>
9885
9886         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
9887         (new_var_info): Deal with it.
9888         (solution_set_add): Likewise.
9889         (bitpos_of_field): Make signed, fix.
9890         (struct fieldoff): Remove type and decl fields.  Make size field
9891         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
9892         flags.
9893         (fieldoff_compare): Deal with it.
9894         (push_fields_onto_fieldstack): Remove has_union argument, glob
9895         adjacent non-pointer fields together.
9896         (create_function_info_for): Do not set has_union.
9897         (create_variable_info_for): Simplify.
9898
9899 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
9900
9901         * config.gcc (extra_headers): Add cross-stdarg.h for target
9902         x86_64-*-* and i?86-*-*.
9903         * config/i386/cross-stdarg.h: New.
9904         * builtins.c (std_fn_abi_va_list): New.
9905         (std_canonical_va_list_type): New.
9906         (stabilize_va_list): Replace va_list_type_node use by
9907         mtarget.canonical_va_list_type.
9908         (gimplify_va_arg_expr): Likewise.
9909         (expand_builtin_va_copy): Replace va_list_type_node use by
9910         mtarget.fn_abi_va_list.
9911         * tree-sra.c (is_va_list_type): New helper.
9912         (decl_can_be_decomposed_p): Replace
9913         va_list_type_node use by is_va_list_type.
9914         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
9915         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
9916         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
9917         * config/i386/i386-protos.h (ix86_get_valist_type): New.
9918         (ix86_enum_va_list): New.
9919         * config/i386/i386.c (sysv_va_list_type_node): New.
9920         (ms_va_list_type_node): New.
9921         (ix86_function_type_abi): Remove sorry.
9922         (ix86_build_builtin_va_list_abi): New.
9923         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
9924         for 64-bit targets.
9925         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
9926         (ix86_init_builtins_va_builtins_abi): New.
9927         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
9928         for 64-bit targets.
9929         (ix86_handle_abi_attribute): New.
9930         (attribute_spec): Add sysv_abi and ms_abi.
9931         (ix86_fn_abi_va_list): New.
9932         (ix86_canonical_va_list_type): New.
9933         (ix86_enum_va_list): New.
9934         (TARGET_FN_ABI_VA_LIST): New.
9935         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9936         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
9937         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
9938         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9939         (TARGET_ENUM_VA_LIST): New.
9940         * expr.h (std_fn_abi_va_list): New.
9941         (std_canonical_va_list_type): New.
9942         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
9943         (TARGET_CANONICAL_VA_LIST_TYPE): New.
9944         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
9945         TARGET_CANONICAL_VA_LIST_TYPE.
9946         * target.h (struct gcc_target): Add fn_abi_va_list hook
9947         and canonical_va_list_type hook.
9948
9949 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9950
9951         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
9952         integral and pointer types.
9953
9954 2008-07-04  Roger Sayle  <roger@eyesopen.com>
9955
9956         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
9957         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
9958
9959 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
9960
9961         PR target/36684
9962         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
9963
9964 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
9965
9966         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
9967         build_gimple_modify_stmt.
9968         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
9969         gimple operand.  Use fold_build* instead of build*.
9970
9971 2008-07-04  Richard Guenther  <rguenther@suse.de>
9972
9973         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
9974         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
9975         properly to compute the reachability set if we do field-sensitive PTA.
9976         * invoke.texi (max-fields-for-field-sensitive): Document default.
9977         * opts.c (decode_options): Set max-fields-for-field-sensitive to
9978         100 for optimize >= 2.
9979
9980 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9981
9982         * ggc-zone.c (lookup_page_table_if_allocated,
9983         set_page_table_entry, zone_find_object_size, alloc_small_page,
9984         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
9985         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
9986         -Wc++-compat and/or -Wcast-qual warnings.
9987
9988 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
9989
9990         PR target/36634
9991         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
9992         pic_offset_table_rtx to be marked as used here.
9993         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
9994         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
9995         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
9996         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
9997         !TARGET_SECURE_PLT.
9998
9999 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10000
10001         * alloc-pool.c (hash_descriptor, eq_descriptor,
10002         alloc_pool_descriptor): Fix -Wc++-compat warnings.
10003         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
10004         Likewise.
10005         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
10006         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
10007         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
10008         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
10009         Likewise.
10010
10011 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
10012
10013         * tree-flow.h (loop_only_exit_p): Declare.
10014         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
10015         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
10016         the number of iterations if it is constant.  Otherwise, if this is the
10017         only possible exit of the loop, use the conservative estimate on the
10018         number of iterations of the entire loop if available.
10019
10020 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
10021
10022         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
10023         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
10024         Add synchronization functions.
10025         * config/sync.c: New file.
10026         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
10027         (LIBGCC_SYNC_CFLAGS): Likewise.
10028
10029 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
10030
10031         PR target/36710
10032         * config/i386/i386.md (mode): Add TF to "mode" attribute.
10033         (*pushtf_sse): New insn pattern.
10034         (pushtf splitters): New splitters.
10035
10036 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
10037
10038         PR middle-end/35736
10039         * predict.c (build_predict_expr): Use void_type_node for the tree
10040         type, instead of NULL_TREE.
10041
10042 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
10043
10044         * config/i386/i386.c (contains_aligned_value_p): Return true
10045         for TCmode.
10046         (ix86_data_alignment): Align TCmode to 128bits.
10047         (ix86_local_alignment): Likewise.
10048
10049 2008-07-03  Andrew Haley  <aph@redhat.com>
10050
10051         PR bootstrap/33304
10052         * vec.h (VEC_TA): New.
10053         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
10054         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
10055         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
10056         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
10057         (C_COMMON_FIXED_TYPES): Remove first arg.
10058         (C_COMMON_FIXED_MODE_TYPES): Likewise.
10059         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
10060         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
10061         not to use empty macro arguments.
10062
10063 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
10064
10065         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
10066         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
10067         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
10068         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
10069         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
10070         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
10071         config/ia64/crtn.asm, config/m68hc11/larith.asm,
10072         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
10073         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
10074         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
10075         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
10076         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
10077         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
10078         config/rs6000/e500crtres64gpr.asm,
10079         config/rs6000/e500crtres64gprctr.asm,
10080         config/rs6000/e500crtrest32gpr.asm,
10081         config/rs6000/e500crtrest64gpr.asm,
10082         config/rs6000/e500crtresx32gpr.asm,
10083         config/rs6000/e500crtresx64gpr.asm,
10084         config/rs6000/e500crtsav32gpr.asm,
10085         config/rs6000/e500crtsav64gpr.asm,
10086         config/rs6000/e500crtsav64gprctr.asm,
10087         config/rs6000/e500crtsavg32gpr.asm,
10088         config/rs6000/e500crtsavg64gpr.asm,
10089         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
10090         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
10091         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
10092         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
10093         config/sparc/sol2-cn.asm: Remove .file directives.
10094
10095 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
10096
10097         * resource.c (mark_referenced_resources): Look inside
10098         UNSPEC_VOLATILEs and ASM_INPUTs.
10099
10100 2008-07-02  Ian Lance Taylor  <iant@google.com>
10101
10102         * rtlanal.c (add_reg_note): New function.
10103         * rtl.h (add_reg_note): Declare.
10104         * auto-inc-dec.c (attempt_change): Use add_reg_note.
10105         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
10106         * builtins.c (expand_builtin_longjmp): Likewise.
10107         (expand_builtin_nonlocal_goto): Likewise.
10108         * calls.c (emit_call_1, expand_call): Likewise.
10109         * cfgexpand.c (add_reg_br_prob_note): Likewise.
10110         * cfglayout.c (fixup_reorder_chain): Likewise.
10111         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
10112         (commit_one_edge_insertion): Likewise.
10113         * combine.c (move_deaths, distribute_notes): Likewise.
10114         * df-problems.c (df_set_note): Likewise.
10115         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
10116         (set_unique_reg_note): Likewise.
10117         (emit_copy_of_insn_after): Likewise.
10118         * expr.c (expand_expr_real): Likewise.
10119         * gcse.c (add_label_notes): Likewise.
10120         * haifa-sched.c (create_check_block_twin): Likewise.
10121         * jump.c (mark_jump_label_1): Likewise.
10122         * loop-doloop.c (add_test, doloop_modify): Likewise.
10123         * loop-unswitch.c (compare_and_jump_seq): Likewise.
10124         * lower-subreg.c (move_eh_region_note): Likewise.
10125         * optabs.c (emit_libcall_block): Likewise.
10126         * predict.c (predict_insn): Likewise.
10127         (combine_predictions_for_insn): Likewise.
10128         * recog.c (peephole2_optimize): Likewise.
10129         * regmove.c (try_auto_increment): Likewise.
10130         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
10131         * reload.c (find_reloads): Likewise.
10132         * reload1.c (fixup_eh_region_note): Likewise.
10133         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
10134         * reorg.c (delete_prior_computation): Likewise.
10135         (delete_computation, dbr_schedule): Likewise.
10136         * config/pa/pa.c (legitimize_pic_address): Likewise.
10137         * config/sh/sh.c (sh_reorg): Likewise.
10138
10139 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
10140
10141         PR target/36669
10142         * config/libgcc-glibc.ver: Add %exclude.
10143         * config/m32r/libgcc-glibc.ver: Likwise.
10144         * config/s390/libgcc-glibc.ver: Likwise.
10145         * config/sh/libgcc-glibc.ver: Likwise.
10146         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
10147
10148         * config/i386/libgcc-glibc.ver: New.
10149
10150         * config/i386/libgcc-x86_64-glibc.ver: Removed.
10151
10152 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
10153
10154         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
10155         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
10156         i[34567]86-*-linux*, x86_64-*-linux*.  Add
10157         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
10158         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
10159         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
10160         i[34567]86-*-linux*, x86_64-*-linux*.
10161
10162         * libgcc-std.ver: Add empty GCC_4.4.0.
10163
10164         * mkmap-symver.awk: Support multiple versions per symbol.
10165
10166         * config/i386/i386.c (ix86_init_builtins): Always define
10167         __builtin_fabsq and __builtin_copysignq with fallbacks.
10168         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
10169         and __builtin_copysignq if SSE2 isn't available.
10170
10171         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
10172         (LIBGCC2_TF_CEXT): Likwise.
10173         (TF_SIZE): Likwise.
10174
10175         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
10176
10177         * config/i386/sfp-machine.h: Moved to libgcc.
10178
10179         * config/i386/sfp-machine.h: New.
10180         * config/i386/t-linux: Likwise.
10181
10182         * config/i386/t-darwin: Remove softfp_wrap_start and
10183         softfp_wrap_end.
10184         * config/i386/t-darwin64: Likewise.
10185
10186         * config/i386/t-fprules-softfp64: Renamed to ...
10187         * config/i386/t-fprules-softfp: This.
10188
10189         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
10190         and softfp_wrap_end.
10191
10192 2008-07-02  Jason Merrill  <jason@redhat.com>
10193
10194         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
10195
10196         * tree.c (ctor_to_list): New fn.
10197         * tree.h: Declare it.
10198         (CONSTRUCTOR_ELT): New macro.
10199         (CONSTRUCTOR_NELTS): New macro.
10200
10201 2008-07-02  Richard Guenther  <rguenther@suse.de>
10202
10203         * tree-ssa-structalias.c (struct variable_info): Reorder
10204         to fill padding on 64bit hosts.  Make collapsed_to an int.
10205         (get_varinfo_fc): Deal with that.
10206         (new_var_info): Likewise.
10207         (collapse_rest_of_var): Likewise.
10208
10209 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
10210
10211         * doc/install.texi (--enable-java-home): Document.
10212         (--enable-aot-compile-rpm): Likewise.
10213         (--with-arch-directory): Likewise.
10214         (--with-os-directory): Likewise.
10215         (--with-origin-name): Likewise.
10216         (--with-arch-suffix): Likewise.
10217         (--with-jvm-root-dir): Likewise.
10218         (--with-jvm-jar-dir): Likewise.
10219         (--with-python-dir): Likewise.
10220
10221 2008-07-02  Richard Guenther  <rguenther@suse.de>
10222
10223         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
10224         from decls explicitly.  Merge operand checking from tuples.
10225
10226 2008-07-02  Martin Jambor  <mjambor@suse.cz>
10227
10228         * tree-switch-conversion.c: Included timevar.h which I forgot before.
10229
10230 2008-07-02  Martin Jambor  <mjambor@suse.cz>
10231
10232         * tree-switch-conversion.c: Included timevar.h
10233         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
10234
10235         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
10236
10237 2008-07-02  Martin Jambor  <mjambor@suse.cz>
10238
10239         * tree-switch-conversion.c: Corrected various comments and
10240         whitespace issues
10241         (build_constructors): Fixed minor formatting mistakes.
10242
10243         * invoke.texi (Optimize Options): Corrected the
10244         switch-conversion-max-branch-ratio parameter.
10245
10246 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
10247
10248         * final.c (asm_insn_count): Return zero for an empty asm body.
10249
10250 2008-07-02  Richard Guenther  <rguenther@suse.de>
10251
10252         * bitmap.h (bitmap_set_bit): Return bool.
10253         (bitmap_clear_bit): Likewise.
10254         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
10255         write to the bitmap if it would.
10256         (bitmap_clear_bit): Likewise.
10257         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
10258         bitmap_set_bit return value.
10259         (add_pred_graph_edge): Likewise.
10260         (add_graph_edge): Likewise.
10261         (do_sd_constraint): Likewise.
10262         (do_ds_constraint): Likewise.
10263
10264 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10265
10266         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
10267         Fix -Wc++-compat and/or -Wcast-qual warnings.
10268         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
10269         gen_regparm_prefix): Likewise.
10270         * vmsdbgout.c (write_modbeg, lookup_filename,
10271         vmsdbgout_source_line, vmsdbgout_init): Likewise.
10272
10273 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
10274
10275         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
10276         defaults.h definition apply.
10277
10278 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
10279
10280         * function.c (assign_parm_remove_parallels): New.
10281         (assign_parm_setup_block_p): Do not return true for non-BLKmode
10282         PARALLELs.
10283         (assign_parm_setup_block): Do not handle them.
10284         (assign_parm_setup_reg, assign_parm_setup_stack): Call
10285         assign_parm_remove_parallels.
10286
10287 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
10288
10289         * c-typeck.c (convert_for_assignment): Use
10290         vector_targets_convertible_p.
10291         * c-common.c (vector_targets_convertible_p): New.
10292         * c-common.h (vector_targets_convertible_p): New prototype.
10293         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
10294         opaque_p_V2SI_type_node.
10295
10296 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
10297
10298         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
10299         RFmode constants.
10300
10301 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
10302
10303         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
10304         TFmode constants via two element DImode vector for hosts with
10305         HOST_BITS_PER_WIDE_INT < 64.
10306         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
10307         also for HOST_BITS_PER_WIDE_INT < 64.
10308
10309 2008-07-01  Richard Guenther  <rguenther@suse.de>
10310
10311         PR tree-optimization/36666
10312         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
10313         (get_constraint_exp_from_ssa_var): Split into ...
10314         (get_constraint_exp_for_temp): ... this ...
10315         (get_constraint_for_ssa_var): ... and that.
10316         Return constraint expressions for all touched sub-fields
10317         if the results address is not taken.
10318         (process_constraint): Remove assertion that aggregate
10319         assignments do not happen at this place.
10320         (get_constraint_for_component_ref): Add address_p argument.
10321         Return constraint expressions for all touched sub-fields
10322         if the results address is not taken.
10323         (do_deref): Use get_constraint_exp_for_temp.
10324         (get_constraint_for_1): Rename from ...
10325         (get_constraint_for): ... this.  Add the old function as wrapper.
10326         (do_structure_copy): Use get_constraint_for_1.
10327
10328 2008-07-01  Martin Jambor  <mjambor@suse.cz>
10329
10330         * Makefile.in (tree-switch-conversion.o): Add.
10331         (OBJS-common): Add tree-swtch-conversion.o.
10332         * passes.c (init_optimization_passes): Add pass_convert_switch.
10333         * tree-pass.h: (pass_convert_switch): Add.
10334         * tree-switch-conversion.c: New file.
10335         * gcc.dg/tree-ssa/cswtch.c: New testcase.
10336         * common.opt (ftree-cswtch): New option.
10337         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
10338         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
10339         * opts.c (decode_options): Set flag_tree_switch_conversion when
10340         optimization level is >= 2.
10341         * doc/invoke.texi (Optimize Options): Added description of
10342         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
10343
10344 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10345
10346         * config/darwin-driver.c (darwin_default_min_version): Fix
10347         -Wc++-compat warnings.
10348
10349 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
10350
10351         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
10352         of operand 0.
10353
10354 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
10355
10356         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
10357
10358 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
10359
10360         PR rtl-optimization/34744
10361         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
10362         (df_scan_free_internal): Free data structures not
10363         allocated in storage pools.
10364         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
10365         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
10366         df_scan_free_mws_vec.
10367         * dse.c (dse_step6): Free offset_map_p and offset_map_n
10368         unconditionally.
10369
10370 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
10371
10372         * config/i386/i386.c (contains_aligned_value_p): Return true
10373         for __float128.
10374         (ix86_function_arg_boundary): Return its natural boundary
10375         for __float128.
10376         (return_in_memory_32): Don't check TDmode.
10377         (ix86_split_to_parts): Support splitting into 4 parts and
10378         support TFmode for 32bit target.
10379         (ix86_split_long_move): Support splitting into 4 parts.
10380         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
10381         for SSE2.
10382         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
10383         (ix86_init_builtins): Here.
10384         (ix86_scalar_mode_supported_p): Always return true for TFmode.
10385         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
10386         'q' and 'w', respectively.
10387
10388         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
10389         TARGET_64BIT.
10390         (movtf_internal): Likewise.
10391         (<code>tf2): Likewise.
10392         (*absnegtf2_sse): Likewise.
10393         (copysign<mode>3): Likewise.
10394         (copysign<mode>3_const): Likewise.
10395         (copysign<mode>3_var): Likewise.
10396         (define_split UNSPEC_COPYSIGN): Likewise.
10397         * config/i386/sse.md (*nandtf3): Likewise.
10398         (<code>tf3): Likewise.
10399         (*<code>tf3): Likewise.
10400
10401 2008-06-30  Joey Ye  <joey.ye@intel.com>
10402             H.J. Lu  <hongjiu.lu@intel.com>
10403
10404         * global.c (compute_regsets): Set frame_pointer_needed here.
10405         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
10406
10407 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
10408
10409         * doc/install.texi (specific): Expand Windows build notes.
10410
10411 2008-06-30  Ira Rosen  <irar@il.ibm.com>
10412
10413         PR tree-optimization/36648
10414         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
10415         number of prolog iterations by step. Fix the comment.
10416
10417 2008-06-30  Richard Guenther  <rguenther@suse.de>
10418
10419         PR middle-end/36671
10420         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
10421         handle calls from ECF_MALLOC functions.
10422         (handle_pure_call): ECF_MALLOC functions do not return
10423         call-used memory.
10424         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
10425
10426 2008-06-29  Andreas Schwab  <schwab@suse.de>
10427
10428         * config/m68k/m68k.c (print_operand): Always print a float
10429         constant in hex.
10430         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
10431         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
10432         Remove macros.
10433
10434         * config/rs6000/x-linux64: Remove never used file.
10435
10436 2008-06-29  Richard Guenther  <rguenther@suse.de>
10437
10438         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
10439         prototype.
10440         (struct alias_info): Move ...
10441         * tree-ssa-alias.c: ... here.
10442         (update_alias_info): Declare.
10443         (compute_may_aliases): Call it.
10444         (update_alias_info): New function.
10445         * tree-ssa-structalias.c (update_alias_info): Move ...
10446         * tree-ssa-alias.c (update_alias_info_1): ... here.
10447         * tree-ssa-structalias.c (process_constraint_1): Remove
10448         unused from_call argument.  Rename to ...
10449         (process_constraint): ... this.  Delete old wrapper.
10450         (make_constraint_to): Adjust callers.
10451         (handle_const_call): Likewise.
10452         (handle_pure_call): Likewise.
10453         (init_base_vars): Likewise.
10454         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
10455         (find_func_aliases): We don't need structure copies for
10456         complex types.
10457         (make_constraint_from_anything): Remove.
10458         (create_variable_info_for): For globals make constraints
10459         from escaped, not from anything.
10460         (compute_points_to_sets): Do not call update_alias_info.
10461         (ipa_pta_execute): Use make_constraint_from.
10462
10463 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10464
10465         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
10466         (bitmap.o-warn, dominance.o-warn): New.
10467         * configure.ac (cxx_compat_warn): Delete.
10468         (loose_warn): Add -Wcast-qual and -Wc++-compat.
10469         * system.h: Remove #pragma diagnostic for -Wcast-qual and
10470         -Wc++-compat.
10471         * configure: Regenerate.
10472
10473         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
10474         warnings.
10475
10476 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10477
10478         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
10479         * df-scan.c (df_notes_rescan): Likewise.
10480         * ggc-page.c (set_page_table_entry): Likewise.
10481         * intl.c (gcc_gettext_width): Likewise.
10482         * varasm.c (get_unnamed_section, get_noswitch_section,
10483         get_section): Likewise.
10484
10485 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
10486
10487         * regrename.c (build_def_use): Don't copy RTX.
10488
10489 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
10490
10491         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
10492         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
10493         punctuation.  Use @ref instead of @xref.
10494         (Function Names): Remove stray @display/@end display.
10495         (C++ Attributes): Use @ref instead of @xref.
10496         (Deprecated Features): Fix punctuation around @xref.
10497         (Backwards Compatibility): Likewise.
10498         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
10499
10500 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
10501
10502         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
10503         constants for E500 double.
10504
10505 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10506
10507         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
10508         element type of const_vector.
10509
10510 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
10511
10512         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
10513         Remove FLAGS_REG clobber from expander pattern.
10514         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
10515         (anddi3, andsi3, andhi3, andqi3): Ditto.
10516         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
10517         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
10518         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
10519         (ashlsi3, ashlhi3, ashlqi3): Ditto.
10520         (ashrsi3, ashrhi3, ashrqi3): Ditto.
10521         (lshrsi3, lshrhi3, lshrqi3): Ditto.
10522         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
10523         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
10524
10525 2008-06-28  Richard Guenther  <rguenther@suse.de>
10526
10527         * tree-ssa-structalias.c (callused_id, var_callused,
10528         callused_tree): Add.
10529         (handle_pure_call): New function.
10530         (find_func_aliases): Call it.
10531         (find_what_p_points_to): Handle the call-used set.
10532         (clobber_what_escaped): Likewise.
10533         (compute_call_used_vars): New function.
10534         (init_base_vars): Init the call-used variable.
10535         (do_sd_constraint): Do not propagate the solution from CALLUSED
10536         but use CALLUSED as a placeholder.
10537         (solve_graph): Likewise.
10538         * tree-flow-inline.h (gimple_call_used_vars): New function.
10539         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
10540         (compute_call_used_vars): Declare.
10541         * tree-ssa-alias.c (set_initial_properties): Call
10542         compute_call_used_vars.
10543         (reset_alias_info): Clear call-used variables.
10544         (add_call_clobber_ops): Assert we are not called for const/pure
10545         functions.  Remove handling of them.
10546         (add_call_read_ops): Handle pure functions by adding the
10547         call-used set of variables as VUSEs.
10548         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
10549         (delete_tree_ssa): Free it.
10550         * tree-dfa.c (remove_referenced_var): Clear the var from the
10551         call-used bitmap.
10552
10553 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
10554
10555         * tree.c (build_varargs_function_type_list): New.
10556         (build_function_type_list_1): New.
10557         (build_function_type_list): Use build_function_type_list_1.
10558         * tree.h (build_varargs_function_type_list): New.
10559
10560 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10561
10562         PR target/34856
10563         * config/spu/spu.c (spu_builtin_splats): Do not generate
10564         invalid CONST_VECTOR expressions.
10565         (spu_expand_vector_init): Likewise.
10566
10567 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
10568
10569         * optabs.c (libfunc_decls): New variable.
10570         (libfunc_decl_hash, libfunc_decl_eq): New functions.
10571         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
10572         for the same function twice.
10573
10574 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
10575
10576         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
10577         ix86_expand_binary_operator directly.
10578         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
10579         for operand 2.
10580         (*ashrti3_1): Ditto.
10581         (*lshrti3_1): Ditto.
10582         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
10583         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
10584         using only one splitter.  Conditionaly execute splitter before or
10585         after peephole2 pass.
10586         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
10587         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
10588         Use only one alternative in asm template.
10589         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
10590         in asm template.
10591         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
10592         "J" operand constraint for operand 2.
10593         (*ashldi3_cconly_rex64): Ditto.
10594         (*ashrdi3_cmp_rex64): Ditto.
10595         (*ashrdi3_cconly_rex64): Ditto.
10596         (*lshrdi3_cmp_rex64): Ditto.
10597         (*lshrdi3_cconly_rex64): Ditto.
10598         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
10599         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
10600         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
10601         gen_x86_shrd_1.
10602
10603 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
10604
10605         * gimplify.c (omp_is_private): Don't return true if decl is not
10606         already private on #pragma omp for or #pragma omp parallel for.
10607
10608         PR debug/36617
10609         * tree-cfg.c (struct move_stmt_d): Replace block field with
10610         orig_block and new_block fields.
10611         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
10612         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
10613         (move_block_to_fn): Replace vars_map and new_label_map arguments
10614         with struct move_stmt_d pointer.
10615         (replace_block_vars_by_duplicates): New function.
10616         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
10617         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
10618         all subblocks of ORIG_BLOCK to the new function.  Call
10619         replace_block_vars_by_duplicates.
10620         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
10621         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
10622         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
10623         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
10624         (expand_omp): Temporarily set input_location to the location of
10625         region's controlling stmt.
10626         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
10627         BIND_EXPR, push ctx->block_vars and gimplification vars into
10628         the BIND_EXPR and its block's BLOCK_VARS instead of directly
10629         into dest function.
10630         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
10631         there are any BLOCK_VARS.
10632         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
10633         OMP_PARALLEL or OMP_TASK stmt.
10634         (lower_omp): Save and restore input_location around the lower_omp_1
10635         call.
10636
10637 2008-06-27  Richard Guenther  <rguenther@suse.de>
10638
10639         PR tree-optimization/36400
10640         PR tree-optimization/36373
10641         PR tree-optimization/36344
10642         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
10643         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
10644         (update_alias_info): Remove call clobbering code.
10645         (make_constraint_to): New helper function.
10646         (make_escape_constraint): Likewise.
10647         (handle_rhs_call): Use it on all pointer containing arguments.
10648         Also mark the static chain escaped.
10649         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
10650         instead of ANYTHING.
10651         (make_constraint_from): New helper split out from ...
10652         (make_constraint_from_anything): ... here.
10653         (find_func_aliases): Add constraints for escape sites.
10654         (intra_create_variable_infos): Make constraints from NONLOCAL
10655         for parameters.
10656         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
10657         as ANYTHING.
10658         (clobber_what_p_points_to): Remove.
10659         (clobber_what_escaped): New function.
10660         (init_base_vars): Init NONLOCAL and ESCAPED.
10661         (do_sd_constraint): Do not propagate the solution from ESCAPED
10662         but use ESCAPED as a placeholder.
10663         (solve_graph): Likewise.
10664         * tree-flow.h (clobber_what_p_points_to): Remove.
10665         (clobber_what_escaped): Declare.
10666         * tree-ssa-alias.c (set_initial_properties): Call it.
10667         Remove code clobbering escaped pointers.
10668
10669 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
10670
10671         * function.c (allocate_struct_function): Only allocate a unique
10672         funcdef_no if the decl is nonzero.
10673
10674 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
10675
10676         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
10677         * config/mips/mips.c (mips_split_const_insns): New function.
10678         * config/mips/mips.md (move_type): New attribute.
10679         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
10680         (dword_mode): New attribute.
10681         (type): Avoid long line.  Map "move_type"s to "type"s,
10682         choosing "multi" for doubleword moves if appropriate.
10683         Swap MTC/MFC comments to match their declaration order.
10684         (extended_mips16): Default to "yes" if "move_type" is "sll0",
10685         "type" is "branch" or "jal" is "direct".
10686         (length): Handle "extended_mips16" first.  Make the default
10687         "0" for "ghost" instructions.  Set the length from "move_type".
10688         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
10689         of "type", with "sll0" for the register alternative.  Remove the
10690         "extended_mips16" attribute.
10691         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
10692         of "type", with "shift_shift" for the register alternative.
10693         Remove the "length" attribute.
10694         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
10695         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
10696         of "type", with "andi" for the register alternative.
10697         (*zero_extendqihi2): Likewise.
10698         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
10699         of "andi" instead of a "type" of "arith".
10700         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
10701         instead of "type".
10702         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
10703         (mov_<store>r, *mov<mode>_ra): Likewise.
10704         (extendsidi2): Use "move_type" instead of "type", with "move"
10705         for the register alternative.
10706         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
10707         of "type", with "signext" for the register alternative.
10708         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
10709         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
10710         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
10711         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
10712         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
10713         (unnamed branch insn): Likewise.
10714         (*movdi_gp32_fp64): Fold into...
10715         (*movdi_32bit): ...here.
10716         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
10717         (*movdf_hardfloat): ...this new pattern.
10718         (*movdf_softfloat): Remove redundant FPR alternatives.
10719         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
10720         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
10721         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
10722         the "move" attribute.
10723         (*movdi_32bit): Use "move_type" instead of "type" and remove the
10724         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
10725         and "store" for COP loads and stores.
10726         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
10727         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
10728         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
10729         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
10730         (*movtf_mips16, *movv2sf): Likewise.
10731         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
10732         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
10733         (mfhc1<mode>): Use "move_type" instead of "move".
10734         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
10735         (loadgp_blockage): Remove the "length" attribute.
10736         (blockage, set_got_version, update_got_version): Likewise.
10737         (call_internal): Remove the "extended_mips16" attribute.
10738         (call_value_internal, call_value_multiple_internal): Likewise.
10739         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
10740         instead of "move".
10741         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
10742         the "length" attribute.
10743
10744 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10745
10746         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
10747         -Wcast-qual warnings.
10748         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
10749         handle_pragma_pop_macro): Likewise.
10750         * collect2.c (resolve_lib_name): Likewise.
10751         * config/arc/arc.c (arc_init): Likewise.
10752         * config/arm/arm.c (neon_builtin_compare,
10753         locate_neon_builtin_icode): Likewise.
10754         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
10755         * config/bfin/bfin.c (bfin_init_machine_status,
10756         bfin_optimize_loop): Likewise.
10757         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
10758         * config/cris/cris.c (cris_init_expanders): Likewise.
10759         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
10760         * config/darwin.c (machopic_indirection_eq,
10761         machopic_indirection_name, machopic_output_indirection): Likewise.
10762         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
10763         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
10764         frv_optimize_membar): Likewise.
10765         * config/i386/cygwin.h (mingw_scan,
10766         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
10767         * config/i386/cygwin1.c (mingw_scan): Likewise.
10768         * config/i386/i386.c (machopic_output_stub): Likewise.
10769         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
10770         i386_pe_unique_section): Likewise.
10771         * config/ia64/ia64.c (ia64_init_machine_status,
10772         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
10773         Likewise.
10774         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
10775         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
10776         * config/m68k/m68k.c (m68k_handle_option,
10777         m68k_sched_md_init_global): Likewise.
10778         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
10779         mcore_unique_section): Likewise.
10780         * config/mips/mips.c (mips_block_move_straight,
10781         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
10782         Likewise.
10783         * config/mmix/mmix.c (mmix_init_machine_status,
10784         mmix_encode_section_info): Likewise.
10785         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
10786         * config/rs6000/rs6000.c (rs6000_init_machine_status,
10787         print_operand_address, output_toc, redefine_groups,
10788         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
10789         * config/s390/s390.c (s390_init_machine_status): Likewise.
10790         * config/score/score.c (score_block_move_straight,
10791         score_block_move_loop_body): Likewise.
10792         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
10793         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
10794         * emit-rtl.c (find_auto_inc): Likewise.
10795         * gcc.c (translate_options, process_command): Likewise.
10796         * reorg.c (dbr_schedule): Likewise.
10797         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
10798         * xcoffout.c (xcoffout_declare_function): Likewise.
10799
10800 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
10801
10802         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
10803         ipa-pta working again.
10804
10805 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
10806
10807         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
10808         genautomata.
10809
10810 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
10811
10812         * config.gcc (powerpc*-*-*): Add new core e500mc.
10813         * config/rs6000/e500mc.md: New file.
10814         * config/rs6000/rs6000.c (processor_costs): Add new costs for
10815         e500mc.
10816         (rs6000_override_options): Add e500mc case to
10817         processor_target_table. Altivec and Spe options not allowed
10818         with e500mc. Add isel instruction to e500mc by
10819         default. Initialize rs6000_cost for e500mc.
10820         (rs6000_issue_rate): Set issue rate for e500mc.
10821         * config/rs6000/rs6000.h (processor_type): Add
10822         PROCESSOR_PPCE500MC.
10823         (ASM_CPU_SPEC): Add e500mc.
10824         Set TARGET_ISEL to rs6000_isel.
10825         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
10826         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
10827         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
10828         Include e500mc.md.
10829         * doc/invoke.texi: Add e500mc to list of cpus.
10830
10831 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10832
10833         PR c/34867
10834         * c-lex.c (lex_charconst): Initialize unsignedp.
10835
10836 2008-06-27  Olivier Hainque  <hainque@adacore.com>
10837
10838         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
10839         documented assumptions.
10840
10841 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
10842
10843         * dwarf2out.c: Remove trailing white spaces.  Break long line
10844         in comments.
10845
10846 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
10847
10848         * libfuncs.h (LTI_synchronize): New libfunc_index.
10849         (synchronize_libfunc): Declare.
10850         * builtins.c (expand_builtin_synchronize): Consider using
10851         synchronize_libfunc before falling back on an asm blockage.
10852         * config/mips/mips.c: Include libfuncs.h
10853         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
10854
10855 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
10856
10857         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
10858         parameter.  Copy stack_reg to r11 where appropriate.
10859         (no_global_regs_above): Add gpr parameter.
10860         (rs6000_stack_info): Only add padding for SPE save area if we
10861         are saving SPE GPRs and CR.
10862         (saveres_routine_syms): New variable.
10863         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
10864         Define.
10865         (rs6000_savres_routine_sym): New function.
10866         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
10867         split out of...
10868         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
10869         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
10870         Tweak FPR out-of-line saving.
10871         (rs6000_make_savres_rtx): New function.
10872         (rs6000_use_multiple_p): New function.
10873         (rs6000_savres_strategy): New function.
10874         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
10875         out-of-line if appropriate.
10876         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
10877         if we are optimizing for size.
10878         (GP_SAVE_INLINE): Define.
10879         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
10880         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
10881         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
10882         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
10883         (*save_fpregs_<mode>): Add use of r11.
10884         (*restore_gpregs_<mode>): New insn.
10885         (*return_and_restore_gpregs_<mode>): New insn.
10886         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
10887         use r11.
10888         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
10889         (*restore_gpregs_spe): New insn.
10890         (*return_and_restore_gpregs_spe): New insn.
10891         * config/rs6000/predicates.md (save_world_operation): Fix check.
10892
10893 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
10894
10895         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
10896         this point, so assert that.
10897
10898 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
10899
10900         * cfganal.c: Include vec.h and vecprim.h.
10901         (compute_idf): Import from...
10902         * tree-into-ssa (compute_idf): ...here.
10903         * basic-block.h (compute_idf): Export.
10904
10905 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
10906
10907         * c-decl.c (merge_decls): Use !current_function_decl to check for
10908         extern declaration of C99 inline function being at file scope.
10909
10910 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
10911
10912         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
10913
10914 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10915
10916         * alias.c (record_alias_subset, init_alias_analysis): Fix
10917         -Wc++-compat and/or -Wcast-qual warnings.
10918         * attribs.c (lookup_attribute_spec): Likewise.
10919         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
10920         copy_bb, connect_traces,
10921         find_rarely_executed_basic_blocks_and_cr): Likewise.
10922         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
10923         note_btr_set, migrate_btr_defs): Likewise.
10924         * builtins.c (result_vector, expand_builtin_memcpy,
10925         expand_builtin_mempcpy_args, expand_builtin_strncpy,
10926         builtin_memset_read_str, expand_builtin_printf,
10927         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
10928         Likewise.
10929         * caller-save.c (mark_set_regs): Likewise.
10930         * calls.c (expand_call, emit_library_call_value_1): Likewise.
10931         * cgraph.c (cgraph_edge): Likewise.
10932         * combine.c (likely_spilled_retval_1): Likewise.
10933         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
10934         htab_counts_entry_del, get_coverage_counts): Likewise.
10935         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
10936         new_cselib_val): Likewise.
10937         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
10938         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
10939         Likewise.
10940         * df-core.c (df_compact_blocks): Likewise.
10941         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
10942         * df-scan.c (df_grow_reg_info, df_ref_create,
10943         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
10944         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
10945         df_record_entry_block_defs, df_record_exit_block_uses,
10946         df_bb_verify): Likewise.
10947         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
10948         DF_REF_EXTRACT_MODE_CONST): New.
10949         * dominance.c (get_immediate_dominator, get_dominated_by,
10950         nearest_common_dominator, root_of_dom_tree,
10951         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
10952         -Wc++-compat and/or -Wcast-qual warnings.
10953         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
10954         record_store, replace_read, check_mem_read_rtx, scan_insn,
10955         dse_step1, dse_record_singleton_alias_set): Likewise.
10956         * dwarf2asm.c (dw2_force_const_mem): Likewise.
10957
10958 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10959
10960         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
10961         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
10962         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
10963         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
10964         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
10965         add_ranges_num, add_ranges_by_labels, file_info_cmp,
10966         file_name_acquire, output_file_names, add_const_value_attribute,
10967         premark_used_types_helper, file_table_eq, file_table_hash,
10968         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
10969         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
10970         -Wcast-qual warnings.
10971         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
10972         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
10973         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
10974         gen_reg_rtx, start_sequence, init_emit): Likewise.
10975         * et-forest.c (et_new_occ, et_new_tree): Likewise.
10976         * except.c (init_eh_for_function, gen_eh_region,
10977         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
10978         arh_to_landing_pad, arh_to_label, add_action_record,
10979         add_call_site, switch_to_exception_section): Likewise.
10980         * expmed.c (synth_mult): Likewise.
10981         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
10982         store_expr): Likewise.
10983         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
10984         Likewise.
10985         * function.c (assign_stack_temp_for_type,
10986         allocate_struct_function, match_asm_constraints_1): Likewise.
10987         * gcov-io.c (gcov_allocate): Likewise.
10988         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
10989         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
10990         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
10991         record_one_set, insert_expr_in_table, insert_set_in_table,
10992         dump_hash_table, compute_hash_table_work, alloc_hash_table,
10993         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
10994         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
10995         -Wcast-qual warnings.
10996
10997 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10998
10999         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
11000         -Wcast-qual warnings.
11001         * gcc.c (process_command): Likewise.
11002         * genattrtab.c (oballoc): Use XOBNEW.
11003         (oballocvec): Define.
11004         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
11005         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
11006         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
11007         -Wc++-compat and/or -Wcast-qual warnings.
11008         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
11009         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
11010         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
11011         gen_presence_absence_set, gen_automaton, gen_regexp_el,
11012         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
11013         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
11014         add_excls, process_presence_absence_names,
11015         process_presence_absence_patterns, add_presence_absence,
11016         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
11017         get_free_state, add_arc, get_free_automata_list_el,
11018         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
11019         transform_3, cache_presence, create_ainsns, create_automata,
11020         create_state_ainsn_table, dfa_insn_code_enlarge,
11021         output_trans_func, output_min_issue_delay_func,
11022         output_dead_lock_func, output_reset_func,
11023         output_get_cpu_unit_code_func, output_dfa_start_func,
11024         expand_automata): Likewise.
11025         * genextract.c (gen_insn): Likewise.
11026         * gengtype-lex.l: Likewise.
11027         * gengtype.c (read_input_list, adjust_field_type,
11028         process_gc_options): Likewise.
11029         * genoutput.c (note_constraint): Likewise.
11030         * genpreds.c (mangle, add_constraint): Likewise.
11031         * genrecog.c (process_define_predicate, new_decision,
11032         add_to_sequence): Likewise.
11033         * gensupport.c (record_insn_name): Likewise.
11034
11035 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11036
11037         * config/i386/driver-i386.c (detect_caches_amd,
11038         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
11039         and/or -Wcast-qual warnings.
11040         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
11041         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
11042         gt_pch_save): Likewise.
11043         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
11044         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
11045         * global.c (compute_regsets): Likewise.
11046         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
11047         finish_graph_dump_file): Likewise.
11048         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
11049         unlink_bb_notes): Likewise.
11050         * integrate.c (get_hard_reg_initial_val): Likewise.
11051         * ipa-prop.c (ipa_push_func_to_list): Likewise.
11052         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
11053         * local-alloc.c (update_equiv_regs): Likewise.
11054         * loop-invariant.c (check_invariant_table_size,
11055         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
11056         Likewise.
11057         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
11058         altered_reg_used, mark_altered): Likewise.
11059         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
11060         insert_var_expansion_initialization,
11061         combine_var_copies_in_loop_exit, apply_opt_in_copies,
11062         release_var_copies): Likewise.
11063         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
11064         analyze_matrix_decl, add_allocation_site, analyze_transpose,
11065         analyze_accesses_for_phi_node, check_var_notmodified_p,
11066         check_allocation_function, find_sites_in_func,
11067         record_all_accesses_in_func, transform_access_sites,
11068         transform_allocation_sites): Likewise.
11069         * omp-low.c (new_omp_region, create_omp_child_function_name,
11070         check_omp_nesting_restrictions, check_combined_parallel,
11071         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
11072         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
11073         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
11074         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
11075         Likewise.
11076         * opts-common.c (prune_options): Likewise.
11077         * opts.c (add_input_filename, print_filtered_help,
11078         get_option_state): Likewise.
11079         * params.c (add_params): Likewise.
11080         * passes.c (set_pass_for_id, next_pass_1,
11081         do_per_function_toporder, pass_fini_dump_file): Likewise.
11082         * postreload.c (reload_cse_simplify_operands): Likewise.
11083         * predict.c (tree_predicted_by_p, tree_predict_edge,
11084         clear_bb_predictions, combine_predictions_for_bb): Likewise.
11085
11086 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11087
11088         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
11089         warnings.
11090         * recog.c (check_asm_operands, validate_change_1): Likewise.
11091         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
11092         subst_asm_stack_regs): Likewise.
11093         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
11094         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
11095         * regmove.c (reg_is_remote_constant_p): Likewise.
11096         * regrename.c (regrename_optimize, scan_rtx_reg,
11097         kill_clobbered_value, kill_set_value, kill_autoinc_value):
11098         Likewise.
11099         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
11100         regstat_compute_calls_crossed): Likewise.
11101         * reload1.c (init_reload, new_insn_chain,
11102         has_nonexceptional_receiver, reload, copy_reloads,
11103         calculate_needs_all_insns, init_elim_table): Likewise.
11104         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
11105         * rtl.c (shallow_copy_rtx_stat): Likewise.
11106         * rtlanal.c (parms_set): Likewise.
11107         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
11108         sbitmap_resize, sbitmap_vector_alloc): Likewise.
11109         * sched-ebb.c (earliest_block_with_similiar_load,
11110         add_deps_for_risky_insns): Likewise.
11111         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
11112         schedule_region): Likewise.
11113         * see.c (eq_descriptor_pre_extension,
11114         hash_descriptor_pre_extension, hash_del_pre_extension,
11115         eq_descriptor_properties, hash_descriptor_properties,
11116         hash_del_properties, see_seek_pre_extension_expr,
11117         see_initialize_data_structures, see_print_register_properties,
11118         see_print_pre_extension_expr, see_delete_merged_def_extension,
11119         see_delete_unmerged_def_extension, see_emit_use_extension,
11120         see_pre_delete_extension, see_map_extension, see_commit_changes,
11121         see_analyze_merged_def_local_prop,
11122         see_analyze_merged_def_local_prop,
11123         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
11124         see_set_prop_merged_def, see_set_prop_unmerged_def,
11125         see_set_prop_unmerged_use, see_print_one_extension,
11126         see_merge_one_use_extension, see_merge_one_def_extension,
11127         see_store_reference_and_extension, see_update_uses_relevancy,
11128         see_update_defs_relevancy): Likewise.
11129         * statistics.c (hash_statistics_hash, hash_statistics_eq,
11130         hash_statistics_free, curr_statistics_hash): Likewise.
11131         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
11132         expand_asm_operands, expand_return, case_bit_test_cmp,
11133         expand_case): Likewise.
11134         * stor-layout.c (start_record_layout): Likewise.
11135         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
11136         gt_pch_save_stringpool): Likewise.
11137         * tree-data-ref.c (hash_stmt_vertex_info,
11138         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
11139         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
11140
11141 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
11142
11143         PR target/36627
11144         * config/i386/i386.md : Change constraints of HImode and QImode
11145         immediate operands from "i" to "n".  Change SImode "ni" constraint to
11146         "i" and SImode "rmi" constraint to "g".  Remove all constraints
11147         from const0_operand and const1_operand predicated operands.
11148         (i): Change QImode and HImode attribute from "i" to "n".
11149         (*subqi_2): Change HImode operands to QImode.
11150         (*subqi_3): Ditto.
11151
11152 2008-06-25  Olivier Hainque  <hainque@adacore.com>
11153
11154         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
11155         sed substitutions.
11156
11157 2008-06-25  Richard Guenther  <rguenther@suse.de>
11158
11159         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
11160         not overflow the result type.
11161
11162 2008-06-25  Richard Guenther  <rguenther@suse.de>
11163
11164         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
11165         (vn_lookup): Likewise.
11166
11167 2008-06-25  Richard Guenther  <rguenther@suse.de>
11168
11169         PR tree-optimization/35518
11170         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
11171         * tree-sra.c (instantiate_element): Use fold_build3 to build
11172         BIT_FIELD_REFs.
11173         (try_instantiate_multiple_fields): Likewise.
11174
11175 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11176
11177         * config/rs6000/rs6000.md: Change all string instruction's clobber to
11178         be early clobbers.
11179
11180 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11181
11182         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
11183         use_backchain_to_restore_sp to true
11184         if the offset of the link register save area would go over the 32k - 1
11185         offset limit of the load
11186         instructions.
11187
11188 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
11189
11190         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
11191         anchor for the type-punning blurb.  Cross-reference "Structures
11192         unions enumerations and bit-fields implementation".  Provide a
11193         cast-through-pointer example.  Make final sentence self-contained.
11194         * doc/implement-c.texi (Structures unions enumerations and
11195         bit-fields implementation): Cross-reference the type-punning blurb
11196         in the -fstrict-aliasing documentation.
11197
11198 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11199
11200         PR middle-end/36594
11201         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
11202         the memory instead of the memory itself for the save area.
11203
11204 2008-06-24  Olivier Hainque  <hainque@adacore.com>
11205             Nicolas Roche  <roche@adacore.com>
11206
11207         * gengtype.c (srcdir_len): size_t instead of int.
11208         (get_file_realbasename): New function.  For F a filename, the real
11209         basename of F, with all the path components stripped.
11210         (get_file_srcdir_relative_path): New function.  For F a filename, the
11211         relative path to F from $(srcdir).
11212         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
11213         get_file_realbasename.  Adjust the head comment.
11214         (get_prefix_langdir_index): New function. For F a filename, return the
11215         lang_dir_names[] relative index of the language directory that is
11216         a prefix in F.
11217         (get_file_langdir): For F a filename, return the name of the language
11218         directory where F is located.
11219         (get_file_gtfilename): New function. The gt- output file name for an
11220         input filename F.
11221         (get_output_file_with_visibility): Replace in-line computations with
11222         uses of get_file_gtfilename and get_prefix_langdir_index.
11223         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
11224
11225 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
11226
11227         PR tree-optimization/36504
11228         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
11229         references without base address.
11230
11231 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
11232
11233         PR middle-end/36584
11234         * calls.c (expand_call): Increase alignment for recursive functions.
11235
11236 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
11237
11238         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
11239         (TARGET_FUNCTION_VALUE): New define.
11240         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
11241         * config/avr/avr.h (FUNCTION_VALUE): Remove.
11242
11243 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
11244
11245         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
11246         (fmod<mode>3): Ditto.
11247         (remainderxf3): Ditto.
11248         (remainder<mode>3): Ditto.
11249
11250 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
11251
11252         PR target/36533
11253         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
11254         REG is a hard register.
11255
11256         PR tree-optimization/36508
11257         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
11258         499, don't check it at all in release compilers.
11259
11260 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
11261
11262         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
11263         together with SSE_TARGET_MATH to disable insn pattern.
11264         (*fop_<MODEF:mode>_2_i387): Ditto.
11265         (*fop_<MODEF:mode>_3_i387): Ditto.
11266
11267 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
11268
11269         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
11270
11271 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
11272
11273         PR middle-end/34906
11274         * gimplify.c (gimplify_asm_expr): Check the return code of
11275         parse_output_constraint call, set function return and is_inout
11276         value if it failed.
11277
11278 2008-06-22  Ian Lance Taylor  <iant@google.com>
11279
11280         * c-lex.c (narrowest_unsigned_type): Change itk to int.
11281         (narrowest_signed_type): Likewise.
11282         * c-typeck.c (c_common_type): Change local variable mclass to enum
11283         mode_class, twice.
11284         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
11285         tcc_comparison, not the tree code itself.
11286         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
11287         (c_expand_expr): Cast modifier to enum expand_modifier.
11288         * c-common.h (C_RID_CODE): Add casts.
11289         (C_SET_RID_CODE): Define.
11290         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
11291         (c_lex_one_token): Add cast to avoid warning.
11292         (c_parser_objc_type_name): Rename local typename to type_name.
11293         (check_no_duplicate_clause): Change code parameter to enum
11294         omp_clause_code.
11295         (c_parser_omp_var_list_parens): Change kind parameter to enum
11296         omp_clause_code.
11297         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
11298         c_parser_omp_list_var_parens.
11299         (c_parser_omp_threadprivate): Likewise.
11300         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
11301         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
11302         * c-format.c (NO_FMT): Define.
11303         (printf_length_specs): Use NO_FMT.
11304         (asm_fprintf_length_specs): Likewise.
11305         (gcc_diag_length_specs): Likewise.
11306         (scanf_length_specs): Likewise.
11307         (strfmon_length_specs): Likewise.
11308         (gcc_gfc_length_specs): Likewise.
11309         (printf_flag_specs): Change 0 to STD_C89.
11310         (asm_fprintf_flag_specs): Likewise.
11311         (gcc_diag_flag_specs): Likewise.
11312         (gcc_cxxdiag_flag_specs): Likewise.
11313         (scanf_flag_specs): Likewise.
11314         (strftime_flag_specs): Likewise.
11315         (strfmon_flag_specs): Likewise.
11316         (print_char_table): Likewise.
11317         (asm_fprintf_char_table): Likewise.
11318         (gcc_diag_char_table): Likewise.
11319         (gcc_tdiag_char_table): Likewise.
11320         (gcc_cdiag_char_table): Likewise.
11321         (gcc_cxxdiag_char_table): Likewise.
11322         (gcc_gfc_char_table): Likewise.
11323         (scan_char_table): Likewise.
11324         (time_char_table): Likewis.
11325         (monetary_char_table): Likewise.
11326         * c-format.h (BADLEN): Likewise.
11327
11328 2008-06-21  Ian Lance Taylor  <iant@google.com>
11329
11330         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
11331         Define END_OF_BASE_TREE_CODES around inclusion.
11332         * tree.c (tree_code_type): New global array.
11333         (tree_code_length, tree_code_name): Likewise.
11334         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
11335         $(lang_tree_files).
11336         (all-tree.def, s-alltree): New targets.
11337         (gencheck.h, s-gencheck): Remove.
11338         (tree.o): Depend upon all-tree.def.
11339         (build/gencheck.o): Remove gencheck.h dependency.
11340         (mostlyclean): Don't remove gencheck.h.
11341         * c-common.h (enum c_tree_code): Remove.
11342         * c-lang.c (tree_code_type): Remove.
11343         (tree_code_length, tree_code_name): Remove.
11344         * gencheck.c (tree_codes): Include all-tree.def, rather than
11345         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
11346         after it is used.
11347         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
11348         than tree.def.
11349         * cp/cp-tree.h (enum cplus_tree_code): Remove.
11350         (operator_name_info): Size to MAX_TREE_CODES.
11351         (assignment_operator_name_info): Likewise.
11352         * cp/cp-lang.c (tree_code_type): Remove.
11353         (tree_code_length, tree_code_name): Remove.
11354         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
11355         (assignment_operator_name_info): Likewise.
11356         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
11357         MAX_TREE_CODES.
11358         * cp/mangle.c (write_expression): Likewise.
11359         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
11360         * fortran/f95-lang.c (tree_code_type): Remove.
11361         (tree_code_length, tree_code_name): Remove.
11362         * java/java-tree.h (enum java_tree_code): Remove.
11363         * java/lang.c (tree_code_type): Remove.
11364         (tree_code_length, tree_code_name): Remove.
11365         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
11366         * objc/objc-act.h (enum objc_tree_code): Remove.
11367         * objc/objc-lang.c (tree_code_type): Remove.
11368         (tree_code_length, tree_code_name): Remove.
11369         * objcp/objcp-lang.c (tree_code_type): Remove.
11370         (tree_code_length, tree_code_name): Remove.
11371         * ada/ada-tree.h (enum gnat_tree_code): Remove.
11372         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
11373         * ada/misc.c (tree_code_type): Remove.
11374         (tree_code_length, tree_code_name): Remove.
11375
11376 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
11377
11378         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
11379         the grand_bitmap_obstack.
11380
11381 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11382
11383         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
11384         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
11385         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
11386         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
11387         move_stmt_r, new_label_mapper): Likewise.
11388         * tree-complex.c (cvc_lookup): Likewise.
11389         * tree-dfa.c (create_function_ann): Likewise.
11390         * tree-dump.c (dump_register): Likewise.
11391         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
11392         find_phi_replacement_condition): Likewise.
11393         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
11394         tree_function_versioning): Likewise.
11395         * tree-into-ssa.c (cmp_dfsnum): Likewise.
11396         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
11397         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
11398         get_nonlocal_debug_decl, convert_nonlocal_reference,
11399         convert_nonlocal_omp_clauses, get_local_debug_decl,
11400         convert_local_reference, convert_local_omp_clauses,
11401         convert_nl_goto_reference, convert_nl_goto_receiver,
11402         convert_tramp_reference, convert_call_expr): Likewise.
11403         * tree-outof-ssa.c (contains_tree_r): Likewise.
11404         * tree-parloops.c (reduction_phi, initialize_reductions,
11405         eliminate_local_variables_1, add_field_for_reduction,
11406         add_field_for_name, create_phi_for_local_result,
11407         create_call_for_reduction_1, create_loads_for_reductions,
11408         create_stores_for_reduction, create_loads_and_stores_for_name):
11409         Likewise.
11410         * tree-phinodes.c (allocate_phi_node): Likewise.
11411         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
11412         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
11413         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
11414         * tree-ssa-coalesce.c (compare_pairs): Likewise.
11415         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
11416         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
11417         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
11418         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
11419         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
11420         vn_nary_op_insert): Likewise.
11421         * tree-ssa.c (redirect_edge_var_map_add,
11422         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
11423         * tree-vectorizer.c (vectorize_loops): Likewise.
11424         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
11425         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
11426         tree_cons_stat, build1_stat, build_variant_type_copy,
11427         decl_init_priority_lookup, decl_fini_priority_lookup,
11428         decl_priority_info, decl_restrict_base_lookup,
11429         decl_restrict_base_insert, decl_debug_expr_lookup,
11430         decl_debug_expr_insert, decl_value_expr_lookup,
11431         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
11432         type_hash_add, get_file_function_name, tree_check_failed,
11433         tree_not_check_failed, tree_range_check_failed,
11434         omp_clause_range_check_failed, build_omp_clause,
11435         build_vl_exp_stat): Likewise.
11436         * value-prof.c (gimple_histogram_value,
11437         gimple_duplicate_stmt_histograms): Likewise.
11438         * var-tracking.c (attrs_list_insert, attrs_list_copy,
11439         unshare_variable, variable_union_info_cmp_pos, variable_union,
11440         dataflow_set_different_1, dataflow_set_different_2,
11441         vt_find_locations, variable_was_changed, set_variable_part,
11442         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
11443         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
11444         section_entry_hash, object_block_entry_eq,
11445         object_block_entry_hash, create_block_symbol,
11446         initialize_cold_section_name, default_function_rodata_section,
11447         strip_reg_name, set_user_assembler_name, const_desc_eq,
11448         build_constant_desc, output_constant_def, lookup_constant_def,
11449         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
11450         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
11451         default_internal_label): Likewise.
11452         * varray.c (varray_init, varray_grow): Likewise.
11453         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
11454
11455 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
11456
11457         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
11458         operators for "test" insn.  Macroize insn using SWI mode macro.
11459         (*jcc_fused_2): Ditto.
11460         (*jcc_fused_3): Macroize insn using SWI mode macro.
11461         (*jcc_fused_4): Ditto.
11462
11463 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
11464
11465         * tree-ssa-pre.c: Fix typo in comment.
11466         (init_antic, fini_antic): Add explicit funtions for
11467         initializing and deinitializing ANTIC and AVAIL sets.
11468         (create_expression_by_pieces): Fix typo in comment.
11469         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
11470         (execute_pre): Eventually dump details about ANTIC_IN.
11471
11472 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11473
11474         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
11475         * gcc.c (translate_options, init_spec, store_arg, read_specs,
11476         add_to_obstack, file_at_path, find_a_file, execute,
11477         add_preprocessor_option, add_assembler_option, add_linker_option,
11478         process_command, insert_wrapper, do_option_spec, do_self_spec,
11479         spec_path, do_spec_1, is_directory, main, used_arg,
11480         getenv_spec_function): Likewise.
11481         * tlink.c (symbol_hash_lookup, file_hash_lookup,
11482         demangled_hash_lookup, symbol_push, file_push, frob_extension):
11483         Likewise.
11484
11485 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
11486
11487         * doc/rtl.texi: Updated subreg section.
11488
11489 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
11490
11491         PR c++/36523
11492         * cgraphunit.c (cgraph_process_new_functions): Don't clear
11493         node->needed and node->reachable.
11494         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
11495         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
11496         (expand_task_call): Don't call expand_task_copyfn.
11497         (expand_task_copyfn): Renamed to...
11498         (finalize_task_copyfn): ... this.
11499
11500 2008-06-19  Jan Hubicka  <jh@suse.cz>
11501
11502         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
11503         clobbering framepointer.
11504
11505 2008-06-19  Jan Hubicka  <jh@suse.cz>
11506
11507         * tree-optimize.c (execute_early_local_optimizations): Set
11508         cgraph_state only at first invocation.
11509
11510 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11511
11512         * system.h (-Wc++-compat): Activate as a warning, no an error.
11513
11514 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
11515
11516         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
11517         instead of "#" in insn asm template.
11518         (*jcc_fused_2): Ditto.
11519
11520 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
11521
11522         * config/i386/i386.h (ix86_tune_indices)
11523         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
11524         (TARGET_FUSE_CMP_AND_BRANCH): New define.
11525         * config/i386/i386.md (*jcc_fused_1): New insn pattern
11526         (*jcc_fused_2): Ditto.
11527         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
11528         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
11529         (print operand): Handle 'E' and 'e' code.
11530
11531 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
11532
11533         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
11534         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11535         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
11536
11537 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
11538
11539         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
11540         node->decl.
11541         (cgraph_expand_function): Use local copy of decl.
11542         (cgraph_expand_all_functions): Remove redundant initialization of
11543         order_pos.
11544         (cgraph_optimize): Reword internal_error message.
11545
11546 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
11547
11548         * arm-protos.h (arm_return_in_memory): Remove public
11549         arm_return_in_memory() prototype.
11550         * arm.c (arm_return_in_memory): Add static prototype, add target
11551         hook macro, change definition and comments.
11552         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
11553
11554 2008-06-19  Ben Elliston  <bje@au.ibm.com>
11555
11556         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
11557         real.c: Remove references to IEEE 754R.
11558         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
11559         * doc/libgcc.texi (Decimal float library routines): Likewise.
11560
11561 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11562
11563         * targhooks.h (struct gcc_target): New member unwind_word_mode.
11564         (default_unwind_word_mode): Add prototype.
11565         * targhooks.c (default_unwind_word_mode): New function.
11566         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
11567         instead of word_mode.
11568         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
11569         (TARGET_INITIALIZER): Use it.
11570
11571         * c-common.c (handle_mode_attribute): Support "unwind_word"
11572         mode attribute.
11573         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
11574
11575         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
11576         word_mode to access SjLj_Function_Context member "data".
11577         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
11578         conversion from targetm.eh_return_filter_mode () to
11579         targetm.unwind_word_mode () if they differ.
11580
11581         * builtin-types.def (BT_UNWINDWORD): New primitive type.
11582         (BT_FN_UNWINDWORD_PTR): New function type.
11583         (BT_FN_WORD_PTR): Remove.
11584         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
11585         * except.c (expand_builtin_extend_pointer): Convert pointer to
11586         targetm.unwind_word_mode () instead of word_mode.
11587
11588         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
11589         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
11590         (spu_unwind_word_mode): New function.
11591         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
11592         (TARGET_UNWIND_WORD_MODE): Define.
11593         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
11594
11595 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11596
11597         * config/spu/spu.c (reg_align): Remove.
11598         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
11599         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
11600         (spu_split_store): Likewise.
11601
11602 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
11603
11604         * gcc/tree-vn.c: Fix typo in comment.
11605
11606 2008-06-18  Jan Hubicka  <jh@suse.cz>
11607
11608         * cgraphunit.c (cgraph_optimize): Output debug info when doing
11609         toplevel reorder too.
11610
11611 2008-06-18  Jan Hubicka  <jh@suse.cz>
11612
11613         * c-opts.c (c_common_post_options): PCH is not compatible with
11614         no-unit-at-a-time.
11615         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
11616         -fno-toplevel-reorder by default now.
11617
11618 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11619
11620         PR documentation/30739
11621         * doc/install.texi (Prerequisites): Document dependency on awk.
11622
11623 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
11624             Ian Lance Taylor  <iant@google.com>
11625
11626         PR rtl-optimization/35604
11627         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
11628         only want to change jump destinations, not eventual label comparisons.
11629
11630 2008-06-16  Jan Hubicka  <jh@suse.cz>
11631
11632         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
11633         syntax errors.
11634         (cgraph_analyze_function): Likewise.
11635
11636 2008-06-16  Jan Hubicka  <jh@suse.cz>
11637
11638         * cgraph.h (cgraph_mark_if_needed): New function.
11639         * cgraphunit.c (cgraph_mark_if_needed): New function.
11640         * c-decl.c (duplicate_decl): Use it.
11641
11642 2008-06-16  Jan Hubicka  <jh@suse.cz>
11643
11644         * cgraph.c (cgraph_add_new_function): When in expansion state, do
11645         lowering.
11646
11647 2008-06-16  Jan Hubicka  <jh@suse.cz>
11648
11649         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
11650
11651 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
11652             Kazu Hirata  <kazu@codesourcery.com>
11653             Maxim Kuvyrkov  <maxim@codesourcery.com
11654
11655         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
11656         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
11657         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
11658         EXTRA_SPEC_FUNCTIONS.
11659         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
11660         (DRIVER_SELF_SPECS): Adjust.
11661         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
11662         * config/mips/st.h, config/mips/t-st: New.
11663         * config/mips/driver-native.c, config/mips/x-native: New.
11664         * doc/invoke.texi (MIPS): Document 'native' value for -march and
11665         -mtune options.
11666
11667 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
11668
11669         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
11670         from it.
11671         (ISA_HAS_FP_CONDMOVE): New macro.
11672         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
11673         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
11674         (ISA_HAS_NMADD3_NMSUB3): New macro.
11675         * config/mips/mips.c (mips_rtx_costs): Update.
11676         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
11677         compiling for ST Loongson 2E/2F.
11678         (madd<mode>): Rename to madd4<mode>.  Update.
11679         (madd3<mode>): New pattern.
11680         (msub<mode>): Rename to msub4<mode>.  Update.
11681         (msub3<mode>): New pattern.
11682         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
11683         (nmadd3<mode>): New pattern.
11684         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
11685         (nmadd3<mode>_fastmath): New pattern.
11686         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
11687         (nmsub3<mode>): New pattern.
11688         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
11689         (nmsub3<mode>_fastmath): New pattern.
11690         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
11691
11692 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
11693
11694         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
11695         (DF_REF_INSN_INFO): New.
11696         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
11697         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
11698         with a NULL DF_REF_INSN_INFO.
11699         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
11700         DF_INSN_SET.
11701         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
11702         DF_INSN_INFO_EQ_USES): New.
11703         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
11704         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
11705         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
11706         * df-core.c: Update comment for above changes.
11707         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
11708         DF_INSN_UID_* macros.
11709         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
11710         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
11711         insn rtx.  Update all callers.
11712         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
11713         df_ref_create_structure, df_insn_refs_collect): Likewise.
11714         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
11715         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
11716         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
11717         macros to access the insn refs.
11718         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
11719         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
11720         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
11721         for accessing the refs.
11722         (try_fwprop_subst): Likewise.
11723         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
11724         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
11725         for accessing the refs.
11726         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
11727         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
11728         to look at the insn refs.
11729         (record_uses): Likewise.
11730         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
11731         function anymore.
11732         (mark_artificial_uses): Don't mark_insn for artificial refs.
11733         (mark_reg_rependencies): Likewise.
11734
11735         * doc/rtl.texi: Remove documentation of ADDRESSOF.
11736
11737 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11738
11739         * configure: Regenerate.
11740
11741 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11742
11743         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
11744         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11745         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11746
11747 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11748
11749         * config/avr/avr.c (avr_mcu_t): Add attiny167.
11750         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11751         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11752
11753 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
11754
11755         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
11756         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11757         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11758
11759 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
11760
11761         * tree-ssa-sccvn.c: Fix format of comments.
11762
11763 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
11764
11765         * cgraph.c: Remove unneeded forward declarations of eq_node()
11766         and hash_node().
11767
11768 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
11769
11770         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
11771         REG_RETVAL notes.
11772         (see_update_relevancy): Likewise.
11773         * fwprop.c (try_fwprop_subst): Likewise.
11774         * rtlanal.c (noop_move_p): Likewise.
11775         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
11776         notes to non-existing libcall blocks.
11777         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
11778         Remove orig_set.
11779         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
11780         (dead_libcall_p): Remove.
11781         (delete_trivially_dead_insns): Don't use it.
11782         * web.c (union_defs): Remove comment about keeping nops.
11783         * gcse.c (hash_scan_insn): Don't take libcall pointers.
11784         (compute_hash_table_work): Don't track libcall notes.
11785         (do_local_cprop): Don't take libcall pointers.  Don't update
11786         libcall notes.
11787         (adjust_libcall_notes): Deleted.
11788         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
11789         ever have existed in the first place).
11790         (replace_store_insn): Don't try to remove libcall notes.
11791         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
11792         (resolve_reg_notes): Don't call them.
11793         (resolve_simple_move): Likewise.
11794         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
11795         Don't remove REG_RETVAL notes.
11796         * emit-rtl.c (try_split): Don't update libcall notes.
11797         (emit_copy_of_insn_after): Dito.
11798         * cselib.c (cselib_current_insn_in_libcall): Remove.
11799         (cselib_process_insn): Don't set/clear it.
11800         (new_elt_loc_list): Don't record it.
11801         (cselib_init): Don't initialize it.
11802         * cselib.c (struct elt_loc_list): Remove in_libcall field.
11803         * loop-invariant.c (find_invariant_insn): Don't look for libcall
11804         notes.
11805         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
11806         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
11807         (init_deps): Don't initialize it.
11808         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
11809         * combine.c (delete_noop_moves): Don't update libcall notes.
11810         (can_combine_p): Remove now pointless #if 0 block.
11811         (try_combine): Remove another obsolete #if 0 block.
11812         (distribute_notes): Don't distribute libcall notes.
11813         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
11814         * dce.c (libcall_dead_p): Remove.
11815         (delete_unmarked_insns): Don't handle libcall blocks.
11816         (preserve_libcall_for_dce): Remove.
11817         (prescan_insns_for_dce): Don't special-case libcall block insns.
11818         * reload1 (reload): Don't handle libcall notes.
11819         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
11820         documentation.
11821
11822 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
11823
11824         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
11825         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11826         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11827
11828 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
11829
11830         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
11831         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
11832         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
11833
11834 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11835
11836         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
11837
11838 2008-06-16  Ira Rosen  <irar@il.ibm.com>
11839
11840         PR tree-optimization/36493
11841         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
11842         the arguments list. Use VECTYPE to create vector pointer.
11843         (vectorizable_store): Fail if accesses through a pointer to vectype
11844         do not alias the original memory reference operands.
11845         Call vect_create_data_ref_ptr without the removed argument.
11846         (vectorizable_load): Likewise.
11847         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
11848         removed argument.
11849
11850 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
11851
11852         PR target/36336
11853         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
11854         reg_equiv_constant.
11855
11856 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
11857
11858         * config/mips/loongson2ef.md: New file.
11859         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
11860         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
11861         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
11862         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
11863         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
11864         and loongson_2f.
11865         (loongson2ef.md): New include.
11866         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
11867         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
11868         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
11869         (loongson_gt_<mode>, loongson_extract_halfword)
11870         (loongson_insert_halfword_0, loongson_insert_halfword_2)
11871         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
11872         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
11873         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
11874         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
11875         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
11876         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
11877         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
11878         (vec_interleave_low<mode>): Define type attribute.
11879         * config/mips/mips.c (mips_ls2): New static variable.
11880         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
11881         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
11882         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
11883         Implement target scheduling hooks.
11884         (mips_multipass_dfa_lookahead): Update to handle tuning for
11885         Loongson 2E/2F.
11886         (mips_sched_init): Initialize data for Loongson scheduling.
11887         (mips_ls2_variable_issue): New static function.
11888         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
11889         Add sanity check.
11890         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
11891         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
11892         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
11893         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
11894         Handle ST Loongson 2E/2F cores.
11895         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
11896
11897 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11898
11899         * omp-low.c (extract_omp_for_data): Fix comment typo.
11900         * c.opt: Fix typo.
11901
11902 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11903
11904         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
11905         FIXME note about gcc/config.guess.
11906         * doc/options.texi (Option file format): Remove non-ASCII bytes.
11907         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
11908         * doc/cppopts.texi: Likewise.
11909         * doc/extend.texi: Likewise.
11910         * doc/gcc.texi: Likewise.
11911         * doc/gccint.texi: Likewise.
11912         * doc/gcov.texi: Likewise.
11913         * doc/gty.texi: Likewise.
11914         * doc/hostconfig.texi: Likewise.
11915         * doc/install.texi: Likewise.
11916         * doc/invoke.texi: Likewise.
11917         * doc/loop.texi: Likewise.
11918         * doc/makefile.texi: Likewise.
11919         * doc/md.texi: Likewise.
11920         * doc/passes.texi: Likewise.
11921         * doc/tm.texi: Likewise.
11922         * doc/tree-ssa.texi: Likewise.
11923         * doc/trouble.texi: Likewise.
11924
11925 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
11926             Nathan Sidwell  <nathan@codesourcery.com>
11927             Maxim Kuvyrkov  <maxim@codesourcery.com>
11928             Richard Sandiford  <rdsandiford@googlemail.com>
11929
11930         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
11931         * config/mips/mips-protos.h (mips_expand_vector_init): New.
11932         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
11933         builtins.
11934         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
11935         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
11936         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
11937         V8QImode cases.
11938         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
11939         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
11940         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
11941         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
11942         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
11943         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
11944         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
11945         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
11946         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
11947         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
11948         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
11949         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
11950         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
11951         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
11952         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
11953         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
11954         (mips_builtins): Add Loongson builtins.
11955         (mips_loongson_2ef_bdesc): New.
11956         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
11957         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
11958         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
11959         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
11960         New.
11961         (mips_expand_vector_init): New.
11962         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
11963         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
11964         if appropriate.
11965         * config/mips/mips.md: Add unspec numbers for Loongson
11966         builtins.  Include loongson.md.
11967         (MOVE64): Include Loongson vector modes.
11968         (SPLITF): Include Loongson vector modes.
11969         (HALFMODE): Handle Loongson vector modes.
11970         * config/mips/loongson.md: New.
11971         * config/mips/loongson.h: New.
11972         * config.gcc: Add loongson.h header for mips*-*-* targets.
11973         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
11974
11975 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
11976
11977         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
11978         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
11979         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
11980         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
11981         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
11982         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
11983         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
11984         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
11985         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
11986         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
11987         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
11988         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
11989         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
11990         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
11991         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
11992         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
11993         Remove use_fixproto=yes.
11994         (ia64*-*-hpux*): Remove comment about using fixproto.
11995         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
11996
11997 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11998
11999         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
12000         library rebuilds.
12001         * configure: Regenerate.
12002
12003 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
12004
12005         PR middle-end/36520
12006         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
12007         before evaluating it.
12008
12009 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
12010
12011         PR c/36507
12012         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
12013         nested inline functions.
12014         (start_decl, start_function): Don't invert DECL_EXTERNAL
12015         for nested inline functions.
12016
12017 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
12018
12019         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
12020         splits that must be made for correctness.
12021
12022 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
12023
12024         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
12025         (AVAIL_NON_MIPS16): Likewise.
12026         (mips_builtin_description): Replace target_flags with a predicate.
12027         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
12028         (dspr2_32): New availability predicates.
12029         (MIPS_BUILTIN): New macro.
12030         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
12031         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
12032         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
12033         Replace the TARGET_FLAGS parameters with AVAIL parameters.
12034         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
12035         (mips_dsp_32only_bdesc): Merge into...
12036         (mips_builtins): ...this new array.
12037         (mips_bdesc_map, mips_bdesc_arrays): Delete.
12038         (mips_init_builtins): Update after above changes.
12039         (mips_expand_builtin_1): Merge into...
12040         (mips_expand_builtin): ...here and update after above changes.
12041
12042 2008-06-12  Paul Brook  <paul@codesourcery.com>
12043
12044         * longlong.h (__arm__): Define count_leading_zeros.
12045         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
12046         (clzsi2, clzdi2): New functions.
12047         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
12048         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
12049         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
12050         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
12051         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
12052         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
12053         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
12054         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
12055         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
12056         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
12057
12058 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
12059
12060         * config/m68k/m68k.c (m68k_tune_flags): New.
12061         (override_options): Compute m68k_tune_flags.
12062         (MULL_COST, MULW_COST): Update for various variants of CFV2.
12063         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
12064
12065 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
12066
12067         PR middle-end/36506
12068         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
12069
12070 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
12071
12072         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
12073         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
12074
12075 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
12076
12077         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
12078         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
12079
12080 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
12081
12082         PR middle-end/36506
12083         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
12084         reductions.
12085
12086 2008-06-12  Richard Guenther  <rguenther@suse.de>
12087
12088         PR tree-optimization/36345
12089         * tree-flow.h (struct ptr_info_def): Align escape_mask,
12090         add memory_tag_needed flag.
12091         (may_alias_p): Declare.
12092         * tree-ssa-alias.c (may_alias_p): Export.
12093         (set_initial_properties): Use memory_tag_needed flag.
12094         (update_reference_counts): Likewise.
12095         (reset_alias_info): Reset memory_tag_needed flag.
12096         (create_name_tags): Check memory_tag_needed flag.
12097         (dump_points_to_info_for): Dump it.
12098         * tree-ssa-structalias.c (struct variable_info): Remove
12099         directly_dereferenced flag.
12100         (new_var_info): Do not initialize it.
12101         (process_constraint_1): Do not set it.
12102         (update_alias_info): Set is_dereferenced flag.
12103         (set_uids_in_ptset): Use may_alias_p.
12104         (set_used_smts): Check memory_tag_needed flag.
12105         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
12106         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
12107         memory_tag_needed flag.
12108         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
12109         from broken design.
12110
12111 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
12112
12113         * config/i386/i386.c (ix86_compute_frame_layout): Disable
12114         red zone for w64 abi.
12115         (ix86_expand_prologue): Likewise.
12116         (ix86_force_to_memory): Likewise.
12117         (ix86_free_from_memory): Likewise.
12118
12119 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
12120
12121         PR target/36425
12122         * config/rs6000/rs6000.c (rs6000_override_options): Set
12123         rs6000_isel conditionally to the absence of comand line override.
12124         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
12125         Remove duplicate rs6000_isel setting.
12126         * config/rs6000/eabispe.h: Ditto.
12127
12128 2008-06-11  Richard Guenther  <rguenther@suse.de>
12129
12130         * alias.c (get_alias_set): Use the element alias-set for arrays.
12131         (record_component_aliases): For arrays and vectors do nothing.
12132         * c-common.c (strict_aliasing_warning): Handle the cases
12133         of alias set zero explicitly.
12134         * Makefile.in (dfp.o-warn): Add -Wno-error.
12135
12136 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
12137
12138         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
12139         tune_32 tune_64.
12140         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
12141         tune_32 tune_64 to supported_defaults.  Allow values not
12142         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
12143         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
12144         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
12145         with_cpu_64 to generic for 64-bit-supporting configurations, not
12146         with_cpu.  Remove FIXMEs.
12147         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
12148         --with-arch-64, --with-tune-32, --with-tune-64): Document.
12149         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
12150         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
12151         arch_32 and arch_64.
12152
12153 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
12154             Olivier Hainque  <hainque@adacore.com>
12155
12156         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
12157         Use DECL_SIZE_UNIT to retrieve the size of the field.
12158
12159 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
12160
12161         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
12162         with function calls after declarations.  Lay out
12163         neon_float_type_node before further use.
12164
12165 2008-06-11  Richard Guenther  <rguenther@suse.de>
12166
12167         * tree-flow.h (may_point_to_global_var): Declare.
12168         * tree-ssa-alias.c (may_point_to_global_var): New function.
12169         * tree-ssa-sink.c (is_hidden_global_store): Use it.
12170
12171 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
12172
12173         * configure.ac: Teach that fido supports .debug_line.
12174         * configure: Regenerate.
12175
12176 2008-06-10  Tom Tromey  <tromey@redhat.com>
12177
12178         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
12179         debug hook.
12180
12181 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
12182
12183         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
12184         (encode_decimal64, decode_decimal64, encode_decimal128,
12185         decode_decimal128): Reverse order of 32-bit parts of value if host
12186         and target endianness differ.
12187
12188 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
12189
12190         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
12191         Avoid division by 0.
12192         (tree_mod_pow2_value_transform): Likewise.
12193         (tree_ic_transform): Likewise.
12194         (tree_stringops_transform): Likewise.
12195         (tree_mod_subtract_transform): Likewise.
12196         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
12197         (copy_edges_for_bb): Likewise.
12198         (initialize_cfun): Likewise.
12199
12200 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
12201
12202         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
12203         nonmemory_operand. Add "N" operand constraint.
12204         (*btsi): Ditto.
12205         (*jcc_btdi_mask_rex64): New instruction and split pattern.
12206         (*jcc_btsi_mask): Ditto.
12207         (*jcc_btsi_mask_1): Ditto.
12208
12209 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
12210
12211         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
12212         TYPE_CANONICAL for copied element type.
12213
12214 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
12215
12216         PR target/36473
12217         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
12218         Add m_CORE2 and m_GENERIC.
12219         * config/i386/predicates.md (bt_comparison_operator): New predicate.
12220         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
12221         (*btsi): Ditto.
12222         (*jcc_btdi_rex64): New instruction and split pattern.
12223         (*jcc_btsi): Ditto.
12224         (*jcc_btsi_1): Ditto.
12225         (*btsq): Fix Intel asm dialect operand order.
12226         (*btrq): Ditto.
12227         (*btcq): Ditto.
12228
12229 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
12230
12231         PR middle-end/36447
12232         * simplify-rtx.c (simplify_subreg): Add check for shift count
12233         greater than size.
12234
12235 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
12236
12237         * doc/md.texi: Synchronize with later constraints.md change.
12238         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
12239         with a C implementation.
12240         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
12241         MFLO handling.
12242         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
12243         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
12244         when moving to and from MD_REGNUM.
12245         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
12246         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
12247         Handle byte and halfword moves.
12248         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
12249         separately.
12250         * config/mips/constraints.md (h): Turn into NO_REGS.
12251         (l, x): Update documentation.
12252         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
12253         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
12254         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
12255         (HILO): New mode iterator.
12256         (MOVE128): Add TI.
12257         (any_div): New code iterator.
12258         (u): Extend code attribute to div and udiv.
12259         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
12260         d_operand in the splitters.  Remove redundant CONST_INT checks.
12261         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
12262         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
12263         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
12264         accordingly, using normal moves instead of unspecs to move LO into
12265         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
12266         (<u>mulsidi3): Handle expansion in C code.
12267         (<u>mulsidi3_32bit_internal): Rename to...
12268         (<u>mulsidi3_32bit): ...this.
12269         (<u>mulsidi3_32bit_r4000): Fix insn separator.
12270         (*<u>mulsidi3_64bit): Rename to...
12271         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
12272         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
12273         to set LO and HI to the multiplication result.  Use a normal move
12274         for MFLO and an unspec for MFHI.
12275         (*<u>mulsidi3_64bit_parts): Replace with...
12276         (<u>mulsidi3_64bit_hilo): ...this new instruction.
12277         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
12278         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
12279         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
12280         instead of HI.  Split the instruction into a separate multiplication
12281         and MFHI if !TARGET_FIX_R4000.
12282         (<su>muldi3_highpart): Likewise.
12283         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
12284         and the "=h" clobber.
12285         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
12286         (<u>mulditi3): New expander.
12287         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
12288         (madsi): Remove "=h" clobber.
12289         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
12290         Force the modulus result to be a GPR and split the instruction into
12291         a division followed by an MFHI after reload.
12292         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
12293         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
12294         the MIPS16 HIGH define_split.
12295         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
12296         of acc<->gpr moves to "multi".
12297         (*movdi_64bit): Replace the single "x" alternative with
12298         alternatives for moving into and out of "a".
12299         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
12300         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
12301         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
12302         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
12303         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
12304         (movti): New expander.
12305         (*movti, *movti_mips16): New insns.
12306         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
12307         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
12308         (mthi<GPR:mode>_<HILO:mode>): Likewise.
12309         * config/mips/predicates.md (fpr_operand): Delete.
12310         (d_operand): New predicate.
12311
12312 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
12313
12314         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
12315         failure on some Bourne shells.
12316         (x86_64-*-*): Ditto.
12317
12318 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
12319
12320         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
12321
12322 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
12323
12324         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
12325         (sparc-sun-solaris2*): Likewise.
12326
12327 2008-06-09  Arnaud Charlet  <charlet@adacore.com
12328
12329         * doc/install.texi: Update requirements to build the Ada compiler.
12330
12331 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
12332
12333         * df-scan.c (struct df_scan_problem_data): Remove the
12334         mw_link_pool alloc pool.
12335         (df_scan_free_internal): Don't free it.
12336         (df_scan_alloc): Don't allocate it.
12337         * df.h (struct df_link): Update comment.
12338
12339 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
12340
12341         * except.h: Correct checks for when SJLJ exceptions must be used.
12342
12343 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12344
12345         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
12346         default.
12347
12348 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
12349
12350         PR tree-optimization/36218
12351         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
12352         configure for the build system.
12353         (BUILD_LDFLAGS): Define.
12354         * configure: Regenerate.
12355         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
12356
12357 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
12358
12359         PR target/36424
12360         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
12361         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
12362         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
12363
12364 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
12365
12366         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
12367
12368 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
12369
12370         * config.gcc (Obsolete configurations): Remove list of
12371         configurations.
12372         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
12373         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
12374         targets matched by those patterns.
12375         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
12376         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
12377         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
12378         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
12379         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
12380         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
12381         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
12382         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
12383         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
12384         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
12385         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
12386         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
12387         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
12388         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
12389         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
12390         Make code for Solaris 7 and greater unconditional for Solaris.
12391         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
12392         Remove --with-* handling.
12393         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
12394         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
12395         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
12396         LINK_OS_WINDISS_SPEC): Remove.
12397         * config/rs6000/sysv4.opt (mwindiss): Remove.
12398         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
12399         * configure: Regenerate.
12400         * doc/cpp.texi: Don't mention BeOS.
12401         * doc/extend.texi (interrupt): Don't mention MS1.
12402         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
12403         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
12404         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
12405         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
12406         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
12407         Remove.
12408         * doc/invoke.texi (MT Options): Remove.
12409         (-mwindiss): Remove.
12410         (CRIS Options): Remove cris-axis-aout references.
12411         (HPPA Options): Don't mention hppa1.1-*-pro.
12412         * doc/md.texi: (MorphoTech family): Remove.
12413         * libgcc2.c: Don't handle UWIN.
12414         * config/alpha/t-unicosmk: Remove.
12415         * config/alpha/unicosmk.h: Remove.
12416         * config/arm/kaos-arm.h: Remove.
12417         * config/arm/kaos-strongarm.h: Remove.
12418         * config/arm/strongarm-coff.h: Remove.
12419         * config/arm/strongarm-elf.h: Remove.
12420         * config/arm/strongarm-pe.h: Remove.
12421         * config/arm/t-strongarm-pe: Remove.
12422         * config/arm/t-xscale-coff: Remove.
12423         * config/arm/t-xscale-elf: Remove.
12424         * config/arm/xscale-coff.h: Remove.
12425         * config/arm/xscale-elf.h: Remove.
12426         * config/chorus.h: Remove.
12427         * config/cris/aout.h: Remove.
12428         * config/cris/aout.opt: Remove.
12429         * config/cris/t-aout: Remove.
12430         * config/i386/beos-elf.h: Remove.
12431         * config/i386/kaos-i386.h: Remove.
12432         * config/i386/ptx4-i.h: Remove.
12433         * config/i386/sco5.h: Remove.
12434         * config/i386/sco5.opt: Remove.
12435         * config/i386/sysv4-cpp.h: Remove.
12436         * config/i386/sysv5.h: Remove.
12437         * config/i386/t-beos: Remove.
12438         * config/i386/t-sco5: Remove.
12439         * config/i386/t-uwin: Remove.
12440         * config/i386/uwin.asm: Remove.
12441         * config/i386/uwin.h: Remove.
12442         * config/kaos.h: Remove.
12443         * config/mips/windiss.h: Remove.
12444         * config/mt: Remove directory.
12445         * config/pa/pa-osf.h: Remove.
12446         * config/pa/pa-pro-end.h: Remove.
12447         * config/pa/t-pro: Remove.
12448         * config/ptx4.h: Remove.
12449         * config/rs6000/beos.h: Remove.
12450         * config/rs6000/kaos-ppc.h: Remove.
12451         * config/rs6000/t-beos: Remove.
12452         * config/rs6000/windiss.h: Remove.
12453         * config/sh/kaos-sh.h: Remove.
12454         * config/sol2-6.h: Remove.
12455         * config/sparc/sol26-sld.h: Remove.
12456         * config/sparc/sysv4-only.h: Remove.
12457         * config/vax/bsd.h: Remove.
12458         * config/vax/t-memfuncs: Remove.
12459         * config/vax/ultrix.h: Remove.
12460         * config/vax/vaxv.h: Remove.
12461         * config/windiss.h: Remove.
12462
12463 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
12464
12465         PR rtl-optimization/36438
12466         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
12467         for vector shifts with constant scalar shift operands.
12468
12469 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
12470
12471         * doc/invoke.texi: Document -march=xlr.
12472         * config/mips/xlr.md: New file.
12473         * config/mips/mips.md: Include it.
12474         (cpu): Add "xlr".
12475         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
12476         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
12477         (mips_rtx_cost_data): Likewise.
12478
12479 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
12480
12481         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
12482         PRE_INC and PRE_DEC cases.
12483
12484 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
12485
12486         PR rtl-optimization/36419
12487         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
12488         the emitting jump insn.
12489
12490         PR target/36362
12491         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
12492         is not bool, boolify the whole *expr_p and convert to the desired type.
12493
12494 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
12495
12496         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
12497         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
12498         Add omp_private_outer_ref hook, add another argument to
12499         omp_clause_default_ctor hook.
12500         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
12501         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
12502         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
12503         hook_tree_tree_tree_tree_null.
12504         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
12505         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
12506         * hooks.c (hook_tree_tree_tree_tree_null): New function.
12507         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
12508         * tree.def (OMP_TASK): New tree code.
12509         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
12510         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
12511         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
12512         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
12513         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
12514         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
12515         OMP_CLAUSE_COLLAPSE_EXPR): Define.
12516         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
12517         (OMP_DIRECTIVE_P): Add OMP_TASK.
12518         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
12519         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
12520         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
12521         and OMP_CLAUSE_UNTIED entries.
12522         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
12523         num_ops to 2.
12524         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12525         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
12526         * tree-pretty-print.c (dump_omp_clause): Handle
12527         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
12528         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
12529         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
12530         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
12531         warning about unsigned iterators.  Change decl/init/cond/incr
12532         arguments to TREE_VECs, check arguments for all collapsed loops.
12533         (c_finish_omp_taskwait): New function.
12534         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
12535         ws_clauses.
12536         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
12537         default_function_array_conversion on init.  Add par_clauses argument.
12538         If decl is present in parallel's lastprivate clause, change it to
12539         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
12540         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
12541         collapse count in clauses.
12542         (c_parser_omp_for, c_parser_omp_parallel): Adjust
12543         c_parser_omp_for_loop callers.
12544         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
12545         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
12546         (c_parser_omp_clause_name): Handle collapse and untied clauses.
12547         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
12548         functions.
12549         (c_parser_omp_clause_schedule): Handle schedule(auto).
12550         Include correct location in the error message.
12551         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
12552         and PRAGMA_OMP_CLAUSE_UNTIED.
12553         (OMP_TASK_CLAUSE_MASK): Define.
12554         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
12555         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
12556         * tree-nested.c (convert_nonlocal_omp_clauses,
12557         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
12558         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
12559         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12560         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
12561         OMP_CLAUSE_DECL.
12562         (conver_nonlocal_reference, convert_local_reference,
12563         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
12564         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
12565         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
12566         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
12567         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
12568         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
12569         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
12570         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
12571         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
12572         OMP_CLAUSE_UNTIED.
12573         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
12574         * c-common.h (c_finish_omp_taskwait): New prototype.
12575         * gimple-low.c (lower_stmt): Handle OMP_TASK.
12576         * tree-parloops.c (create_parallel_loop): Create 1 entry
12577         vectors for OMP_FOR_{INIT,COND,INCR}.
12578         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
12579         (make_edges): Handle OMP_TASK.
12580         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
12581         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12582         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
12583         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
12584         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
12585         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
12586         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
12587         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
12588         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
12589         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
12590         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
12591         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
12592         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
12593         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
12594         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
12595         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
12596         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
12597         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
12598         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
12599         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
12600         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
12601         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
12602         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
12603         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
12604         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
12605         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
12606         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
12607         original iterator is present in lastprivate clause or if
12608         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
12609         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12610         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
12611         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
12612         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
12613         if it is set, lookup var in outer contexts too.  Handle
12614         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
12615         to be implicitly determined firstprivate for task regions.
12616         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
12617         if it is set, lookup var in outer contexts too.  Set
12618         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
12619         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
12620         OMP_CLAUSE_UNTIED.  Take region_type as last argument
12621         instead of in_parallel and in_combined_parallel.
12622         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
12623         Adjust callers.
12624         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
12625         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
12626         (new_omp_context): Set default_kind to
12627         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
12628         (omp_region_type): New enum.
12629         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
12630         fields, add region_type.
12631         (new_omp_context): Take region_type as argument instead of is_parallel
12632         and is_combined_parallel.
12633         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
12634         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
12635         ctx->is_combined_parallel checks.
12636         (gimplify_omp_task): New function.
12637         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
12638         OMP_CLAUSE_UNTIED.
12639         * omp-low.c (extract_omp_for_data): Use schedule(static)
12640         for schedule(auto).  Handle pointer and unsigned iterators.
12641         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
12642         Add loops argument.  Extract data for collapsed OMP_FOR loops.
12643         (expand_parallel_call): Assert sched_kind isn't auto,
12644         map runtime schedule to index 3.
12645         (struct omp_for_data_loop): New type.
12646         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
12647         Add loop, loops, collapse and iter_type fields.
12648         (workshare_safe_to_combine_p): Disallow combined for if
12649         iter_type is unsigned long long.  Don't combine collapse > 1 loops
12650         unless all bounds and steps are constant.  Adjust extract_omp_for_data
12651         caller.
12652         (expand_omp_for_generic): Handle pointer, unsigned and long long
12653         iterators.  Handle collapsed OMP_FOR loops.  Adjust
12654         for struct omp_for_data changes.  If libgomp function doesn't return
12655         boolean_type_node, add comparison of the return value with 0.
12656         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
12657         pointer, unsigned and long long iterators.  Adjust for struct
12658         omp_for_data changes.
12659         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
12660         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
12661         unsigned long long.  Allocate loops array, pass it to
12662         extract_omp_for_data.  For collapse > 1 loops use always
12663         expand_omp_for_generic.
12664         (omp_context): Add sfield_map and srecord_type fields.
12665         (is_task_ctx, lookup_sfield): New functions.
12666         (use_pointer_for_field): Use is_task_ctx helper.  Change first
12667         argument's type from const_tree to tree.  Clarify comment.
12668         In OMP_TASK disallow copy-in/out sharing.
12669         (build_sender_ref): Call lookup_sfield instead of lookup_field.
12670         (install_var_field): Add mask argument.  Populate both record_type
12671         and srecord_type if needed.
12672         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
12673         in srecord_type.
12674         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
12675         and DECL_FIELD_OFFSET.
12676         (scan_sharing_clauses): Adjust install_var_field callers.  For
12677         firstprivate clauses on explicit tasks allocate the var by value in
12678         record_type unconditionally, rather than by reference.
12679         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
12680         Use is_taskreg_ctx instead of is_parallel_ctx.
12681         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
12682         (create_omp_child_function_name): Add task_copy argument, use
12683         *_omp_cpyfn* names if it is true.
12684         (create_omp_child_function): Add task_copy argument, if true create
12685         *_omp_cpyfn* helper function.
12686         (scan_omp_parallel): Adjust create_omp_child_function callers.
12687         Rename parallel_nesting_level to taskreg_nesting_level.
12688         (scan_omp_task): New function.
12689         (lower_rec_input_clauses): Don't run constructors for firstprivate
12690         explicit task vars which are initialized by *_omp_cpyfn*.
12691         Pass outer var ref to omp_clause_default_ctor hook if
12692         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
12693         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
12694         OMP_CLAUSE_REDUCTION_INIT.
12695         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
12696         avoid duplicate setting of fields.  Handle
12697         OMP_CLAUSE_PRIVATE_OUTER_REF.
12698         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
12699         copy-out if TREE_READONLY, only copy-in.
12700         (expand_task_copyfn): New function.
12701         (expand_task_call): New function.
12702         (struct omp_taskcopy_context): New type.
12703         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
12704         New functions.
12705         (lower_omp_parallel): Rename to...
12706         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
12707         Call create_task_copyfn if srecord_type is needed.  Adjust
12708         sender_decl type.
12709         (task_shared_vars): New variable.
12710         (check_omp_nesting_restrictions): Warn if work-sharing,
12711         barrier, master or ordered region is closely nested inside OMP_TASK.
12712         Add warnings for barrier if closely nested inside of work-sharing,
12713         ordered, or master region.
12714         (scan_omp_1): Call check_omp_nesting_restrictions even for
12715         GOMP_barrier calls.  Rename parallel_nesting_level to
12716         taskreg_nesting_level.  Handle OMP_TASK.
12717         (lower_lastprivate_clauses): Even if some lastprivate is found on a
12718         work-sharing construct, continue looking for them on parent parallel
12719         construct.
12720         (lower_omp_for_lastprivate): Add lastprivate clauses
12721         to the beginning of dlist rather than end.  Adjust for struct
12722         omp_for_data changes.
12723         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
12724         not after it.  Handle collapsed OMP_FOR loops, adjust for
12725         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
12726         (get_ws_args_for): Adjust extract_omp_for_data caller.
12727         (scan_omp_for): Handle collapsed OMP_FOR
12728         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
12729         (lower_omp_single_simple): If libgomp function doesn't return
12730         boolean_type_node, add comparison of the return value with 0.
12731         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
12732         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
12733         (parallel_nesting_level): Rename to...
12734         (taskreg_nesting_level): ... this.
12735         (is_taskreg_ctx): New function.
12736         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
12737         of is_parallel_ctx.
12738         (execute_lower_omp): Rename parallel_nesting_level to
12739         taskreg_nesting_level.
12740         (expand_omp_parallel): Rename to...
12741         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
12742         Call omp_task_call for OMP_TASK regions.
12743         (expand_omp): Adjust caller, handle OMP_TASK.
12744         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
12745
12746         * bitmap.c (bitmap_default_obstack_depth): New variable.
12747         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
12748         if argument is NULL and bitmap_default_obstack is already initialized.
12749         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
12750         at the end.
12751         * matrix-reorg.c (matrix_reorg): Likewise.
12752
12753 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
12754
12755         * config/i386/i386.md (*indirect_jump): Macroize using P
12756         mode iterator.  Remove !TARGET_64BIT from insn constraints.
12757         (*tablejump_1): Ditto.
12758         (*indirect_jump_rex64): Remove insn pattern.
12759         (*tablejump_1_rex64): Ditto.
12760         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
12761         and eh_return_si insn patterns.
12762
12763 2008-06-06  Richard Guenther  <rguenther@suse.de>
12764
12765         * tree-ssa-structalias.c (merge_smts_into): Remove.
12766         (find_what_p_points_to): Do not bother to compute the
12767         points-to set for pt_anything pointers.
12768         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
12769         for pt_anything pointers is ok.
12770
12771 2008-06-06  Jan Hubicka  <jh@suse.cz>
12772
12773         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
12774
12775 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12776
12777         * cgraph.c: Fix typos in comments.
12778         (cgraph_availability_names): Fix string typo.
12779         * fold-const.c: Fix typos in comments.
12780         (fold_binary): Fix typo in warning.
12781         * genautomata.c: Fix typos in comments.
12782         (check_presence_pattern_sets): Fix typo in local variable.
12783         (output_description): Fix typo in output.
12784         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
12785         * hwint.h: Likewise.
12786         * matrix-reorg.c (check_allocation_function): Likewise.
12787         * omega.c (smooth_weird_equations): Likewise.
12788         * auto-inc-dec.c: Fix typos in comments.
12789         * bb-reorder.c: Likewise.
12790         * builtins.c: Likewise.
12791         * c-common.c: Likewise.
12792         * c-cppbuiltin.c: Likewise.
12793         * c-parser.c: Likewise.
12794         * c-pretty-print.c: Likewise.
12795         * cfgcleanup.c: Likewise.
12796         * cfgexpand.c: Likewise.
12797         * cfghooks.c: Likewise.
12798         * cfglayout.c: Likewise.
12799         * cfgloopmanip.c: Likewise.
12800         * cgraphunit.c: Likewise.
12801         * coverage.c: Likewise.
12802         * dbxout.c: Likewise.
12803         * df-byte-scan.c: Likewise.
12804         * df-core.c: Likewise.
12805         * df-problems.c: Likewise.
12806         * df-scan.c: Likewise.
12807         * dfp.c: Likewise.
12808         * dominance.c: Likewise.
12809         * domwalk.c: Likewise.
12810         * dse.c: Likewise.
12811         * dwarf2out.c: Likewise.
12812         * emit-rtl.c: Likewise.
12813         * et-forest.c: Likewise.
12814         * function.c: Likewise.
12815         * function.h: Likewise.
12816         * gcc.c: Likewise.
12817         * gcov-io.c: Likewise.
12818         * gcov.c: Likewise.
12819         * gcse.c: Likewise.
12820         * genattrtab.c: Likewise.
12821         * ggc-page.c: Likewise.
12822         * gimplify.c: Likewise.
12823         * gthr-lynx.h: Likewise.
12824         * haifa-sched.c: Likewise.
12825         * ipa-cp.c: Likewise.
12826         * ipa-inline.c: Likewise.
12827         * ipa-prop.h: Likewise.
12828         * ipa-pure-const.c: Likewise.
12829         * ipa-struct-reorg.c: Likewise.
12830         * ipa-struct-reorg.h: Likewise.
12831         * ipa-type-escape.c: Likewise.
12832         * ipa.c: Likewise.
12833         * loop-doloop.c: Likewise.
12834         * mips-tfile.c: Likewise.
12835         * mkmap-flat.awk: Likewise.
12836         * mkmap-symver.awk: Likewise.
12837         * modulo-sched.c: Likewise.
12838         * omp-low.c: Likewise.
12839         * optabs.c: Likewise.
12840         * optabs.h: Likewise.
12841         * opts.c: Likewise.
12842         * passes.c: Likewise.
12843         * postreload-gcse.c: Likewise.
12844         * postreload.c: Likewise.
12845         * predict.c: Likewise.
12846         * pretty-print.h: Likewise.
12847         * profile.c: Likewise.
12848         * protoize.c: Likewise.
12849         * ra-conflict.c: Likewise.
12850         * real.c: Likewise.
12851         * recog.c: Likewise.
12852         * regclass.c: Likewise.
12853         * regs.h: Likewise.
12854         * reload.c: Likewise.
12855         * rtl-error.c: Likewise.
12856         * rtlanal.c: Likewise.
12857         * scan.h: Likewise.
12858         * sched-rgn.c: Likewise.
12859         * see.c: Likewise.
12860         * stmt.c: Likewise.
12861         * target.h: Likewise.
12862         * tree-dfa.c: Likewise.
12863         * tree-eh.c: Likewise.
12864         * tree-flow-inline.h: Likewise.
12865         * tree-inline.c: Likewise.
12866         * tree-into-ssa.c: Likewise.
12867         * tree-loop-distribution.c: Likewise.
12868         * tree-nested.c: Likewise.
12869         * tree-parloops.c: Likewise.
12870         * tree-pass.h: Likewise.
12871         * tree-pretty-print.c: Likewise.
12872         * tree-profile.c: Likewise.
12873         * tree-scalar-evolution.c: Likewise.
12874         * tree-sra.c: Likewise.
12875         * tree-ssa-alias-warnings.c: Likewise.
12876         * tree-ssa-ccp.c: Likewise.
12877         * tree-ssa-coalesce.c: Likewise.
12878         * tree-ssa-dom.c: Likewise.
12879         * tree-ssa-dse.c: Likewise.
12880         * tree-ssa-forwprop.c: Likewise.
12881         * tree-ssa-live.c: Likewise.
12882         * tree-ssa-live.h: Likewise.
12883         * tree-ssa-loop-im.c: Likewise.
12884         * tree-ssa-loop-ivopts.c: Likewise.
12885         * tree-ssa-loop-niter.c: Likewise.
12886         * tree-ssa-loop-prefetch.c: Likewise.
12887         * tree-ssa-phiopt.c: Likewise.
12888         * tree-ssa-phiprop.c: Likewise.
12889         * tree-ssa-sccvn.c: Likewise.
12890         * tree-ssa-ter.c: Likewise.
12891         * tree-ssa-threadupdate.c: Likewise.
12892         * tree-ssa.c: Likewise.
12893         * tree-vect-analyze.c: Likewise.
12894         * tree-vect-transform.c: Likewise.
12895         * tree-vectorizer.c: Likewise.
12896         * tree-vn.c: Likewise.
12897         * tree-vrp.c: Likewise.
12898         * tree.c: Likewise.
12899         * tree.def: Likewise.
12900         * tree.h: Likewise.
12901         * unwind-dw2-fde.c: Likewise.
12902         * unwind.inc: Likewise.
12903         * value-prof.c: Likewise.
12904         * vmsdbgout.c: Likewise.
12905
12906 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
12907
12908         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
12909         always place FP constants in the TOC for TARGET_POWERPC64.
12910         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
12911
12912 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
12913
12914         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
12915         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
12916         enable for TARGET_E500_DOUBLE.
12917         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
12918         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
12919         floating-point modes like integer modes for E500 double.
12920         (rs6000_legitimate_offset_address_p): Likewise.
12921         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
12922         addressing for DDmode for E500 double.
12923         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
12924         modes as using 64-bits of registers for E500 double.
12925         (spe_build_register_parallel): Do not handle DDmode or TDmode.
12926         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
12927         specially for E500 double.
12928         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
12929         TDmode for E500 double.
12930         (rs6000_gimplify_va_arg): Only handle SDmode in registers
12931         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
12932         (rs6000_split_multireg_move): Do not handle TDmode specially for
12933         E500 double.
12934         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
12935         using 64-bit registers for E500 double.
12936         (emit_frame_save): Do not handle DDmode specially for E500 double.
12937         (gen_frame_mem_offset): Likewise.
12938         (rs6000_function_value): Do not call spe_build_register_parallel
12939         for DDmode or TDmode.
12940         (rs6000_libcall_value): Likewise.
12941         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
12942         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
12943         for E500 double.
12944
12945 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
12946
12947         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
12948         in comments.
12949
12950 2008-06-04  Junjie Gu <jgu@tensilica.com>
12951
12952         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
12953         comparison for frame pointers.
12954
12955 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
12956
12957         PR target/27386
12958         * config/avr/avr.h (PUSH_ROUNDING): Remove.
12959
12960 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
12961
12962         PR target/30243
12963         * builtins.c (expand_builtin_signbit): Don't take lowpart when
12964         register is already smaller or equal to required mode.
12965
12966 2008-06-04  Xinliang David Li  <davidxl@google.com>
12967
12968         * tree-call-cdce.c: New file.
12969         (cond_dead_built_in_calls): New static variable.
12970         (input_domain): New struct.
12971         (check_pow): New function.
12972         (check_builtin_call): Ditto.
12973         (check_target_format): Ditto.
12974         (is_call_dce_candidate): Ditto.
12975         (gen_one_condition): Ditto.
12976         (gen_conditions_for_domain): Ditto.
12977         (get_domain): Ditto.
12978         (gen_conditions_for_pow_cst_base): Ditto.
12979         (gen_conditions_for_pow_int_base): Ditto.
12980         (gen_conditions_for_pow): Ditto.
12981         (get_no_error_domain): Ditto.
12982         (gen_shrink_wrap_conditions): Ditto.
12983         (shrink_wrap_one_built_in_call): Ditto.
12984         (shink_wrap_conditional_dead_built_in_calls): Ditto.
12985         (tree_call_cdce): Ditto.
12986         (gate_call_cdce): Ditto.
12987         (pass_call_cdce): New gimple pass.
12988         * passes.c: (init_optimization_passes): New pass.
12989         * tree-pass.h: New pass declaration.
12990         * opts.c (decode_options): New flag setting.
12991         * common.opt: Add -ftree-builtin-call-dce flag.
12992         * Makefile.in: Add new source file.
12993         * tempvar.def: New tv_id.
12994         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
12995
12996 2008-06-04  Richard Guenther  <rguenther@suse.de>
12997
12998         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
12999         (is_call_clobbered): Always check var_ann->call_clobbered.
13000         (mark_call_clobbered): Always set var_ann->call_clobbered.
13001         (clear_call_clobbered): Always clear var_ann->call_clobbered.
13002         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
13003         (reset_alias_info): Clear call clobbering info on MTAGs and
13004         globals as well.
13005         (set_pt_anything): Set pt_global_mem.
13006         (create_tag_raw): Adjust comment.
13007         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
13008
13009 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
13010             Maxim Kuvyrkov  <maxim@codesourcery.com>
13011
13012         * config/m68k/m68k.opt (mxgot): New option.
13013         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
13014         (m68k_output_addr_const_extra): New.
13015         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
13016         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
13017         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
13018         * doc/invoke.texi (M680x0 Options): Document -mxgot.
13019
13020 2008-06-04  Richard Guenther  <rguenther@suse.de>
13021
13022         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
13023         negative or non-representable offsets.
13024
13025 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
13026
13027         * config/i386/i386.c (ix86_gen_leave): New.
13028         (ix86_gen_pop1): Likewise.
13029         (ix86_gen_add3): Likewise.
13030         (ix86_gen_sub3): Likewise.
13031         (ix86_gen_sub3_carry): Likewise.
13032         (ix86_gen_one_cmpl2): Likewise.
13033         (ix86_gen_monitor): Likewise.
13034         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
13035         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
13036         ix86_gen_one_cmpl2 and ix86_gen_monitor.
13037         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
13038         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
13039         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
13040         (ix86_expand_epilogue): Updated.
13041         (print_operand): Handle integer register operand for 'z'.
13042         (ix86_expand_strlensi_unroll_1): Likewise.
13043         (ix86_expand_strlen): Likewise.
13044         (ix86_expand_builtin): Likewise.
13045         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
13046         mov{q}/mov{l} and add{q}/add{l}.
13047
13048 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
13049
13050         * config/i386/i386.md (P): New mode iterator.
13051         (SFmode push_operand splitter): Macroize DImode and SImode pushes
13052         using P mode iterator.
13053         (DFmode push_operand splitter): Ditto.
13054         (XFmode push_operand splitter): Ditto.
13055         (DFmode float_extend SFmode push_operand splitter): Ditto.
13056         (XFmode float_extend SFmode push_operand splitter): Do not generate
13057         SImode pushes for 64bit target.  Macroize Dimode and SImode
13058         pushes using P mode iterator.
13059         (XFmode float_extend DFmode push_operand splitter): Ditto.
13060
13061 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
13062
13063         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
13064         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
13065         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
13066         return type to int.
13067         (ix86_call_abi_override): Remove check for call_used_regs.
13068
13069 2008-06-03  Richard Guenther  <rguenther@suse.de>
13070
13071         * tree-ssa-structalias.c (find_func_aliases): Add constraints
13072         for the lhs of calls if the return type contains pointers.
13073
13074 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
13075
13076         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
13077         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
13078         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
13079         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
13080         of cfun and DEFAULT_ABI to deceide abi mode.
13081         (DEFAULT_ABI): New.
13082         (REG_PARM_STACK_SPACE): Removed.
13083         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
13084         (STACK_BOUNDARY): Use default target to deceide stack boundary.
13085         * config/i386/i386-protos.h (ix86_cfun_abi): New.
13086         (ix86_function_abi): Likewise.
13087         (ix86_function_type_abi): Likewise.
13088         (ix86_call_abi_override): Likewise.
13089         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
13090         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
13091         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
13092         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
13093         specific defines.
13094         (X86_64_REGPARM_MAX): New.
13095         (X86_64_SSE_REGPARM_MAX): New.
13096         (X64_REGPARM_MAX): New.
13097         (X64_SSE_REGPARM_MAX): New.
13098         (X86_32_REGPARM_MAX): New.
13099         (X86_32_SSE_REGPARM_MAX): New.
13100         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
13101         (ix86_function_regparm): Handle user calling abi.
13102         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
13103         by DEFAULT_ABI versus SYSV_ABI check.
13104         (ix86_reg_parm_stack_space): New.
13105         (ix86_function_type_abi): New.
13106         (ix86_call_abi_override): New.
13107         (ix86_function_abi): New.
13108         (ix86_cfun_abi): New.
13109         (init_cumulative_args): Call abi specific initialization.
13110         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
13111         (function_arg_64): Extend SSE_REGPARM_MAX check.
13112         (function_arg (): Remove TARGET_64BIT_MS_ABI.
13113         (ix86_pass_by_reference): Likewise.
13114         (ix86_function_value_regno_p): Likewise.
13115         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
13116         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
13117         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
13118         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
13119         (setup_incoming_varargs_64): Adjust regparm for call abi.
13120         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
13121         (ix86_va_start): Likewise.
13122         (ix86_gimplify_va_arg): Likewise.
13123         (ix86_expand_prologue): Likewise.
13124         (output_pic_addr_const): Likewise.
13125         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
13126         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
13127         (x86_output_mi_thunk): Likewise.
13128         (x86_function_profiler): Likewise.
13129         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
13130         (SYSV_ABI, MS_ABI): New constants.
13131         (DEFAULT_ABI): New.
13132         (init_regs): Add prototype of function in regclass.c file.
13133         (OVERRIDE_ABI_FORMAT): New.
13134         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
13135         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
13136         (OUTGOING_REG_PARM_STACK_SPACE): New.
13137         (ix86_reg_parm_stack_space): New prototype.
13138         (CUMULATIVE_ARGS): Add call_abi member.
13139         (machine_function): Add call_abi member.
13140         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
13141         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
13142
13143 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
13144
13145         PR target/34879
13146         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
13147         (avr_builtin_setjmp_frame_value): New function.
13148         * config/avr/avr.md (nonlocal_goto_receiver): Define.
13149         (nonlocal_goto): Define.
13150
13151 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
13152
13153         * config/mips/mips.c (mips_emit_loadgp): Return early if
13154         there is nothing do to, otherwise emit a blockage if
13155         !TARGET_EXPLICIT_RELOCS || crtl->profile.
13156         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
13157
13158 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13159
13160         * configure.ac: Drop unneeded backslash ending up in config.in.
13161         * acinclude.m4: Likewise.
13162         * config.in: Regenerate.
13163
13164 2008-05-26  Jan Hubicka  <jh@suse.cz>
13165
13166         * predict.c (maybe_hot_frequency_p): Break out of...
13167         (maybe_hot_bb_p): ... here.
13168         (maybe_hot_edge_p): New.
13169         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
13170         * basic-block.h (maybe_hot_edge_p): Declare.
13171
13172 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
13173
13174         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
13175         (*cmpfp_<mode>_cc): Ditto.
13176         (*fp_jcc_8<mode>_387): Ditto.
13177         (*fop_<MODEF:mode>_2_i387): Ditto.
13178         (*fop_<MODEF:mode>_3_i387): Ditto.
13179         (*fop_xf_2_i387): Ditto.
13180         (*fop_xf_3_i387): Ditto.
13181
13182 2008-06-02  Tomas Bily  <tbily@suse.cz>
13183
13184         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
13185
13186 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
13187
13188         * config/mips/mips.c (mips_valid_offset_p): New function.
13189         (mips_valid_lo_sum_p): Likewise.
13190         (mips_classify_address): Use them.
13191         (mips_force_address): New function.
13192         (mips_legitimize_address): Use it.
13193         * config/mips/mips.md (MOVE128): New mode iterator.
13194         (movtf): Require TARGET_64BIT.  Remove empty strings.
13195         (*movtf_internal): Rename to...
13196         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
13197         of "R" and use {,fp}{load,store} attributes instead of "multi".
13198         Use a separate define_split.
13199         (*movtf_mips16): New pattern.
13200
13201 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
13202
13203         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
13204         * config/mips/mips.c (mips_expand_before_return): New function.
13205         (mips_expand_epilogue): Call it.
13206         * config/mips/mips.md (return): Turn into a define_expand.
13207         (*return): New insn.
13208
13209 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
13210
13211         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
13212         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
13213         functions.  Do not emit uses and clobbers of CONCATs; individually
13214         use and clobber their operands.
13215         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
13216         gen_clobber, emit_use and gen_use.
13217         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
13218         (expand_builtin_return): Likewise.
13219         * cfgbuild.c (count_basic_blocks): Likewise.
13220         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
13221         * explow.c (emit_stack_restore): Likewise.
13222         * expmed.c (extract_bit_field_1): Likewise.
13223         * expr.c (convert_move, emit_move_complex_parts): Likewise.
13224         (emit_move_multi_word, store_constructor): Likewise.
13225         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
13226         (thread_prologue_and_epilogue_insns): Likewise.
13227         * lower-subreg.c (resolve_simple_move): Likewise.
13228         * optabs.c (widen_operand, expand_binop): Likewise.
13229         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
13230         * reload.c (find_reloads): Likewise.
13231         * reload1.c (eliminate_regs_in_insn): Likewise.
13232         * stmt.c (expand_nl_goto_receiver): Likewise.
13233         * config/alpha/alpha.md (builtin_longjmp): Likewise.
13234         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
13235         * config/arm/arm.c (arm_load_pic_register): Likewise.
13236         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
13237         * config/arm/arm.md (untyped_return): Likewise.
13238         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
13239         * config/avr/avr.c (expand_prologue): Likewise.
13240         * config/bfin/bfin.c (do_unlink): Likewise.
13241         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
13242         * config/cris/cris.c (cris_expand_prologue): Likewise.
13243         * config/darwin.c (machopic_indirect_data_reference): Likewise.
13244         (machopic_legitimize_pic_address): Likewise.
13245         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
13246         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
13247         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
13248         (ix86_expand_convert_uns_didf_sse): Likewise.
13249         (ix86_expand_vector_init_general): Likewise.
13250         * config/ia64/ia64.md (eh_epilogue): Likewise.
13251         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
13252         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
13253         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
13254         (config/iq2000/iq2000.c): Likewise.
13255         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
13256         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
13257         (builtin_longjmp): Likewise.
13258         * config/mn10300/mn10300.md (call, call_value): Likewise.
13259         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
13260         * config/pdp11/pdp11.md (abshi2): Likewise.
13261         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
13262         * config/s390/s390.c (s390_emit_prologue): Likewise.
13263         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
13264         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
13265         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
13266         * config/sh/sh.c (prepare_move_operands): Likewise.
13267         (output_stack_adjust, sh_expand_epilogue): Likewise.
13268         (sh_set_return_address, sh_expand_t_scc): Likewise.
13269         * config/sparc/sparc.c (load_pic_register): Likewise.
13270         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
13271         * config/spu/spu.c (spu_expand_epilogue): Likewise.
13272         * config/v850/v850.c (expand_epilogue): Likewise.
13273
13274 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
13275
13276         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
13277         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
13278         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
13279         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
13280         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
13281         stack pointer register.
13282         (output_movhi): Remove code for interrupt specific writing to the
13283         stack pointer register.
13284
13285 2008-05-31  Richard Guenther  <rguenther@suse.de>
13286
13287         PR tree-optimization/34244
13288         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
13289         (tree_expr_nonzero_warnv_p): Likewise.
13290         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
13291         ssa_name_nonnegative_p.
13292         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
13293         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
13294         not tree_expr_nonzero_warnv_p.
13295
13296         PR tree-optimization/36262
13297         Revert
13298         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
13299
13300         PR tree-optimization/34244
13301         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
13302         (record_numbers_of_iterations): New function.
13303         (execute_vrp): Cache the numbers of iterations of loops.
13304         * tree-scalar-evolution.c (scev_reset_except_niters):
13305         New function.
13306         (scev_reset): Use scev_reset_except_niters.
13307         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
13308
13309 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
13310
13311         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
13312         __WORKAROUND_RETS when appropriate.
13313
13314 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
13315
13316         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
13317         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
13318         mode iterator.
13319         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
13320         *fop_df_comm_sse insn patterns using MODEF mode iterator.
13321         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
13322         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
13323         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
13324         *fop_df_1_mixed insn patterns using MODEF mode iterator.
13325         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
13326         *fop_df_1_sse insn patterns using MODEF mode iterator.
13327         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
13328         *fop_df_1_i387 insn patterns using MODEF mode iterator.
13329         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
13330         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
13331         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
13332         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
13333         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
13334         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
13335         (*fop_xf_4_i387): Use <MODE> for mode attribute.
13336         (*fop_xf_5_i387): Ditto.
13337         (*fop_xf_6_i387): Ditto.
13338
13339 2008-05-30  Richard Guenther  <rguenther@suse.de>
13340
13341         * builtins.c (build_string_literal): Avoid generating
13342         a non-gimple_val result.
13343
13344 2008-05-30  DJ Delorie  <dj@redhat.com>
13345
13346         * exec-tool.in: Use an environment variable (private) instead of a
13347         file (shared) as a semaphore, so as to not break parallel builds.
13348
13349 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
13350
13351         * optabs.c (maybe_encapsulate_block): Remove.
13352         (emit_libcall_block): Adjust accordingly.
13353         * optabs.h (maybe_encapsulate_block): Remove prototype.
13354
13355         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
13356         Don't use maybe_encapsulate_block.
13357
13358 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
13359
13360         * config/rs6000/rs6000.c (rs6000_legitimize_address,
13361         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
13362         rtx is a SYMBOL_REF before calling get_pool_constant.
13363
13364 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
13365
13366         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
13367
13368 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
13369
13370         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
13371         rather than OS names to choose INO_T_EQ definition.
13372         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
13373         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
13374
13375 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
13376
13377         PR target/36348
13378         * config/darwin-f.c: New.
13379         * config/t-darwin: Added rule to build darwin-f.o.
13380         * config.gcc: Defined new variable, fortran_target_objs.
13381         (*-*-darwin*): Set fortran_target_objs.
13382         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
13383         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
13384         * configure: Regenerated.
13385
13386 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
13387
13388         PR target/35771
13389         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
13390         canonical type if needed.
13391
13392 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
13393
13394         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
13395
13396 2008-05-29  Richard Guenther  <rguenther@suse.de>
13397
13398         PR tree-optimization/36343
13399         PR tree-optimization/36346
13400         PR tree-optimization/36347
13401         * tree-flow.h (clobber_what_p_points_to): Declare.
13402         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
13403         pointed-to variable is dereferenced is irrelevant to whether
13404         the pointer can access the pointed-to variable.
13405         (clobber_what_p_points_to): New function.
13406         * tree-ssa-alias.c (set_initial_properties): Use it.
13407         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
13408         call clobber check for NMTs.
13409
13410 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
13411
13412         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
13413         for printing gcov_type.
13414
13415 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
13416
13417         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
13418         and the eh region information.
13419         * value-prof.c (gimple_move_stmt_histograms): New function.
13420         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
13421
13422 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
13423
13424         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
13425
13426 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
13427
13428         * value-prof.c (tree_ic_transform): Print counts.
13429         * tree-profile.c (tree_gen_ic_func_profiler):
13430         Clear __gcov_indreict_call_callee variable to avoid misattribution
13431         of the profile.
13432
13433 2008-05-28  Rafael Espíndola  <espindola@google.com>
13434
13435         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
13436         invalid sharing.
13437
13438 2008-05-28  Richard Guenther  <rguenther@suse.de>
13439
13440         PR tree-optimization/36339
13441         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
13442         and clobbering code out of the loop.
13443
13444 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13445
13446         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
13447         letters defined.
13448
13449         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
13450         s390_contiguous_bitmask_p, s390_symref_operand_p,
13451         s390_check_symref_alignment, s390_reload_larl_operand,
13452         s390_reload_symref_address): New functions.
13453         (s390_branch_condition_mnemonic): Support compare and branch
13454         instructions.
13455         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
13456         and 'W' constraints.
13457         (s390_secondary_reload): Add secondary reloads for unaligned
13458         symbol refs or symbol refs to floating point or QI/TI mode
13459         integer values.
13460         (legitimate_address_p): Accept symbol references as addresses.
13461         (s390_expand_insv): Use rotate and insert selected bits
13462         instruction for insv when building for z10.
13463         (print_operand_address): Handle symbol ref addresses.
13464         (print_operand): Output modifier 'c' added for signed byte values.
13465         (s390_encode_section_info): Mark symbol refs with
13466         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
13467
13468         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
13469         (length attribute): RRF, RRR have 4 byte length.
13470         (FPALL, INTALL): New mode iterators added.
13471         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
13472         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
13473         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
13474         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
13475         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
13476         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
13477         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
13478         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
13479         instructions.
13480         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
13481         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
13482         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
13483         reload<INTALL:mode><P:mode>_toreg_z10,
13484         reload<FPALL:mode><P:mode>_tomem_z10,
13485         reload<FPALL:mode><P:mode>_toreg_z10,
13486         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
13487         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
13488         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
13489         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
13490         definition.
13491         (movmem, clrmem, cmpmem): New splitters added.
13492
13493         * config/s390/predicates.md (larl_operand): Use
13494         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
13495         SYMBOL_REF_ALIGN1_P.
13496         (s390_signed_integer_comparison,
13497         s390_unsigned_integer_comparison): New predicates.
13498
13499         * config/s390/s390-protos.h (s390_check_symref_alignment,
13500         s390_contiguous_bitmask_p, s390_reload_larl_operand,
13501         s390_reload_symref_address,
13502         s390_compare_and_branch_condition_mask): Prototypes added.
13503
13504         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
13505         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
13506         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
13507
13508 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13509
13510         * config/s390/s390.c (z10_cost): New cost function for z10.
13511         (s390_handle_arch_option, override_options): Support -march=z10 switch.
13512         (s390_issue_rate): Adjust issue rate for z10.
13513         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
13514         (processor_flags): Add PF_Z10.
13515         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
13516         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
13517         * gcc/config.gcc: Add z10.
13518
13519 2008-05-28  Richard Guenther  <rguenther@suse.de>
13520
13521         PR tree-optimization/36291
13522         * tree-flow. h (struct gimple_df): Remove var_anns member.
13523         * tree-flow-inline.h (gimple_var_anns): Remove.
13524         (var_ann): Simplify.
13525         * tree-dfa.c (create_var_ann): Simplify.
13526         (remove_referenced_var): Clear alias info from var_anns of globals.
13527         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
13528         (delete_tree_ssa): Clear alias info from var_anns of globals.
13529         Do not free var_anns.
13530         (var_ann_eq): Remove.
13531         (var_ann_hash): Likewise.
13532
13533 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
13534
13535         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
13536         and loongson2f entries.
13537         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
13538         * config/mips/mips.h (processor_type): Add Loongson-2E
13539         and Loongson-2F entries.
13540         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
13541         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
13542         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
13543         * doc/invoke.texi (MIPS Options): Document loongson2e
13544         and loongson2f processor names.
13545
13546 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13547
13548         PR target/35767
13549         PR target/35771
13550         * config/i386/i386.c (ix86_function_arg_boundary): Use
13551         alignment of canonical type.
13552         (ix86_expand_vector_move): Check unaligned memory access for
13553         all SSE modes.
13554
13555 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
13556
13557         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
13558         Moved to the front of file.
13559
13560 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
13561             H.J. Lu  <hongjiu.lu@intel.com>
13562
13563         * dwarf2out.c (current_fde): New.
13564         (add_cfi): Use it.
13565         (lookup_cfa:): Likewise.
13566         (dwarf2out_end_epilogue): Likewise.
13567         (dwarf2out_note_section_used): Likewise.
13568
13569 2008-05-27  Michael Matz  <matz@suse.de>
13570
13571         PR c++/27975
13572         * c.opt (Wenum-compare): New warning option.
13573         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
13574
13575 2008-05-27  Michael Matz  <matz@suse.de>
13576
13577         PR middle-end/36326
13578         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
13579         non-BLKmode types.
13580         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
13581         into memory as tail calls.
13582
13583 2008-05-27  Richard Guenther  <rguenther@suse.de>
13584
13585         PR tree-optimization/36339
13586         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
13587         pointers cause all addressable variables to be call clobbered.
13588
13589 2008-05-27  Richard Guenther  <rguenther@suse.de>
13590
13591         PR tree-optimization/36245
13592         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
13593
13594 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13595
13596         * config/s390/s390.md: Replace all occurences of the 'm'
13597         constraint with 'RT'.
13598
13599 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13600
13601         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
13602         definitions added.
13603         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
13604         "*movdi_64".
13605         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
13606         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
13607         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
13608
13609 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13610
13611         * reload.c: (find_reloads): Skip alternatives according to the
13612         "enabled" attribute. Constify the constraint variable.
13613         * recog.c (get_attr_enabled): Add default implementation.
13614         (extract_insn): Set the alternative_enabled_p array
13615         in the recog_data struct.
13616         (preprocess_constraints, constrain_operands): Skip
13617         alternatives according to the "enabled" attribute
13618         * recog.h (struct recog_data): New field alternative_enabled_p.
13619         (skip_alternative): New inline function.
13620         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
13621         (record_reg_classes): Skip alternative according to the
13622         "enabled" attribute.
13623
13624         * doc/md.texi: Add documention for the "enabled" attribute.
13625
13626 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
13627
13628         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
13629         * postreload.c (reload_cse_simplify_operands): Replace 'm'
13630         constraint with TARGET_MEM_CONSTRAINT.
13631         * recog.c (asm_operand_ok, preprocess_constraints,
13632         constrain_operands): Likewise.
13633         * regclass.c (record_reg_classes): Likewise.
13634         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
13635         * reload1.c (maybe_fix_stack_asms): Likewise.
13636         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
13637         * recog.h: Adjust comment.
13638         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
13639         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
13640         * doc/md.texi: Add a note to description of 'm' constraint.
13641         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
13642
13643 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
13644
13645         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
13646         that the bitfield is of integral type before testing its precision.
13647
13648 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
13649             Sa Liu  <saliu@de.ibm.com>
13650
13651         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
13652         __modti3, __udivti3, __umodti3 and __udivmodti4.
13653         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
13654         that implement TImode mul and div functions.
13655         * config/spu/multi3.c: New. Implement __multi3.
13656         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
13657         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
13658         functions on SPU.
13659
13660 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
13661
13662         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
13663         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
13664         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
13665         tls_sysv_suffix): New mode and mode attribute iterators.
13666         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
13667         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
13668         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
13669         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
13670         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
13671         iterators.
13672
13673 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
13674
13675         PR tree-optimization/36329
13676         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
13677         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
13678         * cgraphbuild.c (initialize_inline_failed): Use the latter
13679         macro in lieu of the former.
13680         * ipa-inline.c (cgraph_mark_inline): Likewise.
13681         (cgraph_decide_inlining_of_small_function): Likewise.
13682         (cgraph_decide_inlining): Likewise.
13683         (cgraph_decide_inlining_incrementally): Likewise.
13684
13685 2008-05-26  Tristan Gingold  <gingold@adacore.com>
13686             Anatoly Sokolov  <aesok@post.ru>
13687
13688         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
13689         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
13690         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
13691         optimization for 'avr6' architecture.
13692
13693 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
13694
13695         PR target/34932
13696         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
13697
13698 2008-05-26  Richard Guenther  <rguenther@suse.de>
13699
13700         * tree-ssa-sccvn.c (expr_has_constants): Declare.
13701         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
13702
13703 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
13704
13705         PR middle-end/36253
13706         * caller-save.c (insert_restore): Verify alignment of spill space.
13707         (insert_save): Likewise.
13708         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
13709         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
13710         (STACK_SLOT_ALIGNMENT): Likewise.
13711         * function.c (LOCAL_ALIGNMENT): Removed.
13712         (get_stack_local_alignment): New.
13713         (assign_stack_local): Use it.  Set alignment on stack slot.
13714         (assign_stack_temp_for_type): Use get_stack_local_alignment.
13715         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
13716         (STACK_SLOT_ALIGNMENT): New.
13717         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
13718         stack slot in XFmode.
13719
13720         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
13721
13722 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
13723
13724         PR/36321
13725         * config/i386/i386.md (allocate_stack_worker_64): Make sure
13726         argument operand in rax isn't removed.
13727
13728 2008-05-26  Richard Guenther  <rguenther@suse.de>
13729
13730         PR middle-end/36300
13731         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
13732         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
13733
13734 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13735
13736         PR bootstrap/36331
13737         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
13738
13739 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
13740
13741         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
13742         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
13743
13744 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
13745
13746         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
13747         build a trampoline if we don't want one.
13748         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
13749         return zero for nested functions if we don't want a trampoline.
13750
13751 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13752
13753         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
13754
13755 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
13756
13757         PR fortran/18428
13758         * c.opt: Removed undocumented option '-lang-fortran'.
13759         * c-common.h: Removed global variable 'lang_fortran'.
13760         * c-opts.c (c_common_handle_option): Removed code to handle
13761         option '-lang-fortran'. Updated includes.
13762         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
13763         definition of '__GFORTRAN__'.
13764         (define__GNUC__): Reimplemented to use BASEVER and
13765         cpp_define_formatted.
13766         (builtin_define_with_value_n): Removed.
13767         * c-incpath.h: Renamed to ...
13768         * incpath.h: ... this.
13769         * c-incpath.c: Renamed to ...
13770         * incpath.c: ... this. Updated includes.
13771         * fix-header.c: Updated includes.
13772         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
13773         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
13774         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
13775
13776 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
13777
13778         * tree.h: Update the table of flags used on tree nodes.
13779         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
13780         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
13781         (FORCED_LABEL): Add access check.
13782         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
13783         (ASM_INPUT_P): Likewise.
13784         (ASM_VOLATILE_P): Likewise.
13785         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
13786         (OMP_SECTION_LAST): Access private_flag directly.
13787         (OMP_RETURN_NOWAIT): Likewise.
13788         (OMP_PARALLEL_COMBINED): Likewise.
13789         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
13790         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
13791         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
13792         deprecated_flag directly.
13793
13794 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
13795
13796         * final.c (frame_pointer_needed): Removed.
13797         * flags.h (frame_pointer_needed): Likewise.
13798
13799         * function.h (rtl_data): Add frame_pointer_needed.
13800         (frame_pointer_needed): New.
13801
13802 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
13803
13804         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
13805
13806 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
13807
13808         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
13809         SRC is a REG.
13810
13811 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
13812
13813         * c-common.c (strip_array_types): Move function to..
13814         * tree.c: ..here.
13815         (get_inner_array_type): Delete.
13816         * c-common.h (strip_array_types): Move declaration to..
13817         * tree.h: ..here.
13818         (get_inner_array_type): Delete.
13819         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
13820         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
13821         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
13822         * config/pa/pa.c (emit_move_sequence): Likewise.
13823
13824 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
13825
13826         * config/i386/i386.md (*sse_prologue_save_insn): Set length
13827         attribute to 34.
13828
13829 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
13830
13831         * function.c: Include target hook for nonlocal_goto frame value.
13832
13833 2008-05-24  Richard Guenther  <rguenther@suse.de>
13834
13835         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
13836         variable can be only accessed through a pointer or a union.
13837
13838 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13839
13840         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
13841         * doc/extend.texi: Likewise.
13842
13843 2008-05-23  DJ Delorie  <dj@redhat.com>
13844
13845         * config/m32c/jump.md (untyped_call): Add.
13846
13847         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
13848         for A24 to PSImode.
13849         (m32c_address_cost): Detail costs for indirect offsets.
13850
13851 2008-05-23  Rafael Espíndola  <espindola@google.com>
13852
13853         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
13854         if a node is a SUBREG.
13855         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
13856         is a SUBREG.
13857
13858 2008-05-23  Paul Brook  <paul@codesourcery.com>
13859             Carlos O'Donell  <carlos@codesourcery.com>
13860
13861         * doc/extend.texi: Clarify use of __attribute__((naked)).
13862         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
13863         * target.h (gcc_target): Add allocate_stack_slots_for_args.
13864         * function.c (use_register_for_decl): Use
13865         targetm.calls.allocate_stack_slots_for_args.
13866         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
13867         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
13868         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
13869
13870 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
13871
13872         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
13873
13874 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
13875
13876         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
13877         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
13878         is only rounded once.
13879
13880 2008-05-23  Richard Guenther  <rguenther@suse.de>
13881
13882         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
13883
13884 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
13885             Jakub Jelinek  <jakub@redhat.com>
13886
13887         PR target/36079
13888         * configure.ac: Handle --enable-cld.
13889         * configure: Regenerated.
13890         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
13891         * config/i386/i386.h (struct machine_function): Add needs_cld field.
13892         (ix86_current_function_needs_cld): New define.
13893         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
13894         (cld): New isns pattern.
13895         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
13896         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
13897         * config/i386/i386.opt (mcld): New option.
13898         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
13899         TARGET_CLD and ix86_current_function_needs_cld.
13900         (override_options): Use -mcld by default for 32-bit code if
13901         USE_IX86_CLD.
13902
13903         * doc/install.texi (Options specification): Document --enable-cld.
13904         * doc/invoke.texi (Machine Dependent Options)
13905         [i386 and x86-64 Options]: Add -mcld option.
13906         (Intel 386 and AMD x86-64 Options): Document -mcld option.
13907
13908 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
13909         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
13910         (return_in_memory_64): Likewise.
13911         (return_in_memory_ms_64): Likewise.
13912
13913 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13914
13915         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
13916         * builtins.c (fold_builtin_fpclassify): New.
13917         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
13918         * builtins.def (BUILT_IN_FPCLASSIFY): New.
13919         * c-common.c (handle_type_generic_attribute): Adjust to accept
13920         fixed arguments before an elipsis.
13921         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
13922         * doc/extend.texi: Document __builtin_fpclassify.
13923
13924 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
13925
13926         * omp-low.c (gate_expand_omp_ssa): Remove.
13927         (pass_expand_omp_ssa): Remove.
13928         (gate_expand_omp): Do not check for flag_openmp_ssa.
13929         * common.opt (-fopenmp-ssa): Remove.
13930         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
13931
13932 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
13933
13934         * config/sh/sh.opt (mfixed-range): New option.
13935         * config/sh/sh-protos.h (sh_fix_range): Declare.
13936         * config/sh/sh.c (sh_fix_range): New function.
13937         * config/sh/sh.h (sh_fixed_range_str): Declare.
13938         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
13939         is not empty.
13940         * doc/invoke.texi (SH Options): Document -mfixed-range.
13941
13942 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
13943
13944         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
13945         it before the redeclaration.
13946
13947 2008-05-22  Anatoly Sokolov <aesok@post.ru>
13948
13949         * config/avr/avr.c (get_sequence_length): Add new function.
13950         (expand_prologue, expand_epilogue): Remove duplicate code.
13951
13952 2008-05-22  Rafael Espíndola  <espindola@google.com>
13953
13954         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
13955         sharing.
13956
13957 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
13958
13959         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
13960         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
13961
13962         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
13963         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
13964         (vect_update_misalignment_for_peel): Likewise.
13965         (vector_alignment_reachable_p): Likewise.
13966         * tree-vect-transform.c (vectorizable_load): Likewise.
13967         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
13968         (get_vectype_for_scalar_type): Pass mode of scalar_type
13969         to UNITS_PER_SIMD_WORD.
13970
13971         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
13972         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
13973         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
13974         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
13975         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
13976
13977 2008-05-22  Ira Rosen  <irar@il.ibm.com>
13978
13979         PR tree-optimization/36293
13980         * tree-vect-transform.c (vect_transform_strided_load): Don't check
13981         if the first load must be skipped because of a gap.
13982
13983 2008-05-22  Richard Guenther  <rguenther@suse.de>
13984
13985         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
13986         more cases of offset disambiguation that is possible if
13987         strict-aliasing rules apply.
13988         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
13989         for basic offset and type-based disambiguation.
13990
13991 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
13992
13993         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
13994         ix86_expand_vector_set on V16QImode for SSE4.1.
13995
13996 2008-05-21  Tom Tromey  <tromey@redhat.com>
13997
13998         * c.opt (Wimport): Mark as undocumented.
13999         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
14000         -Wno-import.
14001         (Warning Options): Likewise.
14002         * doc/cppopts.texi: Don't mention -Wimport.
14003
14004 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
14005
14006         PR tree-optimization/36287
14007         PR tree-optimization/36286
14008         * lambda-code.c (build_access_matrix): Do not use the loop->num
14009         for computing the number of induction variables: use the loop depth
14010         instead.
14011
14012 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
14013
14014         PR/36280
14015         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
14016         option -f(no-)leading-underscore.
14017
14018 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14019
14020         * config/i386/i386.c (ix86_expand_vector_init_general): Use
14021         GET_MODE_NUNITS (mode).
14022
14023 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
14024
14025         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
14026         (-mmulhw): Add 464 to description.
14027         (-mdlmzb): Likewise.
14028         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
14029         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
14030         464fp entries.
14031         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
14032         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
14033         * config/rs6000/rs6000.md: Update comments for 464.
14034
14035 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
14036
14037         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
14038
14039 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14040
14041         * config/i386/sse.md (vec_extractv4sf): Removed.
14042         (vec_extractv2df): Likewise.
14043         (vec_extractv2di): Likewise.
14044         (vec_extractv4si): Likewise.
14045         (vec_extractv8hi): Likewise.
14046         (vec_extractv16qi): Likewise.
14047         (vec_extract<mode>): New.
14048
14049 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14050
14051         * config/i386/sse.md (vec_setv4sf): Removed.
14052         (vec_setv2df): Likewise.
14053         (vec_setv2di): Likewise.
14054         (vec_setv4si): Likewise.
14055         (vec_setv8hi): Likewise.
14056         (vec_setv16qi): Likewise.
14057         (vec_set<mode>): New.
14058
14059 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14060
14061         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
14062         goto for vec_concat and vec_interleave.
14063
14064 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
14065
14066         * config/i386/sse.md (vec_initv4sf): Removed.
14067         (vec_initv2df): Likewise.
14068         (vec_initv2di): Likewise.
14069         (vec_initv4si): Likewise.
14070         (vec_initv8hi): Likewise.
14071         (vec_initv16qi): Likewise.
14072         (vec_init<mode>): New.
14073
14074 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
14075
14076         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
14077
14078 2008-05-21  Tom Tromey  <tromey@redhat.com>
14079
14080         * ggc-zone.c (lookup_page_table_if_allocated): New function.
14081         (zone_find_object_offset): Likewise.
14082         (gt_ggc_m_S): Likewise.
14083         (highest_bit): Likewise.
14084         * ggc-page.c (gt_ggc_m_S): New function.
14085         * stringpool.c (string_stack): Remove.
14086         (init_stringpool): Update.
14087         (ggc_alloc_string): Use ggc_alloc.
14088         (maybe_delete_ident): New function.
14089         (ggc_purge_stringpool): Likewise.
14090         (gt_ggc_m_S): Remove.
14091         * ggc-common.c (ggc_protect_identifiers): New global.
14092         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
14093         ggc_protect_identifiers.
14094         * ggc.h (ggc_protect_identifiers): Declare.
14095         (gt_ggc_m_S): Update.
14096         (ggc_purge_stringpool): Declare.
14097         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
14098         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
14099         special case.
14100         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
14101
14102 2008-05-21  David S. Miller  <davem@davemloft.net>
14103
14104         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
14105         tmake_file.
14106
14107 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
14108
14109         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
14110         once finished.
14111
14112 2008-05-20  David Daney  <ddaney@avtrex.com>
14113
14114         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
14115         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
14116         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
14117         UNSPEC_UPDATE_GOT_VERSION): Renumber.
14118         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
14119         (atomic_hiqi_op): New define_code_iterator.
14120         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
14121         mips_expand_compare_and_swap_12.
14122         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
14123         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
14124         (sync_<optab><mode>, sync_old_<optab><mode>,
14125         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
14126         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
14127         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
14128         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
14129         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
14130         (test_and_set_12): New insn.
14131         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
14132         sync_new_<optab><mode>, sync_old_nand<mode>,
14133         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
14134         clobber to operand 0 for SI and DI mode insns.
14135         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
14136         mips_gen_fn_4): New typedefs.
14137         (mips_gen_fn_ptrs): Define new union type.
14138         (mips_expand_compare_and_swap_12): Remove declaration.
14139         (mips_expand_atomic_qihi): Declare function.
14140         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
14141         (mips_expand_atomic_qihi): ... this.  Use new generator function
14142         parameter.
14143         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
14144         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
14145         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
14146         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
14147         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
14148         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
14149         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
14150         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
14151         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
14152         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
14153         New macros.
14154
14155 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
14156
14157         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
14158         the missing break.
14159
14160 2008-05-20  Anatoly Sokolov <aesok@post.ru>
14161
14162         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
14163         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
14164         (avr_attribute_table): Add 'OS_main' function attribute.
14165         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
14166         functions with 'OS_main' attribute.
14167
14168 2008-05-20  Richard Guenther  <rguenther@suse.de>
14169
14170         PR tree-optimization/35204
14171         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
14172         helper, split out from ...
14173         (DFS): ... here.  Make the DFS walk non-recursive.
14174
14175 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
14176             Jan Sjodin  <jan.sjodin@amd.com>
14177
14178         PR tree-optimization/36181
14179         * tree-parloops.c (loop_has_vector_phi_nodes): New.
14180         (parallelize_loops): Don't parallelize when the loop has vector
14181         phi nodes.
14182
14183 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
14184             Sebastian Pop  <sebastian.pop@amd.com>
14185
14186         * tree-loop-linear.c (gather_interchange_stats): Look in the access
14187         matrix, and never look at the tree representation of the memory
14188         accesses.
14189         (linear_transform_loops): Computes parameters and access matrices.
14190         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
14191         when fails.
14192         (access_matrix_get_index_for_parameter): New.
14193         * tree-data-ref.h (struct access_matrix): New.
14194         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
14195         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
14196         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
14197         am_vector_index_for_loop): New.
14198         (struct data_reference): Add field access_matrix.
14199         (DR_ACCESS_MATRIX): New.
14200         (compute_data_dependences_for_loop): Update declaration.
14201         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
14202         * lambda.h (lambda_vector_vec_p): Declared.
14203         * lambda-code.c: Depend on pointer-set.h.
14204         (lambda_collect_parameters_from_af, lambda_collect_parameters,
14205         av_for_af_base, av_for_af, build_access_matrix,
14206         lambda_compute_access_matrices): New.
14207         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
14208
14209 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
14210
14211         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
14212         $SOURCEDIR/include.
14213
14214 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
14215             Sebastian Pop  <sebastian.pop@amd.com>
14216
14217         PR tree-optimization/36206
14218         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
14219         FOLD_CONVERSIONS.
14220         (instantiate_scev_1): Rename flags to fold_conversions.
14221         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
14222         outeside instantiation_loop.
14223         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
14224         (evolution_function_is_affine_or_constant_p): Removed.
14225         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
14226         instantiate_scev.
14227         (analyze_siv_subscript): Pass in the loop nest number.
14228         Call evolution_function_is_affine_in_loop instead of
14229         evolution_function_is_affine_p.
14230         (analyze_overlapping_iterations): Pass in the loop nest number.
14231
14232 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
14233             Sebastian Pop  <sebastian.pop@amd.com>
14234
14235         PR tree-optimization/36206
14236         * tree-chrec.h (chrec_fold_op): New.
14237         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
14238         and other trees.
14239
14240 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
14241
14242         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
14243         (DIRS_EQ): New.
14244         (remove_duplicates): Do not set inode on non-inode systems.
14245         Use DIRS_EQ.
14246
14247 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
14248
14249         * config.gcc (tm_file): Update comments about relative pathnames.
14250
14251 2008-05-20  Richard Guenther  <rguenther@suse.de>
14252
14253         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
14254         * tree-ssa-sccvn.c (process_scc): Likewise.
14255         * tree-ssa-sink.c (execute_sink_code): Likewise.
14256         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
14257         * tree-vrp.c (process_assert_insertions): Likewise.
14258         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
14259         (perform_tree_ssa_dce): Likewise.
14260         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
14261         (dump_dominator_optimization_stats): Likewise.
14262         * tree-vectorizer.c (vectorize_loops): Likewise.
14263
14264 2008-05-20  Richard Guenther  <rguenther@suse.de>
14265
14266         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
14267
14268 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
14269
14270         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
14271         (ix86_i386elf_return_in_memory): Likewise.
14272         (ix86_i386interix_return_in_memory): Likewise.
14273         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
14274         (SUBTARGET_RETURN_IN_MEMORY): New.
14275         * config/i386/i386elf.h: Likewise.
14276         * config/i386/ptx4-i.h: Likewise.
14277         * config/i386/sol2-10.h: Likewise.
14278         * config/i386/sysv4.h: Likewise.
14279         * config/i386/vx-common.h: Likewise.
14280         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
14281         * config/i386/i386.c (ix86_return_in_memory): Made static and
14282         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
14283         (ix86_i386elf_return_in_memory): Removed.
14284         (ix86_i386interix_return_in_memory): Removed.
14285         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
14286         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
14287
14288 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
14289
14290         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
14291
14292 2008-05-19  Xinliang David Li  <davidxl@google.com>
14293
14294         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
14295         * opts.c: Ditto.
14296         * common.opt: Ditto.
14297         * doc/invoke.texi: Ditto.
14298
14299 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
14300
14301         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
14302         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
14303
14304 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14305
14306         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
14307         sizes of operand array from 8/4 to 4/2.
14308         (ix86_expand_vector_init_general): Change size of operand array
14309         from 32 to 16.  Remove op0, op1 and half_mode.
14310
14311 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
14312
14313         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
14314         (ix86_expand_vector_init_interleave): Likewise.
14315         (ix86_expand_vector_init_general): Use them.  Assert
14316         word_mode == SImode when n_words == 4.
14317
14318 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
14319
14320         * config/i386/i386.c (ix86_secondary_reload): New static function.
14321         (TARGET_SECONDARY_RELOAD): New define.
14322         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
14323         * config/i386/i386.md (reload_outqi): Remove.
14324
14325 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14326
14327         PR middle-end/35509
14328         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
14329         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
14330         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
14331         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
14332         (fold_builtin_1): Likewise.
14333         * builtins.def (BUILT_IN_ISINF_SIGN): New.
14334         c-common.c (check_builtin_function_arguments): Handle
14335         BUILT_IN_ISINF_SIGN.
14336         * doc/extend.texi: Document __builtin_isinf_sign.
14337         * fold-const.c (operand_equal_p): Handle COND_EXPR.
14338
14339 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
14340
14341         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
14342         EH cleanup at the end of the pass, search for those that have been
14343         turned into forwarder blocks and do the cleanup on their successor.
14344
14345 2008-05-18  Richard Guenther  <rguenther@suse.de>
14346
14347         * tree-cfg.c (verify_gimple_expr): Allow conversions from
14348         pointers to sizetype and vice versa.
14349
14350 2008-05-18 Xinliang David Li   <davidxl@google.com>
14351
14352         * gcc/tree-ssa-dce.c: Coding style fix.
14353         (check_pow): Documentation comment.
14354         (check_log): Documenation comment. Coding style fix.
14355         (is_unnecessary_except_errno_call): Ditto.
14356         (gen_conditions_for_pow): Ditto.
14357         (gen_conditions_for_log): Ditto.
14358         (gen_shrink_wrap_conditions): Ditto.
14359         (shrink_wrap_one_built_in_calls): Ditto.
14360         * gcc/doc/invoke.texi: Better documentation string.
14361         * ChangeLog: Fix wrong change log entries from
14362         May 17 checkin on function call DCE.
14363
14364 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
14365
14366         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
14367
14368 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
14369
14370         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
14371         * df-problems.c (simulation routines): Fixed block comment to
14372         properly say how to add forwards scanning functions.
14373
14374 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
14375
14376         * tree-inline.c (setup_one_parameter): Remove dead code.
14377
14378 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
14379
14380         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
14381         a BIT_AND_EXPR only for an INTEGER_TYPE.
14382
14383 2008-05-17 Xinliang David Li   <davidxl@google.com>
14384
14385         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
14386         (check_pow, check_log, is_unnecessary_except_errno_call): New
14387         functions to check for eliminating math functions that are pure
14388         except for setting errno.
14389         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
14390         general condition expressions for shrink-wrapping pow/log calls.
14391         (gen_shrink_wrap_conditions): Ditto.
14392         (shrink_wrap_one_built_in_call): Ditto.
14393         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
14394         (mark_operand_necessary): If debugging, output if OP is necessary.
14395         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
14396         unnecessary.
14397         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
14398         opt level >= 2.
14399         * gcc/common.opt: New user flag -ftree-builtin-dce.
14400         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
14401
14402 2008-05-16  David S. Miller  <davem@davemloft.net>
14403
14404         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
14405         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
14406
14407 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
14408
14409         PR target/36246
14410         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
14411
14412 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14413
14414         * ifcvt.c (dead_or_predicable): Rename
14415         df_simulate_one_insn_backwards to df_simulate_one_insn.
14416         * recog.c (peephole2_optimize): Ditto.
14417         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
14418         Ditto.
14419         * df.h: Rename df_simulate_one_insn_backwards to
14420         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
14421         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
14422         scanning of defs and uses.
14423         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
14424         (df_simulate_one_insn_forwards): Removed.
14425
14426 2008-05-16  Doug Kwan  <dougkwan@google.com>
14427
14428         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
14429         QNaN & SNaN.
14430         (real_from_string): Handle NaNs and Inf as approriate.
14431
14432 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
14433
14434         * doc/gty.texi (Source Files Containing Type Information): Note
14435         that headers should appear first in the gtfiles list.
14436
14437 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14438
14439         * tree.def (COND_EXEC): Properly documented this code.
14440
14441 2008-05-16  Diego Novillo  <dnovillo@google.com>
14442
14443         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
14444         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
14445         the new field.
14446
14447 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14448
14449         * tree-ssa-dse (max_stmt_uid): Removed.
14450         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
14451         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
14452         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
14453         * function.h (cfun.last_stmt_uid): New field.
14454         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
14455         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
14456         New functions.
14457         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
14458         (create_stmt_ann): Initialize the ann->uid field.
14459         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
14460         with new calls.
14461         * tree-flow.h (renumber_gimple_stmt_uids): New function.
14462
14463 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
14464
14465         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
14466         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
14467         (init_empty_tree_cfg): Call it.
14468
14469 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14470
14471         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
14472         Update all users.
14473
14474 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
14475
14476         * doc/invoke.text (-fdump-tree-*-verbose): New option.
14477         * tree-dump.c (dump_options): New verbose option.
14478         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
14479         Add verbose dump.
14480         * tree-pass.h (TDF_VERBOSE): New dump flag.
14481         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
14482         (tree-flow.h): Added include.
14483         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
14484
14485 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
14486
14487         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
14488
14489         From Jie Zhang  <jie.zhang@analog.com>
14490         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14491         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
14492         mcpu=bf561-none and mcpu=bf561-0.2.
14493         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14494         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
14495         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
14496         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
14497         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
14498         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
14499         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
14500         option.
14501         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
14502         (cputype_selected): Remove.
14503         (bfin_handle_option): Don't use cputype_selected.
14504         (override_options): When no mcpu option, enable all workarounds.
14505         Don't use bfin_workarounds.
14506         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
14507         processor type.
14508         (DEFAULT_CPU_TYPE): Don't define.
14509
14510 2008-05-16  Richard Guenther  <rguenther@suse.de>
14511
14512         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
14513         on deletion of the last stmt.
14514
14515 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14516
14517         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
14518         V8HImode for SSE2 and V16QImode for SSE4.1.
14519
14520 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
14521
14522         * cgraph.h (compute_inline_parameters): Made public.
14523         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
14524         variable_generate_summary, function_write_summary,
14525         variable_write_summary, variable_read_summary.  Added generate_summary,
14526         write_summary, read_summary.
14527         * cgraphunit.c (cgraph_process_new_functions): Changed call from
14528         pass_ipa_inline.function_generate_summary, to
14529         compute_inline_parameters.
14530         * ipa-inline.c (compute_inline_parameters): Made public and added
14531         node parameter.
14532         (compute_inline_parameters_for_current): New function.
14533         (pass_inline_param): Now calls compute_inline_parameters_for_current.
14534         (inline_generate_summary): Removed parameter and made to loop over
14535         all cgraph nodes.
14536         (pass_ipa_inline): Updated for new IPA_PASS structure.
14537         * passes.c (execute_ipa_summary_passes): Now is called once per
14538         pass rather than once per node*pass.
14539
14540 2008-05-15  Anatoly Sokolov <aesok@post.ru>
14541
14542         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
14543         avr_have_mul_p, avr_asm_only_p): Remove variables.
14544         (avr_override_options): Remove initialization of removed variables.
14545         (avr_file_start):  Convert removed variables to fields of
14546         'struct base_arch_s *avr_current_arch'.
14547         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
14548         (AVR_HAVE_MUL): (Ditto.).
14549         (AVR_HAVE_MOVW): (Ditto.).
14550         (AVR_HAVE_LPMX): (Ditto.).
14551         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
14552         avr_asm_only_p): Remove declaration.
14553
14554 2008-05-15  Diego Novillo  <dnovillo@google.com>
14555
14556         * config/arm/arm.c (arm_return_in_memory): Fix return type.
14557         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
14558
14559 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
14560
14561         PR middle-end/36194
14562         * combine.c (check_conversion): Rename back to check_promoted_subreg.
14563         Don't call record_truncated_value from here.
14564         (record_truncated_value): Turn it into a for_each_rtx callback.
14565         (record_truncated_values): New function.
14566         (combine_instructions): Call note_uses with record_truncated_values.
14567         Change name of check_conversion to check_promoted_subreg.
14568
14569 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
14570
14571         * doc/sourcebuild.texi: Document support for torture tests.
14572
14573 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
14574
14575         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
14576         to alternative 4 of operand 2.
14577
14578 2008-05-15  Richard Guenther  <rguenther@suse.de>
14579
14580         * tree-pass.h (current_pass): Declare.
14581         (get_pass_for_id): Likewise.
14582         * passes.c (passes_by_id, passes_by_id_size): New globals.
14583         (set_pass_for_id): New function.
14584         (get_pass_for_id): Likewise.
14585         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
14586         (execute_function_todo): Flush per function statistics.
14587         * toplev.c (compile_file): Init statistics.
14588         (general_init): Do early statistics initialization.
14589         (finalize): Finish statistics.
14590         * statistics.h (statistics_early_init): Declare.
14591         (statistics_init): Likewise.
14592         (statistics_fini): Likewise.
14593         (statistics_fini_pass): Likewise.
14594         (statistics_counter_event): Likewise.
14595         (statistics_histogram_event): Likewise.
14596         * statistics.c: New file.
14597         * Makefile.in (OBJS-common): Add statistics.o.
14598         (statistics.o): Add dependencies.
14599         * doc/invoke.texi (-fdump-statistics): Document.
14600
14601         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
14602         (insert): Likewise.
14603         (execute_pre): Use statistics_counter_event.
14604         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
14605         (substitute_and_fold): Increment it.  Use statistics_counter_event.
14606
14607 2008-05-15  Diego Novillo  <dnovillo@google.com>
14608
14609         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
14610
14611         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
14612         * tree-ssa-alias.c (new_type_alias): Remove references to
14613         sub-variables from comment.
14614         * tree-ssa-operands.c (swap_tree_operands): Likewise.
14615
14616 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
14617
14618         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
14619         attribute to 1 only for insertps alternative.
14620
14621 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14622
14623         * config/bfin/bfin.md (loadbytes): New pattern.
14624         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
14625         (bfin_init_builtins): Initialize it.
14626         (bdesc_1arg): Add it.
14627
14628 2008-05-15  Sa Liu  <saliu@de.ibm.com>
14629
14630         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
14631         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
14632         * testsuite/lib/target-supports.exp: Add
14633         check_effective_target_fortran_integer_16.
14634
14635 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14636
14637         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
14638         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
14639         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
14640         (TARGET_RETURN_IN_MEMORY): Define.
14641
14642 2008-05-15  Richard Guenther  <rguenther@suse.de>
14643
14644         PR middle-end/36244
14645         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
14646         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
14647         represent unmodifiable vars.
14648
14649 2008-05-15  Richard Guenther  <rguenther@suse.de>
14650
14651         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
14652         INDIRECT_REF and TARGET_MEM_REF.
14653         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
14654         TARGET_MEM_REF.
14655
14656 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
14657             H.J. Lu  <hongjiu.lu@intel.com>
14658
14659         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
14660         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
14661         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
14662         insn alternatives.  Add missing alternatives.
14663         (*vec_concatv2di_rex64_sse4_1): Likewise.
14664         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
14665         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
14666         Require TARGET_SSE.
14667
14668 2008-05-15  Richard Guenther  <rguenther@suse.de>
14669
14670         PR tree-optimization/36009
14671         PR tree-optimization/36204
14672         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
14673         (determine_invariantness_stmt): Record the loop a store is
14674         always executed in.
14675         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
14676         dependency.
14677
14678 2008-05-15  Richard Guenther  <rguenther@suse.de>
14679
14680         PR tree-optimization/34330
14681         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
14682         through the pointer will alias the SMT.
14683
14684 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
14685
14686         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
14687
14688 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
14689
14690         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
14691
14692 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14693             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
14694
14695         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
14696         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
14697         (vashl_optab): New optab for vector/vector shifts.
14698         (vashr_optab): Ditto.
14699         (vlshr_optab): Ditto.
14700         (vrotl_optab): Ditto.
14701         (vrotr_optab): Ditto.
14702         (optab_subtype): New enum for optab_for_tree_code call.
14703         (optab_for_tree_code): Add enum optab_subtype argument.
14704
14705         * optabs.c (optab_for_tree_code): Take an additional argument to
14706         distinguish between a vector shift by a scalar and vector shift by
14707         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
14708         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
14709         vector shift by a vector.
14710         (expand_widen_pattern_expr): Pass additional argument to
14711         optab_for_tree_code.
14712
14713         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
14714         vrotl_optab, vrotr_optab.
14715
14716         * expr.c (expand_expr_real_1): Update calls to
14717         optab_for_tree_code to distinguish between vector shifted by a
14718         scalar and vector shifted by a vector.
14719         * tree-vectorizer.c (supportable_widening_operation): Ditto.
14720         (supportable_narrowing_operation): Ditto.
14721         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
14722         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
14723         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
14724         (vect_create_epilog_for_reduction): Ditto.
14725         (vectorizable_reduction): Ditto.
14726         (vectorizable_operation): Ditto.
14727         (vect_strided_store_supported): Ditto.
14728         (vect_strided_load_supported): Ditto.
14729         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
14730         * expmed.c (expand_shift): Ditto.
14731
14732         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
14733         scalar type.
14734         (ashr@var{m}3): Ditto.
14735         (vashl@var{m}3): Document new vector/vector shift standard name.
14736         (vashr@var{m}3): Ditto.
14737         (vlshr@var{m}3): Ditto.
14738         (vrotl@var{m}3): Ditto.
14739         (vrotr@var{m}3): Ditto.
14740
14741         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
14742         (PPERM_INVERT): Ditto.
14743         (PPERM_REVERSE): Ditto.
14744         (PPERM_REV_INV): Ditto.
14745         (PPERM_ZERO): Ditto.
14746         (PPERM_ONES): Ditto.
14747         (PPERM_SIGN): Ditto.
14748         (PPERM_INV_SIGN): Ditto.
14749         (PPERM_SRC1): Ditto.
14750         (PPERM_SRC2): Ditto.
14751
14752         * config/i386/sse.md (mulv2di3): Add SSE5 support.
14753         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
14754         allows a memory operand to be the value being added, and split it
14755         to improve vectorization.
14756         (sse5_pmacsdqh_mem): Ditto.
14757         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
14758         (sse5_mulv2div2di3_high): Ditto.
14759         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
14760         (vec_pack_trunc_v4si): Ditto.
14761         (vec_pack_trunc_v2di): Ditto.
14762         (sse5_pcmov_<mode>): Remove code that tried to use use
14763         andps/andnps instead of pcmov.
14764         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
14765         pmacsdqh instructions.
14766         (vec_widen_smult_lo_v4si): Ditto.
14767
14768         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
14769         (PPERM_INVERT): Ditto.
14770         (PPERM_REVERSE): Ditto.
14771         (PPERM_REV_INV): Ditto.
14772         (PPERM_ZERO): Ditto.
14773         (PPERM_ONES): Ditto.
14774         (PPERM_SIGN): Ditto.
14775         (PPERM_INV_SIGN): Ditto.
14776         (PPERM_SRC1): Ditto.
14777         (PPERM_SRC2): Ditto.
14778         (ix86_expand_sse_movcc): Move the SSE5 test after the if
14779         true/false tests.
14780         (ix86_expand_int_vcond): If SSE5 generate all possible integer
14781         comparisons.
14782         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
14783         says ignore whether the last reference is a memory operand.
14784
14785 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14786             Paolo Bonzini <bonzini at gnu dot org>
14787
14788         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
14789         shift patterns.
14790
14791         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
14792         (vlshr<mode>3): Rename from vlshr<mode>3.
14793         (vashr<mode>3): Rename from vashr<mode>3.
14794         (mulv4sf3): Change the names of vector shift patterns.
14795         (mulv4si3): Ditto.
14796         (negv4sf2): Ditt.
14797
14798         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
14799         shift insns.
14800
14801         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
14802         (SI_SHLHI): Ditto.
14803         (SI_SHL): Ditto.
14804         (SI_SHLI): Ditto.
14805         (SI_ROTH): Ditto.
14806         (SI_ROTHI): Ditto.
14807         (SI_ROT): Ditto.
14808         (SI_ROTI): Ditto.
14809         (SPU_RL_0): Ditto.
14810         (SPU_RL_1): Ditto.
14811         (SPU_RL_2): Ditto.
14812         (SPU_RL_3): Ditto.
14813         (SPU_RL_4): Ditto.
14814         (SPU_RL_5): Ditto.
14815         (SPU_RL_6): Ditto.
14816         (SPU_RL_7): Ditto.
14817         (SPU_SL_0): Ditto.
14818         (SPU_SL_1): Ditto.
14819         (SPU_SL_2): Ditto.
14820         (SPU_SL_3): Ditto.
14821         (SPU_SL_4): Ditto.
14822         (SPU_SL_5): Ditto.
14823         (SPU_SL_6): Ditto.
14824         (SPU_SL_7): Ditto.
14825
14826         * config/spu/spu.md (v): New iterator macro to add v for vector types.
14827         (floatunssidf2_internal): Change vector/vector shift names.
14828         (floatunsdidf2_internal): Ditto.
14829         (mulv8hi3): Ditto.
14830         (ashrdi3): Ditto.
14831         (ashrti3): Ditto.
14832         (cgt_df): Ditto.
14833         (cgt_v2df): Ditto.
14834         (dftsv): Ditto.
14835         (vashl<mode>3): Rename from ashl<mode>3.
14836         (vashr<mode>3): Rename from ashr<mode>3.
14837         (vlshr<mode>3): Rename from lshr<mode>3.
14838         (vrotl<mode>3): Rename from rotl<mode>3.
14839
14840 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
14841
14842         PR target/36224
14843         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
14844         multiply gives the wrong value when doing widening multiplies.
14845         (vec_widen_smult_lo_v4si): Ditto.
14846
14847 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
14848
14849         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
14850         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
14851         emit_library_call_value.
14852         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
14853         * tree.h (ECF_LIBCALL_BLOCK): Removed.
14854         * calls.c (initialize_argument_information, precompute_arguments,
14855         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
14856         (precompute_arguments): Removed flags parameter.
14857         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
14858
14859 2008-05-14  Richard Guenther  <rguenther@suse.de>
14860
14861         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
14862         Make sure to register the store if the use is a PHI_NODE.
14863
14864 2008-05-14  Olivier Hainque  <hainque@adacore.com>
14865
14866         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
14867         memory if the component is to be referenced in BLKmode according
14868         to get_inner_reference.
14869
14870 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
14871
14872         * calls.c (emit_library_call_value_1): Restore code clearing
14873         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
14874
14875 2008-05-14  Olivier Hainque  <hainque@adacore.com>
14876             Nicolas Roche  <roche@adacore.com>
14877
14878         * configure.ac: Add support for a "gcc_subdir" variable in
14879         config-lang.in, to denote a subdirectory where the language/GCC
14880         integration files are to be found.
14881         * configure: Regenerate.
14882
14883 2008-05-14  Ira Rosen  <irar@il.ibm.com>
14884
14885         PR tree-optimization/36098
14886         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
14887         value for the first load in the group in case of a gap.
14888         (vect_build_slp_tree): Check that there are no gaps in loads.
14889
14890 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
14891
14892         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
14893         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
14894         expand_copysign_bit, ): Change call to emit_no_conflict_block to
14895         emit_insn and remove unneeded code to construct extra args.
14896         (emit_no_conflict_block): Removed.
14897         * optabls.h: (emit_no_conflict_block): Removed.
14898         * cse.c (cse_extended_basic_block): Remove search for
14899         REG_NO_CONFLICT note.
14900         * global.c: Removed incorrect comment added in revision 117.
14901         * expr.c (convert_move): Change call to emit_no_conflict_block to
14902         emit_insn.
14903         * recog.c: Change comments so that they do not mention
14904         REG_NO_CONFLICT.
14905         * local_alloc.c (combine_regs): Removed last parameter.
14906         (no_conflict_p): Removed.
14907         (block_alloc): Removed note, no_conflict_combined_regno and set
14908         local vars. Removed all code to process REG_NO_CONFLICT blocks.
14909         (combine_regs): Removed already_dead and code to look for
14910         REG_NO_CONFLICT notes.
14911         * lower_subreg (remove_retval_note): Removed code to look for
14912         REG_NO_CONFLICT block.
14913         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
14914         (resolve_clobber): Remove code to process libcalls that have
14915         REG_NO_CONFLICT notes.
14916         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
14917         case.
14918         * combine.c (can_combine_p, distribute_notes):  Removed
14919         REG_NO_CONFLICT case.
14920         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
14921         to emit_insns.
14922         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
14923         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
14924         Ditto.
14925         * reg-notes.def (NO_CONFLICT): Removed.
14926
14927 2008-05-14  David S. Miller  <davem@davemloft.net>
14928
14929         * config/sparc/sparc.c (sparc_profile_hook): If
14930         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
14931         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
14932         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
14933
14934 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
14935
14936         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
14937
14938 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
14939
14940         PR target/36222
14941         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
14942         and op1 expansion before vector concat to have less live pseudos.
14943
14944 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
14945
14946         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
14947         ix86_expand_vector_set if supported.
14948
14949 2008-05-13  Diego Novillo  <dnovillo@google.com>
14950             Kenneth Zadeck  <zadeck@naturalbridge.com>
14951
14952         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
14953
14954         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
14955         phinodes_print_statistics, init_ssanames, fini_ssanames,
14956         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
14957         release_ssa_name, release_defs, replace_ssa_name_symbol,
14958         ssanames_print_statistics): Move ...
14959         * tree-flow.h: ... here.
14960         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
14961         Use FN instead of cfun.
14962         (make_ssa_name_fn): Rename from make_ssa_name.
14963         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
14964         * tree-flow-inline.h (make_ssa_name): Move from
14965         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
14966         * omp-low.c (expand_omp_parallel):
14967         * tree-flow-inline.h (redirect_edge_var_map_result):
14968         * tree-ssa.c (init_tree_ssa): Add argument FN.
14969         Use it instead of cfun.  Update all users.
14970
14971 2008-05-13  Tom Tromey  <tromey@redhat.com>
14972
14973         PR preprocessor/22168:
14974         * doc/cpp.texi (Top): Update menu.
14975         (Alternatives to Wrapper #ifndef): New node.
14976         (Other Directives): Document deprecation.
14977         (Obsolete Features): Remove menu.
14978         (Assertions): Merge node into Obsolete Features.
14979         (Obsolete once-only headers): Move earlier; rename to Alternatives
14980         to Wrapper #ifndef.
14981         * doc/cppopts.texi: Update.
14982         * c.opt (Wdeprecated): Enable for C and ObjC.
14983         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
14984         (C++ Dialect Options): Move -Wno-deprecated from here to...
14985         (Warning Options): ... here.
14986
14987 2008-05-13  Richard Guenther  <rguenther@suse.de>
14988
14989         PR middle-end/36227
14990         * fold-const.c (fold_sign_changed_comparison): Do not allow
14991         changes in pointer-ness.
14992
14993 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14994
14995         PR target/24713
14996         * config/sh/sh.c (sh_expand_prologue): Don't clear
14997         RTX_FRAME_RELATED_P for push insns.
14998
14999 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
15000
15001         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
15002
15003 2008-05-12  Anatoly Sokolov <aesok@post.ru>
15004
15005         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
15006         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
15007         Use 'machine->is_leaf' instead of 'leaf_func_p'.
15008
15009 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
15010
15011         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
15012         (*vec_concatv4sf_sse): This.
15013         (*sse2_concatv2si): Renamed to ...
15014         (*vec_concatv2si_sse2): This.
15015         (*sse1_concatv2si): Renamed to ...
15016         (*vec_concatv2si_sse): This.
15017         (*vec_concatv2di_rex): Renamed to ...
15018         (*vec_concatv2di_rex64): This.
15019         (*vec_concatv2si_sse4_1): New.
15020         (*vec_concatv2di_rex64_sse4_1): Likewise.
15021
15022 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
15023
15024         PR rtl-optimization/36111
15025         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
15026         that was created for swappable operands.
15027
15028 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
15029
15030         PR ada/36001
15031         * Makefile.in: Substitute GNATMAKE and GNATBIND.
15032         * configure.ac: Add call to ACX_PROG_GNAT.
15033
15034 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
15035
15036         * optc-gen.awk: Fix comment typo.
15037
15038 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
15039
15040         * pretty-print.c (pp_integer_with_precision): Use
15041         HOST_LONG_LONG_FORMAT.
15042
15043 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
15044
15045         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
15046
15047 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
15048
15049         * config/i386/i386.c (bdesc_ptest): Removed.
15050         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
15051         (bdesc_args): Add __builtin_ia32_ptestz128,
15052         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
15053         (ix86_init_mmx_sse_builtins): Updated.
15054         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
15055         (ix86_expand_builtin): Updated.
15056
15057 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
15058
15059         * tree-cfg.c (valid_fixed_convert_types_p): New function.
15060         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
15061
15062 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
15063
15064         * value-prof.c (interesting_stringop_to_profile): Do not
15065         return early for BUILT_IN_MEMPCPY.
15066
15067 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
15068
15069         * calls.c (expand_call): Don't use callgraph to increase
15070         preferred_stack_boundary.
15071
15072         * cgraph.h (cgraph_rtl_info): Use unsigned on
15073         preferred_incoming_stack_boundary.
15074
15075         * final.c (rest_of_clean_state): Use unsigned on
15076         preferred_stack_boundary.
15077
15078 2008-05-09  Tom Tromey  <tromey@redhat.com>
15079
15080         PR preprocessor/22231:
15081         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
15082         proceeding.
15083
15084 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
15085
15086         PR tree-optimization/36129
15087         * tree-ssa-ccp.c: Include value-prof.h.
15088         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
15089         built-in function was folded to a constant.
15090         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
15091
15092 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
15093             Sebastian Pop  <sebastian.pop@amd.com>
15094
15095         * tree-scalar-evolution.c: Document instantiate_scev.
15096         (instantiate_parameters_1): Renamed instantiate_scev_1.
15097         Don't use the same loop for instantiation_loop and evolution_loop.
15098         (instantiate_scev): New.
15099         (instantiate_parameters): Moved...
15100         (resolve_mixers): Update call to instantiate_scev_1 to pass the
15101         same loop twice.  Maintains the semantics for this function.
15102         * tree-scalar-evolution.h (instantiate_scev): Declare.
15103         (instantiate_parameters): ...here.  Now static inline.
15104         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
15105         instead of resolve_mixers.
15106
15107 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15108
15109         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
15110
15111 2008-05-09  Tomas Bily  <tbily@suse.cz>
15112
15113         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
15114         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
15115         * tree-ssa-structalias.c (get_constraint_for): Likewise.
15116         * c-common.c (c_common_truthvalue_conversion): Likewise.
15117         * tree-object-size.c (compute_object_offset): Likewise.
15118         * tree-inline.c (estimate_num_insns_1): Likewise.
15119         * varasm.c (const_hash_1, compare_constant, copy_constant)
15120         (compute_reloc_for_constant, output_addressed_constants)
15121         (initializer_constant_valid_p): Likewise.
15122         * c-omp.c (check_omp_for_incr_expr): Likewise.
15123         * gimplify.c (gimplify_expr): Likewise.
15124         * c-typeck.c (c_finish_return): Likewise.
15125         * tree-vectorizer.c (supportable_widening_operation)
15126         (supportable_narrowing_operation): Likewise.
15127         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
15128         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
15129         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
15130         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
15131         (descr_info_loc): Likewise.
15132         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
15133         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
15134         (fold_unary): Likewise.
15135         * builtins.c (get_pointer_alignment): Likewise.
15136         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
15137         (instantiate_parameters_1): Likewise.
15138         * tree.c (expr_align, stabilize_reference): Likewise.
15139         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
15140         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
15141         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
15142         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
15143         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
15144         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
15145         Likewise.
15146         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
15147         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
15148         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
15149         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
15150         (forward_propagate_comparison)
15151         (tree_ssa_forward_propagate_single_use_vars): Likewise.
15152         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
15153         * emit-rtl.c (component_ref_for_mem_expr)
15154         (set_mem_attributes_minus_bitpos): Likewise.
15155         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
15156         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
15157         Likewise.
15158         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
15159         (build_function_call, pointer_diff, build_compound_expr)
15160         (c_finish_return): Likewise.
15161         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
15162         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
15163         Likewise.
15164         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
15165         * expr.c (is_aligning_offset): Likewise.
15166         * tree-ssa-alias.c (is_escape_site): Likewise.
15167         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
15168         (check_all_va_list_escapes): Likewise.
15169         * tree-ssa-loop-ivopts.c (determine_base_object)
15170         (determine_common_wider_type): Likewise.
15171         * dojump.c (do_jump): Likewise.
15172         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
15173         * tree-gimple.c (is_gimple_cast): Likewise.
15174         * fold-const.c (decode_field_reference, )
15175         (fold_sign_changed_comparison, fold_unary, fold_comparison)
15176         (fold_binary): Likewise.
15177         * tree-ssa-alias-warnings.c (find_alias_site_helper)
15178         (already_warned_in_frontend_p): Likewise.
15179         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
15180         * tree.c (really_constant_p, get_unwidened): Likewise.
15181         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
15182         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
15183         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
15184         Likewise.
15185         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
15186         CONVERT_EXPR_P.
15187         (CONVERT_EXPR_P): Define.
15188         (CASE_CONVERT): Define.
15189
15190 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
15191
15192         PR middle-end/36117
15193         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
15194         (delete_unmarked_insns): When deleting a call, call
15195         delete_unreachable_blocks.
15196         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
15197         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
15198
15199 2008-05-08  Richard Guenther  <rguenther@suse.de>
15200
15201         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
15202         (-ftree-salias): Likewise.
15203         (salias-max-implicit-fields): Remove param documentation.
15204         (salias-max-array-elements): Likewise.
15205         * tree-pass.h (pass_create_structure_vars): Remove.
15206         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
15207         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
15208         * tree-ssa-alias.c (create_structure_vars): Remove.
15209         (gate_structure_vars): Likewise.
15210         (pass_create_structure_vars): Likewise.
15211         (gate_build_alias): Likewise.
15212         (pass_build_alias): Adjust to run always and dump the function.
15213         * common.opt (ftree-salias): Hide.
15214         * passes.c (init_optimization_passes): Remove
15215         pass_create_structure_vars, adjust comment.
15216         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
15217         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
15218         * opts.c (decode_options): Do not set flag_tree_salias.
15219         (common_handle_option): Add OPT_ftree_salias to the backward
15220         compatibility section.
15221
15222 2008-05-08  Richard Guenther  <rguenther@suse.de>
15223
15224         * tree-flow-inline.h (var_can_have_subvars): Move ...
15225         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
15226         * tree-flow.h (var_can_have_subvars): Remove.
15227         (push_fields_onto_fieldstack): Remove.
15228         (sort_fieldstack): Likewise.
15229         (struct fieldoff): Move ...
15230         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
15231         alias_set and base_for_components fields.
15232         (sort_fieldstack): Make static.
15233         (push_fields_onto_fieldstack): Likewise.  Remove code that
15234         handles anything but RECORD_TYPEs.  Remove alias_set and
15235         base_for_components handling.
15236         (create_variable_info_for): Adjust.
15237
15238 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
15239
15240         * common.opt (Wframe-larger-than=): Shorten the help message
15241         to one line.
15242         * doc/invoke.texi (Wframe-larger-than=): Add more description.
15243
15244 2008-05-08  Rafael Espíndola  <espindola@google.com>
15245
15246         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
15247         trap.
15248         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
15249         trap and that both operands are gimple values.
15250         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
15251         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
15252         is a fp operation.
15253
15254 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
15255
15256         * read-rtl.c (join_c_conditions): Return the first string if the
15257         two strings are equal.
15258
15259 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
15260
15261         * gensupport.h (pred_data): Add a "num_codes" field.
15262         (add_predicate_code): Declare.
15263         * gensupport.c (add_predicate_code): New function.
15264         (std_pred_table): Add an "allows_const_p" field.
15265         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
15266         Remove the (incomplete) list of such codes from the codes field.
15267         (init_predicate_table): Use add_predicate_code.  Add all
15268         RTX_CONST_OBJs if allows_const_p is true.
15269         * genrecog.c (process_define_predicate): Use add_predicate_code.
15270
15271 2008-05-08  David Daney  <ddaney@avtrex.com>
15272             Richard Sandiford  <rsandifo@nildram.co.uk>
15273
15274         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
15275         special case of constant zero operands.
15276         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
15277         old and new values.  Special case constant zero values.
15278         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
15279         fails.
15280         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
15281         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
15282
15283 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
15284
15285         PR target/36090
15286         * simplify-rtx.c (simplify_plus_minus): Create CONST of
15287         similar RTX_CONST_OBJ before CONST_INT.
15288
15289 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
15290
15291         * stmt.c (expand_stack_restore): Change sa mode if needed.
15292
15293 2008-05-08  Richard Guenther  <rguenther@suse.de>
15294
15295         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
15296         return type to bool.
15297         (ix86_sol10_return_in_memory): Likewise.
15298         (ix86_i386elf_return_in_memory): Likewise.
15299         (ix86_i386interix_return_in_memory): Likewise.
15300         * config/i386/i386.c (ix86_return_in_memory): Likewise.
15301         (ix86_sol10_return_in_memory): Likewise.
15302         (ix86_i386elf_return_in_memory): Likewise.
15303         (ix86_i386interix_return_in_memory): Likewise.
15304
15305 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
15306
15307         PR bootstrap/36180
15308         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
15309         fndecl argument.
15310         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
15311         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
15312         declared in front.
15313
15314 2008-05-08  Richard Guenther  <rguenther@suse.de>
15315
15316         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
15317         * tree-data-ref.h (struct dr_alias): Remove subvars field.
15318         (DR_SUBVARS): Remove.
15319         * tree-dfa.c (dump_subvars_for): Remove.
15320         (debug_subvars_for): Likewise.
15321         (dump_variable): Do not dump subvars.
15322         (remove_referenced_var): Do not remove subvars.
15323         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
15324         (lookup_subvars_for_var): Remove.
15325         (get_subvars_for_var): Likewise.
15326         (get_subvars_at): Likewise.
15327         (get_first_overlapping_subvar): Likewise.
15328         (overlap_subvar): Likewise.
15329         * tree-flow.h (subvar_t): Remove.
15330         (struct var_ann_d): Remove subvars field.
15331         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
15332         argument.  Remove special handling of SFTs.
15333         (compute_tag_properties): Likewise.
15334         (set_initial_properties): Likewise.
15335         (compute_call_clobbered): Likewise.
15336         (count_mem_refs): Likewise.
15337         (compute_memory_partitions): Likewise.
15338         (compute_flow_insensitive_aliasing): Likewise.
15339         (setup_pointers_and_addressables): Likewise.
15340         (new_type_alias): Likewise.
15341         (struct used_part): Remove.
15342         (used_portions): Likewise.
15343         (struct used_part_map): Likewise.
15344         (used_part_map_eq): Likewise.
15345         (used_part_map_hash): Likewise.
15346         (free_used_part_map): Likewise.
15347         (up_lookup): Likewise.
15348         (up_insert): Likewise.
15349         (get_or_create_used_part_for): Likewise.
15350         (create_sft): Likewise.
15351         (create_overlap_variables_for): Likewise.
15352         (find_used_portions): Likewise.
15353         (create_structure_vars): Likewise.
15354         * tree.def (STRUCT_FIELD_TAG): Remove.
15355         * tree.h (MTAG_P): Adjust.
15356         (struct tree_memory_tag): Remove base_for_components and
15357         unpartitionable flags.
15358         (struct tree_struct_field_tag): Remove.
15359         (SFT_PARENT_VAR): Likewise.
15360         (SFT_OFFSET): Likewise.
15361         (SFT_SIZE): Likewise.
15362         (SFT_NONADDRESSABLE_P): Likewise.
15363         (SFT_ALIAS_SET): Likewise.
15364         (SFT_UNPARTITIONABLE_P): Likewise.
15365         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
15366         (union tree_node): Remove sft field.
15367         * alias.c (get_alias_set): Remove special handling of SFTs.
15368         * print-tree.c (print_node): Remove handling of SFTs.
15369         * tree-dump.c (dequeue_and_dump): Likewise.
15370         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
15371         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
15372         * tree-predcom.c (set_alias_info): Do not set subvars.
15373         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
15374         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
15375         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
15376         (add_vars_for_offset): Remove.
15377         (add_virtual_operand): Remove special handling of SFTs.
15378         (add_call_clobber_ops): Likewise.
15379         (add_call_read_ops): Likewise.
15380         (get_asm_expr_operands): Likewise.
15381         (get_modify_stmt_operands): Likewise.
15382         (get_expr_operands): Likewise.
15383         (add_to_addressable_set): Likewise.
15384         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
15385         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
15386         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
15387         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
15388         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
15389         (tree_node_structure): Likewise.
15390         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
15391         handling of SFTs.
15392         (find_what_p_points_to): Likewise.
15393
15394 2008-05-08  Sa Liu  <saliu@de.ibm.com>
15395
15396         * config/spu/spu.md: Fixed subti3 pattern.
15397
15398 2008-05-08  Richard Guenther  <rguenther@suse.de>
15399
15400         PR middle-end/36154
15401         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
15402         sure to create a representative for trailing arrays for PTA.
15403
15404 2008-05-08  Richard Guenther  <rguenther@suse.de>
15405
15406         PR middle-end/36172
15407         * fold-const.c (operand_equal_p): Two objects which types
15408         differ in pointerness are not equal.
15409
15410 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
15411
15412         * calls.c (compute_argument_block_size): Add argument tree fndecl.
15413         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
15414         (emit_library_call_value_1): Add new variable fndecl initialized by
15415         NULL_TREE. It should be the decl type of orgfun, but this information
15416         seems not to be available here, so it uses the default calling abi.
15417         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
15418         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
15419         by TARGET_RETURN_IN_MEMORY.
15420         * config/i386/i386-interix.h: Likewise.
15421         * config/i386/i386.h: Likewise.
15422         * config/i386/i386elf.h: Likewise.
15423         * config/i386/ptx4-i.h: Likewise.
15424         * config/i386/sol2-10.h: Likewise.
15425         * config/i386/sysv4.h: Likewise.
15426         * config/i386/vx-common.h: Likewise.
15427         * config/cris/cris.h: Removed #if 0 clause.
15428         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
15429         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
15430         argument.
15431         (ix86_sol10_return_in_memory): Likewise.
15432         (ix86_i386elf_return_in_memory): New.
15433         (ix86_i386interix_return_in_memory): New.
15434         * config/mt/mt-protos.h (mt_return_in_memory): New.
15435         * config/mt/mt.c: Likewise.
15436         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
15437         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
15438         * config/bfin/bfin.h: Likewise.
15439         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
15440         argument.
15441         * config/bfin/bfin.c: Likewise.
15442         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
15443         * config/alpha/unicosmk.h: Likewise.
15444         * config/i386/cygming.h: Likewise.
15445         * config/iq2000/iq2000.h: Likewise.
15446         * config/mips/mips.h: Likewise.
15447         * config/mn10300/mn10300.h: Likewise.
15448         * config/rs6000/rs6000.h: Likewise.
15449         * config/score/score.h: Likewise.
15450         * config/spu/spu.h: Likewise.
15451         * config/v850/v850.h: Likewise.
15452         * defaults.h: Likewise.
15453         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
15454         * expr.c (emit_block_move): Adjust use of
15455         OUTGOING_REG_PARM_STACK_SPACE.
15456         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
15457         OUTGOING_REG_PARM_STACK_SPACE.
15458         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
15459
15460 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
15461
15462         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
15463         on OMP_RETURN for OMP_FOR.
15464
15465         PR debug/35896
15466         * dwarf2out.c (dw_expand_expr, common_check): Removed.
15467         (fortran_common): New function.
15468         (gen_variable_die): Call fortran_common instead of common_check,
15469         adjust for it returning tree instead of rtx.  Formatting.
15470
15471 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
15472
15473         PR rtl/7335
15474         PR rtl/33826
15475         * see.c (see_copy_insn): Copy new pure const attributes for new call.
15476         * c-decl.c (merge_decls): Ditto.
15477         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
15478         to RTL_CONST_OR_PURE_CALL_P.
15479         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
15480         Initialized DECL_LOOPING_CONST_PURE.
15481         (process_call_operands): Set tree_side_effects properly.
15482         * tree.h (TREE_READONLY_DECL_P): Removed.
15483         (DECL_IS_PURE): Renamed to DECL_PURE_P.
15484         (DECL_LOOPING_OR_CONST_P): New macro.
15485         (struct tree_function_decl): Added looping_const_or_pure_p.
15486         (ECF_*) Renumbered.
15487         (ECF_LOOPING_OR_CONST_P): New macro.
15488         * rtlanal.c (pure_const_p): Removed.
15489         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
15490         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
15491         to RTL_CONST_CALL_P.
15492         * ipa-pure-const.c (pure_const_state_e): Added looping field.
15493         (check_decl, check_tree, check_call, scan_function): Initialize
15494         looping.
15495         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
15496         (static_execute): Set looping true for recursive functions.
15497         Undo setting state to IPA_NEITHER for recursive functions.
15498         * cse.c (cse_insn):
15499         * ifcvt.c (noce_can_store_speculate_p): Changed
15500         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
15501         RTL_CONST_OR_PURE_CALL_P.
15502         * dse.c (scan_insn): Ditto.
15503         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
15504         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
15505         RTL_CONST_OR_PURE_CALL_P.
15506         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
15507         pure_call_p to RTL_CONST_CALL_P.
15508         * gimplify.c (gimplify_call_expr): Clear side effects for
15509         non-looping pure and constant calls.
15510         * calls.c (emit_call_1): Set rtl flags from ecf flags.
15511         (flags_from_decl_or_type): Set ecf flags from decl flags.
15512         (initialize_argument_information): Turn off
15513         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
15514         Change const to pure if callee_copies is true rather than just
15515         turning off const.
15516         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
15517         way of marking pure calls.
15518         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
15519         Remove hack that was supposed to fix pr7335 and remove old
15520         way of marking pure calls.
15521         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
15522         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
15523         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
15524         RTL_CONST_OR_PURE_CALL_P.
15525         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
15526         * loop-invariant.c (find_exits, find_invariant_bb): Changed
15527         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
15528         * sched-deps.c (schedule_analyze): Ditto.
15529         * rtl.h (struct rtx_def): Use call field, unchanging field, and
15530         return_val field of calls to represent pure and const function info.
15531         (CONST_OR_PURE_CALL_P): Deleted macro.
15532         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
15533         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
15534         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
15535         TREE_READONLY.
15536         * tree-optimize.c (execute_fixup_cfg): Added test for
15537         ECF_LOOPING_CONST_OR_PURE.
15538         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
15539         DECL_PURE_P.
15540         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
15541         effects for looping pure or const calls.
15542         (verify_gimple_expr): Added verification code.
15543         * config/alpha/alpha.c (alpha_legitimize_address,
15544         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
15545         RTL_CONST_CALL_P.
15546         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
15547         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
15548         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
15549         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
15550         RTL_CONST_OR_PURE_CALL_P.
15551         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
15552         and const calls to be deleted.
15553
15554 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
15555
15556         PR target/35714
15557         * config/i386/mmx.md (mmx_subv2sf3): New expander.
15558         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
15559         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
15560         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15561         to handle nonimmediate operands.
15562         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
15563         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
15564         to handle nonimmediate operands.
15565         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
15566         (mmx_pmulhrwv4hi3): New expander.  Use
15567         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15568         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
15569         (sse2_umulv1siv1di3): New expander.  Use
15570         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15571         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
15572         (mmx_eq<mode>3): New expander.  Use
15573         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15574         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
15575         (mmx_uavgv8qi3): New expander.  Use
15576         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15577         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
15578         (mmx_uavgv4hi3): New expander.  Use
15579         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15580
15581         * config/i386/sse.md
15582         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
15583         to handle nonimmediate operands.
15584         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
15585         to handle nonimmediate operands.
15586         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
15587         to handle nonimmediate operands.
15588         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
15589         to handle nonimmediate operands.
15590         (sse2_unpckhpd_exp): New expander.  Use
15591         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15592         (sse2_unpcklpd_exp): New expander.  Use
15593         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15594         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
15595         to handle nonimmediate operands.
15596         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
15597         to handle nonimmediate operands.
15598         (*sse2_<plusminus_insn><mode>3): Rename from
15599         sse2_<plusminus_insn><mode>3 insn pattern.
15600         (sse2_<plusminus_insn><mode>3): New expander.  Use
15601         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15602         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
15603         (sse2_umulv2siv2di3): New expander.  Use
15604         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15605         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
15606         (sse4_1_mulv2siv2di3): New expander.  Use
15607         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15608         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
15609         (sse2_pmaddwd): New expander.  Use
15610         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15611         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
15612         (sse2_eq<mode>3): New expander.  Use
15613         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15614         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
15615         (sse4_1_eqv2di3): New expander.  Use
15616         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15617         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
15618         (sse2_uavgv16qi3): New expander.  Use
15619         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15620         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
15621         (sse2_uavgv16qi3): New expander.  Use
15622         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15623         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
15624         (sse2_uavgv8hi3): New expander.  Use
15625         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15626         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
15627         (ssse3_pmulhrswv8hi3): New expander.  Use
15628         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15629         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
15630         (ssse3_pmulhrswv4hi3): New expander.  Use
15631         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15632
15633         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
15634         (<sse>_vmmul<mode>3): Ditto.
15635         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
15636         (divv2df3): Ditto.
15637         (ssse3_pmaddubsw128): Use register_operand for operand 1.
15638         (ssse3_pmaddubsw): Ditto.
15639
15640         * config/i386/i386.c (struct_builtin_description)
15641         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
15642         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
15643         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
15644         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
15645         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
15646         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
15647         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
15648         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
15649         (ix86_fixup_binary_operands): Assert that src1
15650         and src2 must have the same mode when swapped.
15651         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
15652         and ix86_binary_operator_ok.  Do not force operands in registers
15653         when optimizing.
15654
15655 2008-05-07  Jan Hubicka  <jh@suse.cz>
15656
15657         * cgraph.c (dump_cgraph_node): Update.
15658         * cgraph.h (cgraph_local_info): Break out inline summary.
15659         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
15660         hook.
15661         * ipa-inline (inline_summary): New accestor function.
15662         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
15663         cgraph_decide_inlining, compute_inline_parameters): Update.
15664         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
15665
15666 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
15667
15668         Cleanup ColdFire scheduling support and add V4 pipeline model.
15669
15670         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
15671         (define_attr cpu): Add cfv4 value.
15672         (define_attr type, define_attr type1): Merge into a single 'type'
15673         attribute.  Update all uses.
15674         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
15675         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
15676         Update all uses.
15677         (define_attr opx_mem, define_attr opy_mem): Remove.
15678         (define_attr op_mem): Clean up, update comment.
15679         (define_attr size): Use specific values instead of general int.
15680         (define_attr guess, define_attr split): Remove.  Update all uses.
15681         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
15682         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
15683         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
15684         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
15685         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
15686         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
15687         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
15688         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
15689         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
15690         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
15691         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
15692         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
15693         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
15694         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
15695         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
15696         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
15697         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
15698         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
15699         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
15700         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
15701         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
15702         Update or set attributes.
15703         (stack_tie): New fake instruction.
15704
15705         * config/m68k/m68k.h (TUNE_CFV4): New macro.
15706         (m68k_sched_attr_size): Update declaration.
15707         (m68k_sched_attr_type2): Remove.
15708         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
15709         Declare new bypass predicates.
15710
15711         * config/m68k/m68k.c (m68k_sched_issue_rate,
15712         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
15713         implementations.
15714         (TARGET_SCHED_ISSUE_RATE,
15715         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
15716         (override_options): Handle scheduling for ColdFire V4 core.
15717         (m68k_expand_prologue): Emit stack_tie.
15718         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
15719         'OP_TYPE_FPN'.  Update all uses.
15720         (sched_guess_p): Remove.
15721         (sched_address_type): Handle symbolic addresses.
15722         (sched_get_operand): New static function.
15723         (sched_operand_type): Merge into sched_attr_op_type.
15724         (sched_attr_op_type): Handle FP registers, handle quick constants,
15725         update.
15726         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
15727         (m68k_sched_attr_size): Update.  Move logic to ...
15728         (sched_get_attr_size_int): New static function.
15729         (sched_get_opxy_mem_type): New static function.
15730         (m68k_sched_attr_op_mem): Update.
15731         (m68k_sched_attr_type2): Remove.
15732         (sched_cfv4_bypass_data): New static variable.
15733         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
15734         (m68k_sched_issue_rate): Implement scheduler hook.
15735         (struct _sched_ib: enabled_p): New field.
15736         (m68k_sched_variable_issue): Update.  Handle V4.
15737         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
15738         sched_dump_class_func_t, sched_dump_split_class,
15739         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
15740         sched_dump_dfa_class, m68k_sched_dump): Remove.
15741         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
15742         hook.
15743         (m68k_sched_init_global): Remove statisctics dumping, introduce
15744         sanity check that all instructions have pipeline reservations.  Handle
15745         ColdFire V4 core.
15746         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
15747         Handle ColdFire V4 core.
15748         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
15749         New static functions.
15750         (m68k_sched_address_bypass_p): New bypass predicate.
15751         (sched_get_indexed_address_scale): New static function.
15752         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
15753
15754         * cf.md: Update comments.
15755         (define_attr type2): Remove.  Use 'type' attribute instead.
15756         Update all uses.
15757         (cf_ib): Rename to cfv123_ib.  Update all uses.
15758         (cf_oep): Rename to cfv123_oep.  Update all uses.
15759         (cf_chr): Rename to cfv123_chr.  Update all uses.
15760         (cf_mem): Rename to cfv123_mem.  Update all uses.
15761         (cf_mac): Move to more appropriate place.
15762         (cfv123_guess): New automaton and cpu_unit.
15763         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
15764         Update uses of 'size' attribute.  Handle before reload scheduling.
15765         (cfv123_guess): New dummy reservation for unhandled instructions.
15766         (cfv4_*): Pipeline description of ColdFire V4 core.
15767         (ignore): New reservation to handle 'ignore' type.
15768
15769 2008-05-07  Ian Lance Taylor  <iant@google.com>
15770
15771         PR middle-end/36013
15772         * gimplify.c (find_single_pointer_decl_1): Don't look through
15773         indirections.
15774         (find_single_pointer_decl): Adjust comments.
15775
15776 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
15777
15778         PR middle-end/36137
15779         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
15780         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
15781
15782         PR middle-end/36106
15783         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
15784         integral type rather than floating point, then VIEW_CONVERT_EXPR
15785         to the floating point type.
15786
15787 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
15788
15789         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
15790         TFmode op0 to register.
15791
15792 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
15793
15794         * c-decl.c (grokdeclarator): Comment typo.
15795
15796 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
15797
15798         * tree-flow.h: Remove prototype for computed_goto_p.
15799         * tree-cfg.c (computed_goto_p): Make static.
15800
15801 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
15802
15803         PR target/35657
15804         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
15805         (contains_aligned_value_p): This.  Handle _Decimal128.
15806         (ix86_function_arg_boundary): Only align _Decimal128 to its
15807         natural boundary and handle it properly.
15808
15809 2008-05-06  Martin Jambor  <mjambor@suse.cz>
15810
15811         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
15812         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
15813         (ipcp_method_set_orig_node): Removed.
15814         (ipcp_cval_get_cvalue_type): Removed.
15815         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
15816         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
15817         (ipcp_cval_set_cvalue_type): Removed.
15818         (ipcp_cval_get_cvalue): Removed.
15819         (ipcp_cval_set_cvalue): Removed.
15820         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
15821         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
15822         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
15823         (ipcp_cval_meet): Renamed to ipa_lattice_meet
15824         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
15825         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
15826         (ipcp_get_ith_lattice): Changed parameters.
15827         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
15828         (ipcp_lattice_from_jfunc): Changed parameters.
15829         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
15830         (ipcp_method_cval_print): Added temporary variable info.
15831         (ipcp_redirect): Removed already unused local variable caller.
15832         (ipcp_redirect): New temporary variable orig_callee_info
15833         (ipcp_redirect): Removed newly unused local variable callee.
15834         (ipcp_redirect): Removed (a bit confusing) local variable type.
15835         (ipcp_insert_stage): Added local variable info.
15836         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
15837         renamed too
15838         (ipcp_formal_create): Removed.
15839         (ipcp_method_cval_set): Removed.
15840         (ipcp_propagate_stage): Renamed lattice variables.
15841         (ipcp_method_cval_set_cvalue_type): Removed.
15842         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
15843         (ipcp_print_all_lattices): Changed printed strings to refer to
15844         lattices rather than cvals.
15845         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
15846         (ipcp_propagate_const): Changed formal parameters.
15847         (build_const_val): Changed formal parameters.
15848         (ipcp_insert_stage): Removed useless variable cvalue
15849         (build_const_val): Changed formal parameters.
15850         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
15851         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
15852         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
15853         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
15854         (ipcp_print_func_profile_counts): Changed string from "method" to
15855         "function"
15856         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
15857         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
15858         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
15859         (ipcp_structures_print): Renamed to ipcp_print_all_structures
15860         (ipcp_profile_print): Renamed to ipcp_print_profile_data
15861         (ipcp_lat_is_const): Changed parameters and made inline.
15862         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
15863         (ipcp_redirect): Renamed to ipcp_need_redirect_p
15864         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
15865         the predicate condition directly
15866         (ipcp_propagate_stage): Added local variable args. Removed local
15867         variable callee.  (Both are mere code simplifications.)
15868         (ipcp_method_dont_insert_const): Renamed to
15869         ipcp_node_not_modifiable_p.
15870         (ipcp_node_not_modifiable_p): Made inline.
15871         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
15872         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
15873         (ipcp_print_all_lattices): Removed variable cvalue
15874         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
15875         Updated comments.
15876
15877 2008-05-06  Olivier Hainque  <hainque@adacore.com>
15878
15879         * tree-sra.c (try_instantiate_multiple_fields): Early return
15880         if field has POINTER_TYPE.
15881
15882 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
15883
15884         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
15885         by using 'q' specifier for instruction.
15886         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
15887
15888 2008-05-06  Anatoly Sokolov <aesok@post.ru>
15889
15890         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
15891         Change mode of zero_extract from QImode to HImode.
15892         (sign bit tests peepholes): (Ditto.).
15893
15894 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
15895
15896         * config/i386/mmx.md: Remove double backslashes from asm templates.
15897         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
15898         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15899         to handle nonimmediate operands.
15900         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
15901         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
15902         to handle nonimmediate operands.
15903         (*mmx_<code>v2sf3_finite): New insn pattern.
15904         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
15905         (mmx_<code>v2sf3): New expander.  Use
15906         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15907         (mmx_<plusminus_insn><mode>3): New expander.  Use
15908         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15909         (*mmx_<plusminus_insn><mode>3): New insn pattern.
15910         (mmx_add<mode>3): Removed.
15911         (mmx_ssadd<mode>3): Ditto.
15912         (mmx_usadd<mode>3): Ditto.
15913         (mmx_sub<mode>3): Ditto.
15914         (mmx_sssub<mode>3): Ditto.
15915         (mmx_ussub<mode>3): Ditto.
15916         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
15917         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
15918         to handle nonimmediate operands.
15919         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
15920         insn pattern.
15921         (mmx_smulv4hi3_highpart): New expander.  Use
15922         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15923         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
15924         insn pattern.
15925         (mmx_umulv4hi3_highpart): New expander.  Use
15926         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15927         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
15928         (mmx_<code>v4hi3): New expander.  Use
15929         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15930         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
15931         (mmx_<code>v8qi3): New expander.  Use
15932         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15933         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
15934         (mmx_<code><mode>3): New expander.  Use
15935         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
15936
15937 2008-05-05  Jan Hubicka  <jh@suse.cz>
15938
15939         PR tree-optimization/36118
15940         * passes.c (pass_init_dump_file): Fix dump header.
15941
15942 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15943
15944         PR middle-end/36141
15945         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
15946         VCE for function decls.
15947
15948 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
15949
15950         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
15951
15952 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
15953
15954         * config/i386/i386.md (sat_plusminus): New.
15955         (plusminus_insn): Likewise.
15956         (plusminus_mnemonic): Likewise.
15957         (addsub): Removed.
15958         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
15959         (*<addsub><mode>3_cc_overflow): Renamed to ...
15960         (*<plusminus_insn><mode>3_cc_overflow): This.
15961         (*<addsub>si3_zext_cc_overflow): Renamed to ...
15962         (*<plusminus_insn>si3_zext_cc_overflow): This.
15963
15964         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
15965         (<plusminus_insn><mode>3): This.
15966         (*<addsub><mode>3): Renamed to ...
15967         (*<plusminus_insn><mode>3): This.
15968         (<sse>_vm<addsub><mode>3): Renamed to ...
15969         (<sse>_vm<plusminus_insn><mode>3): This.
15970         (sse3_h<addsub>v4sf3): Renamed to ...
15971         (sse3_h<plusminus_insn>v4sf3): This.
15972         (sse3_h<addsub>v2df3): Renamed to ...
15973         (sse3_h<plusminus_insn>v2df3): This.
15974         (<plusminus_insn><mode>3): New.
15975         (*<plusminus_insn><mode>3): Likewise.
15976         (sse2_<plusminus_insn><mode>3): Likewise.
15977         (add<mode>): Removed.
15978         (*add<mode>3): Likewise.
15979         (sse2_ssadd<mode>3): Likewise.
15980         (sse2_usadd<mode>3): Likewise.
15981         (sub<mode>3): Likewise.
15982         (*sub<mode>3): Likewise.
15983         (sse2_sssub<mode>3): Likewise.
15984         (sse2_ussub<mode>3): Likewise.
15985
15986 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
15987
15988         * gthr-single.h: Add in required interface elements as per gthr.h.
15989         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
15990         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
15991         Generalize UNUSED macro.
15992         (__gthread_once): Add.
15993         (__gthread_key_create): Add.
15994         (__gthread_key_delete): Add.
15995         (__gthread_getspecific): Add.
15996         (__gthread_setspecific): Add.
15997
15998 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
15999
16000         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
16001         the same size types for the indirect reference on the rhs, then
16002         create a VCE.
16003
16004 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
16005
16006         * config/i386/i386.md
16007         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
16008         one insn template instead of template series.
16009         (*xordi_1_rex64): Ditto.
16010         (*xordi_2_rex64): Ditto.
16011
16012 2008-05-05  Ira Rosen  <irar@il.ibm.com>
16013
16014         PR tree-optimization/36119
16015         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
16016         in case of SLP.
16017
16018 2008-06-04  Jan Hubicka  <jh@suse.cz>
16019
16020         tree-optimization/36100
16021         * tree-pass.h (pass_O0_always_inline): Declare.
16022         * ipa-inline.c (inline_transform): Remove dead code.
16023         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
16024         pass_O0_always_inline): New.
16025         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
16026
16027 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
16028
16029         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
16030         mnemonic in this_param move for TARGET_64BIT.
16031
16032 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
16033
16034         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
16035         (*strmovsi_rex_1): Ditto.
16036         (*strsetsi_1): Ditto.
16037         (*strsetsi_rex_1): Ditto.
16038
16039         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
16040         adddicc expanders using SWI mode iterator.
16041
16042 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
16043
16044         PR target/36121
16045         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
16046         argument handling.
16047
16048 2008-05-04  David S. Miller  <davem@davemloft.net>
16049
16050         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
16051         (sparc*-*-linux*): Use linux.h in tm_file.
16052         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
16053         compiler defaulting to 32-bit.
16054         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
16055         no longer needed.
16056         * config/sparc/linux.h: Remove definitions now obtained
16057         properly from linux.h
16058         * config/sparc/linux64.h: Likewise.
16059         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
16060         don't want this setting for 32-bit builds in a biarch compiler.
16061         * doc/install.texi: Add sparc-linux to list of targets
16062         supporting --enable-targets=all.
16063
16064 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
16065
16066         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
16067
16068 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
16069
16070         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
16071         after V4SI_FTYPE_V8HI.
16072         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
16073         case V4SI_FTYPE_V2DF.
16074
16075 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
16076
16077         * doc/invoke.texi (max-flow-memory-locations): Removed.
16078         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
16079
16080 2008-05-03  Richard Guenther  <rguenther@suse.de>
16081
16082         PR middle-end/34973
16083         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
16084
16085 2008-05-02  David S. Miller  <davem@davemloft.net>
16086
16087         * config.gcc (need_64bit_hwint): Document libcpp dependency.
16088
16089 2008-05-02  Simon Baldwin <simonb@google.com>
16090
16091         PR bootstrap/36108
16092         * c-common.h (warn_array_subscript_range): Removed.
16093         * c-common.c (warn_array_subscript_range): Ditto.
16094         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
16095         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
16096
16097 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
16098
16099         * config/i386/i386.c (ix86_special_builtin_type): New.
16100         (bdesc_special_args): Likewise.
16101         (ix86_expand_special_args_builtin): Likewise.
16102         (ix86_init_mmx_sse_builtins): Updated.
16103         (ix86_expand_builtin): Updated.
16104         (ix86_expand_store_builtin): Removed.
16105         (ix86_expand_unop_builtin): Likewise.
16106
16107         * config/i386/mm3dnow.h (__v2sf): Moved to ...
16108         * config/i386/mmintrin.h (__v2sf): Here.
16109
16110         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
16111         const __v2sf.
16112         (_mm_loadl_pi): Likewise.
16113         (_mm_storeh_pi): Replace __v2si with __v2sf.
16114         (_mm_storel_pi): Likewise.
16115
16116         * doc/extend.texi: Correct __builtin_ia32_loadhps,
16117         __builtin_ia32_loadlps, __builtin_ia32_storehps,
16118         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
16119         __builtin_ia32_loadlpd.
16120
16121 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
16122
16123         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
16124         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
16125         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
16126         (ix86_init_mmx_sse_builtins): Updated.
16127         (ix86_expand_args_builtin): Likewise.
16128         (ix86_expand_builtin): Likewise.
16129         (ix86_expand_unop1_builtin): Renamed to ...
16130         (ix86_expand_unop_vec_merge_builtin): This.
16131
16132 2008-05-01  Jan Hubicka  <jh@suse.cz>
16133
16134         PR bootstrap/36100
16135         * ipa-inline.c (inline_generate_summary): Make static.
16136         (inline_transform): Do not call inlining at -O0; make static.
16137         * passes.c (execute_todo): Add sanity check.
16138         (execute_one_ipa_transform_pass): Execute proper flags.
16139
16140 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
16141
16142         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
16143         (DECL_NONADDRESSABLE_P): Likewise.
16144         * alias.c (record_component_aliases): Fix comment.
16145
16146 2008-05-01  Simon Baldwin <simonb@google.com>
16147
16148         * c-common.h (warn_array_subscript_range): New function.
16149         * c-common.c (warn_array_subscript_range): Ditto.
16150         * tree-vrp.c (check_array_ref): Corrected code to agree with
16151         comment, ignoring only arrays of size 0 or size 1.
16152         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
16153
16154 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
16155
16156         * config/i386/i386.c (ix86_builtin_type): Replace
16157         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
16158         (bdesc_args): Updated.
16159         (ix86_init_mmx_sse_builtins): Likewise.
16160         (ix86_expand_args_builtin): Likewise.
16161
16162         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
16163         with __v1di.
16164
16165         * doc/extend.texi: Correct __builtin_ia32_palignr.
16166
16167 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
16168
16169         PR target/36095
16170         * config/i386/i386.c (bdesc_crc32): Removed.
16171         (ix86_expand_crc32): Likewise.
16172         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
16173         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
16174         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
16175         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
16176         UINT_FTYPE_UINT_UCHAR.
16177         (bdesc_args): Updated. Add crc32 builtins.
16178         (ix86_init_mmx_sse_builtins): Updated.
16179         (ix86_expand_args_builtin): Updated to support subreg.
16180
16181         * doc/extend.texi: Correct __builtin_ia32_crc32di.
16182
16183 2008-05-01  Jan Hubicka  <jh@suse.cz>
16184
16185         * tree-pass.h (opt_pass): Add IPA_PASS.
16186         (varpool_node, cgraph_node): Forward declare.
16187         (ipa_opt_pass): Define.
16188         (pass_ipa_inline): Turn into ipa_opt_pass.
16189         (pass_apply_inline): Remove.
16190         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
16191         (apply_inline): Turn into ....
16192         (inline_transform): ... this one.
16193         (inline_generate_summary): New function.
16194         (pass_apply_inline): Remove.
16195         * function.h (ipa_opt_pass): Forward declare structure; typedef;
16196         vector.
16197         (struct function): Add ipa_transforms_to_apply.
16198         * passes.c (register_one_dump_file): Work on IPA_PASS.
16199         (init_optimization_passes): Remove pass_inline_parameters and
16200         pass_apply_inline.
16201         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
16202         (execute_one_pass) ... here; apply transforms when possible.
16203         (add_ipa_transform_pass, execute_ipa_summary_asses,
16204         execute_one_ipa_transform_pass): New.
16205         (execute_ipa_pass_list): Update for IPA_PASS type.
16206
16207 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
16208
16209         * config/i386/i386.c (ix86_builtin_type): Add
16210         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
16211         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
16212         (bdesc_args): Add SSE4a builtins.
16213         (ix86_init_mmx_sse_builtins): Updated.
16214         (ix86_expand_args_builtin): Likewise.
16215         (ix86_expand_builtin): Likewise.
16216
16217 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
16218
16219         * config/i386/i386.c (ix86_builtin_type): Add
16220         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
16221         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
16222         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
16223         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
16224         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
16225         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
16226         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
16227         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
16228         and DI_FTYPE_DI_DI_INT.
16229         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
16230         (ix86_init_mmx_sse_builtins): Updated.
16231         (ix86_expand_args_builtin): Likewise.
16232         (ix86_expand_builtin): Likewise.
16233         (ix86_expand_binop_imm_builtin): Removed.
16234
16235         * doc/extend.texi: Correct __builtin_ia32_palignr128.
16236
16237 2008-04-30  Richard Guenther  <rguenther@suse.de>
16238
16239         PR tree-optimization/32921
16240         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
16241
16242 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
16243
16244         * config/arm/arm.c (arm_unwind_emit): Use
16245         crtl->all_throwers_are_sibcalls instead of
16246         cfun->all_throwers_are_sibcalls.
16247         (arm_output_fn_unwind): Likewise.
16248         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
16249         instead of cfun->uses_pic_offset_table.
16250         (frv_expand_prologue): Likewise.
16251         (frv_frame_pointer_required): Likewise.
16252         (frv_expand_fdpic_call): Likewise.
16253         (frv_emit_movsi): Likewise.
16254         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
16255         cfun->returns_pcc_struct instead of
16256         current_function_returns_pcc_struct.
16257         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
16258         instead of cfun->calls_eh_return.
16259         (m32c_pushm_popm): Likewise.
16260         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
16261         "extern" declaration.
16262
16263 2008-04-30  Richard Guenther  <rguenther@suse.de>
16264
16265         PR tree-optimization/21636
16266         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
16267         constant address.
16268         (evaluate_stmt): Print the likely value.
16269         (ccp_visit_stmt): Avoid excessive vertical spacing.
16270
16271 2008-04-30  Rafael Espíndola  <espindola@google.com>
16272
16273         * builtins.c (fold_call_expr): Return realret.
16274         * tree-ssa-threadedge.c
16275         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
16276         __builtin_object_size.
16277
16278 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
16279
16280         * gcc.c (wrapper_string): New variable.
16281         (insert_wrapper): New function.
16282         (execute): New option -wrapper.
16283         * doc/invoke.texi (Overall Options): New driver option -wrapper.
16284
16285 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
16286
16287         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
16288         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
16289         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
16290         from...
16291         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
16292         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
16293         config/rs6000/e500crtres64gprctr.asm,
16294         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
16295         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
16296         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
16297         config/rs6000/e500crtsav64gprctr.asm,
16298         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
16299         config/rs6000/e500crtsavg64gprctr.asm: New files.
16300         * config/rs6000/t-ppccomm: Add build rules for new files.
16301         (LIB2FUNCS_STATIC_EXTRA): Add new files.
16302         * config/rs6000/t-netbsd: Add build rules for new files.
16303         (LIB2FUNCS_STATIC_EXTRA): New variable.
16304         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
16305         (CRTSAVRES_DEFAULT_SPEC): Likewise.
16306         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
16307
16308 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
16309
16310         * config/i386/i386.c (ix86_builtin_type): Add
16311         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
16312         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
16313         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
16314         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
16315         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
16316         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
16317         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
16318         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
16319         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
16320         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
16321         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
16322         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
16323         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
16324         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
16325         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
16326         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
16327         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
16328         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
16329         V1DI_FTYPE_V2SI_V2SI.
16330         (bdesc_2arg): Moved to ...
16331         (bdesc_args): Here.
16332         (ix86_init_mmx_sse_builtins): Updated.
16333         (ix86_expand_args_builtin): Updated.  Take a pointer
16334         to const struct builtin_description.  Handle comparison
16335         builtin functions.
16336         (ix86_expand_sse_compare): Take a new argument for swapping operands.
16337         (ix86_expand_builtin): Updated.
16338
16339         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
16340         (ssse3_pmaddubsw128): This.
16341         (ssse3_pmaddubswv4hi3): Renamed to ...
16342         (ssse3_pmaddubsw): This.
16343
16344         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
16345         (__builtin_ia32_packssdw128): Likewise.
16346         (__builtin_ia32_packuswb128): Likewise.
16347         (__builtin_ia32_pmaddubsw): Likewise.
16348         (__builtin_ia32_pmaddubsw128): Likewise.
16349
16350 2008-04-30  Richard Guenther  <rguenther@suse.de>
16351
16352         PR tree-optimization/14847
16353         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
16354         (recognize_bits_test): Use it.
16355         (recognize_single_bit_test): Likewise.
16356
16357 2008-04-30  Martin Jambor  <mjambor@suse.cz>
16358
16359         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
16360         instead of setting number of formal parameters to zero.
16361         (ipcp_init_stage): Do not set the number of actual parameters to zero
16362         either.
16363         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
16364         which are called with variable number of arguments.
16365         (ipcp_insert_stage): Explicitely skipping all nodes which are
16366         called with variable number of arguments.
16367         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
16368         number of parameters.
16369
16370         * ipa-prop.h (struct ipa_node_params): Added flag
16371         called_with_var_arguments
16372         (ipa_set_param_count): Added.  Changed sole setter to use it.
16373         (ipa_get_param_count): Added.  All readers of param_count
16374         converted to use it instead.
16375         (ipa_set_called_with_variable_arg): Added.
16376         (ipa_is_called_with_var_arguments): Added.
16377         (ipa_get_ith_param): Added.  All readers of param_decls converted
16378         to use it instead.
16379         (ipa_set_cs_argument_count): Added, sole writer to argument_count
16380         changed to use it.
16381         (ipa_get_cs_argument_count): Added, all readers of argument_count
16382         changed to cal it.
16383         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
16384         to use it.
16385
16386         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
16387         (struct ipcp_lattice): Renamed cval_type to type
16388         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
16389
16390         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
16391         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
16392         (ipcp_insert_stage): Changed the type of variable cvalue to tree
16393         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
16394         (build_const_val): Changed the type of parameter cvalue to tree
16395         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
16396         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
16397
16398         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
16399         constant
16400
16401         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
16402         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
16403         (ipa_add_method): Renamed to ipa_push_func_to_list
16404         (ipa_remove_method): Renamed to ipa_pop_func_from_list
16405         (ipa_callsite_param_count): Removed.
16406         (ipa_callsite_param_count_set): Removed.
16407         (ipa_callsite_param): Removed.
16408         (ipa_callsite_callee): Removed.
16409         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
16410         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
16411         (ipa_method_formal_count): Removed.
16412         (ipa_method_formal_count_set): Removed.
16413         (ipa_method_get_tree): Removed.
16414         (ipa_method_tree_map_create): Removed.
16415         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
16416         (ipa_create_param_decls_array): Creates the array itself
16417         (ipa_create_param_decls_array): Temporary variable info instead of
16418         a few dereferences.
16419         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
16420         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
16421         (get_type): Removed.
16422         (ipa_jf_get_info_type): Removed.
16423         (ipa_node_create): Renamed to ipa_create_node_params
16424         (ipa_free): Renamed to ipa_free_all_node_params
16425         (ipa_nodes_create): Renamed to ipa_create_all_node_params
16426         (ipa_edges_create): Renamed to ipa_create_all_edge_args
16427         (ipa_edges_free): Renamed to ipa_free_all_edge_args
16428         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
16429         (ipa_free_all_node_params): Deallocation to jump_functions moved to
16430         ipa_free_all_edge_args
16431         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
16432         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
16433         (ipa_create_methodlist_node): Removed.
16434         (ipa_methodlist_method): Removed.
16435         (ipa_methodlist_method_set): Removed.
16436         (ipa_methodlist_next_method): Removed.
16437         (ipa_methodlist_next_method_set): Removed.
16438         (ipa_method_is_modified): Removed.
16439         (ipa_method_modify_create): Removed.
16440         (ipa_method_modify_init): Temporary variable info instead of a few
16441         dereferences.
16442         (ipa_detect_param_modifications): Temporary variable info instead of
16443         a few dereferences.
16444         (ipa_compute_jump_functions): Temporary variable info instead of
16445         a few dereferences.
16446         (ipa_method_modify_set): Removed.
16447         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
16448         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
16449         than craph_node as the first parameter.
16450         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
16451         (ipa_method_modify_init): Removed.
16452         (ipa_compute_jump_functions): Added a temp variable instead of
16453         repeatadly dereferencing the cgraph_edge.aux pointer
16454         (ipa_callsite_param_set_type): Removed.
16455         (ipa_compute_jump_functions): i renamed to index and moved to
16456         an inner block
16457         (ipa_callsite_param_set_info_type_formal): Removed.
16458         (ipa_callsite_param_set_info_type): Removed.
16459         (ipa_callsite_param_map_create): Removed.
16460         (ipa_callsite_tree): Removed.
16461         (ipa_callsite_caller): Removed.
16462         (ipa_pop_func_from_list): return_method removed to return_func
16463
16464         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
16465         prefixed all values with IPA_. Changed all users.
16466         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
16467         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
16468         and FORMAL_IPATYPE IPA_PASS_THROUGH.
16469         (union parameter_info): Renamed to jump_func_value.
16470         (union jump_func_value): Renamed value to constant
16471         (struct ipa_jump_func): Renamed info_type to value
16472         (struct ipa_node): Renamed to ipa_node_params
16473         (struct ipa_node_params): Renamed ipa_arg_num to param_count
16474         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
16475         (struct ipa_node_params): Renamed ipa_mod to modified_flags
16476         (struct ipa_edge): Renamed to ipa_edge_args
16477         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
16478         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
16479         (struct ipa_methodlist): Renamed to ipa_func_list
16480         (struct ipa_func_list): method_p renamed to node, next_method
16481         renamed to next
16482         (ipa_methodlist_p): Removed, switched all users to struct pointer
16483         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
16484
16485 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
16486
16487         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
16488         (rs6000_emit_epilogue): Use backchain to restore only when we
16489         have a large frame.  Make use of frame pointer to restore if we
16490         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
16491
16492 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
16493
16494         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
16495         Add mode to zero_extract.
16496         (sign bit tests peepholes): (Ditto.).
16497
16498 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
16499
16500         * config/i386/i386.c (ix86_builtins): Replace Prescott New
16501         Instructions in comments with SSE3.
16502         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
16503         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
16504         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
16505         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
16506         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
16507         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
16508         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
16509         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
16510         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
16511         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
16512         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
16513         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
16514         (bdesc_sse_args): Renamed to ...
16515         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
16516         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
16517         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
16518         IX86_BUILTIN_FABSQ.
16519         (bdesc_1arg): Moved to ...
16520         (bdesc_args): Here.
16521         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
16522         Instructions in comments with SSE3.
16523         (ix86_expand_sse_operands_builtin): Renamed to ...
16524         (ix86_expand_args_builtin): This.  Updated.
16525         (ix86_expand_unop1_builtin): Update comments.
16526         (ix86_expand_builtin): Updated.
16527
16528 2008-04-29  Richard Guenther  <rguenther@suse.de>
16529
16530         PR tree-optimization/36078
16531         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
16532         Update virtual SSA form after cleaning up the CFG.
16533
16534 2008-04-29  Richard Guenther  <rguenther@suse.de>
16535
16536         PR middle-end/15255
16537         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
16538
16539 2008-04-29  Richard Guenther  <rguenther@suse.de>
16540
16541         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
16542         (compute_may_aliases): Do not call finalize_ref_all_pointers.
16543         (compute_flow_insensitive_aliasing): Do not treat
16544         PTR_IS_REF_ALL pointers special.
16545         (get_smt_for): Likewise.
16546         (may_alias_p): Re-structure.
16547         (is_escape_site): A ref-all pointer conversion is not an escape site.
16548         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
16549         PTR_IS_REF_ALL pointers special.
16550         * tree-ssa-structalias.h (struct alias_info): Remove
16551         ref_all_symbol_mem_tag field.
16552         (PTR_IS_REF_ALL): Remove.
16553
16554 2008-04-29  Richard Guenther  <rguenther@suse.de>
16555
16556         PR middle-end/36077
16557         * fold-const.c (extract_muldiv_1): In combining division constants
16558         make sure to never overflow.
16559
16560 2008-04-29  Nick Clifton  <nickc@redhat.com>
16561
16562         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
16563
16564 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16565
16566         PR bootstrap/35169
16567         * optc-gen.awk: Work around HP-UX/IA awk bug.
16568
16569 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
16570
16571         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
16572         2008-04-25 commit.
16573
16574 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
16575
16576         PR target/36073
16577         * config/i386/i386.md
16578         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
16579         Change operand 1 predicate to nonimmediate_operand.
16580
16581 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
16582
16583         PR debug/36060
16584         * dwarf2out.c (struct die_struct): Mark as chain_circular through
16585         die_sub field.
16586         * gengtype.c (walk_type, write_func_for_structure): Handle
16587         chain_circular.
16588         * doc/gty.texi: Document chain_circular.
16589
16590 2008-04-28  Richard Guenther  <rguenther@suse.de>
16591
16592         PR tree-optimization/36066
16593         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
16594         SCEV and loop.
16595
16596 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
16597
16598         PR target/36064
16599         * config/i386/i386.md
16600         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
16601         Use match_scratch instead of match_operand for operands 3 and 4.
16602
16603 2008-04-27  Richard Guenther  <rguenther@suse.de>
16604
16605         PR tree-optimization/18754
16606         PR tree-optimization/34223
16607         * tree-pass.h (pass_complete_unrolli): Declare.
16608         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
16609         loop size before and after unconditionally of UL_NO_GROWTH in effect.
16610         Rewrite loop into loop closed SSA form if it is not already.
16611         (tree_unroll_loops_completely): Re-structure to iterate over
16612         innermost loops with intermediate CFG cleanups.
16613         Unroll outermost loops only if requested or the code does not grow
16614         doing so.
16615         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
16616         loops are available.
16617         (tree_vectorize): Instead do so here.
16618         (tree_complete_unroll): Also unroll outermost loops.
16619         (tree_complete_unroll_inner): New function.
16620         (gate_tree_complete_unroll_inner): Likewise.
16621         (pass_complete_unrolli): New pass.
16622         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
16623         uses outside of the loop.
16624         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
16625         form if it is available.
16626         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
16627         * passes.c (init_optimization_passes): Schedule complete inner
16628         loop unrolling pass before the first CCP pass after final inlining.
16629
16630 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
16631
16632         * targhooks.h (default_emutls_var_fields,
16633         default_emutls_var_init): Declare.
16634         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
16635         * target.h (struct gcc_target): Add struct emutls member.
16636         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
16637         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
16638         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
16639         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
16640         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
16641         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
16642         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
16643         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
16644         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
16645         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
16646         emit debug information.
16647         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
16648         * varasm.c: Include targhooks.h.
16649         (emutls_object_section, emutls_tmpl_section): New.
16650         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
16651         (EMUTLS_SEPARATOR): New.
16652         (prefix_name): New.
16653         (get_emutls_object_name): New.
16654         (default_emutls_var_fields): New, broken out of ...
16655         (get_emutls_object_type): ... here.  Adjust to use target hooks.
16656         (get_emutls_init_templ_addr): Adjust to use target hooks.
16657         (emutls_decl): Adjust to use target hooks.
16658         (emutls_finish): Likewise.
16659         (default_emutls_var_init): New, broken out of ...
16660         (assemble_variable): ... here.  Adjust to use target hooks.
16661         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
16662         SECCAT_EMUTLS_TMPL.
16663         * c-common.c (handle_section_attribute): Prevent overriding
16664         sections for emulated tls with special sections.
16665         * config/i386/i386.c (x86_64_elf_select_section): Add
16666         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
16667         (x86_64_elf_unique_section): Likewise.
16668         * config/vxworks.c: Include tree.h.
16669         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
16670         (vxworks_override_options): Set TLS scheme.
16671         * doc/tm.texi (Emulated TLS): New node.
16672
16673 2008-04-26  Simon Baldwin <simonb@google.com>
16674
16675         PR c/35652
16676         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
16677         with propagated string constants.
16678
16679 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
16680
16681         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
16682         constraint for operand 2 when operand 0 is memory operand.
16683         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
16684         operand 0 is memory operand.
16685         (fix_trunc<mode>_i387_with_temp): Ditto.
16686         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
16687         operand 2 when operand 1 is memory operand.
16688         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
16689         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
16690         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
16691         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
16692         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
16693         operands 2,3 and 4 when operand 1 is memory operand.
16694         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
16695         is memory operand.
16696         (fistdi2_floor_with_temp): Ditto.
16697         (fist<mode>2_floor_with_temp): Ditto.
16698         (fistdi2_ceil_with_temp): Ditto.
16699         (fist<mode>2_ceil_with_temp): Ditto.
16700         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
16701
16702 2008-04-26  David Daney  <ddaney@avtrex.com>
16703
16704         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
16705         unspec_volitile.
16706         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
16707         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
16708         UNSPEC_UPDATE_GOT_VERSION): Renumber.
16709         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
16710         (compare_and_swap_12): New insn.
16711         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
16712         * config/mips/mips.c (mips_force_binary): New function.
16713         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
16714         (mips_expand_compare_and_swap_12): New function.
16715         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
16716
16717 2008-04-25  Jan Hubicka  <jh@suse.cz>
16718
16719         PR testsuite/35843
16720         * cfgexpand.c (pass_expand): Turn into RTL pass.
16721         * passes.c (execute_one_pass): Do pass typechecking after execution.
16722         * tree-pass.h (pass_expand): Turn into RTL pass.
16723
16724         * function.h (struct rtl_data): Move here fields
16725         accesses_prior_frames, calls_eh_return, saves_all_registers,
16726         has_nonlocal_goto, has_asm_statement, is_thunk,
16727         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
16728         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
16729         arg_pointer_save_area_init from struct function; turn into bool.
16730         (struct function): Move
16731         calls_eh_return, saves_all_registers, has_nonlocal_goto,
16732         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
16733         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
16734         tail_call_emit, arg_pointer_save_area_init
16735         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
16736         (current_function_returns_struct, current_function_returns_pcc_struct,
16737         current_function_calls_setjmp, current_function_calls_alloca,
16738         current_function_accesses_prior_frames,
16739         current_function_calls_eh_return, current_function_is_thunk,
16740         current_function_stdarg, current_function_profile,
16741         current_function_limit_stack, current_function_uses_pic_offset_table,
16742         current_function_uses_const_pool, current_function_has_nonlocal_label,
16743         current_function_saves_all_registers,
16744         current_function_has_nonlocal_goto,
16745         current_function_has_asm_statement): Remove accesor macros.
16746         * ra-conflict.c (global_conflicts): Update.
16747         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
16748         (suitable_for_tail_call_opt_p): Update.
16749         * builtins.c (expand_builtin_return_addr): Update.
16750         (expand_builtin_setjmp_setup): Update.
16751         (expand_builtin_nonlocal_goto): Update.
16752         * final.c (final_start_function): Update.
16753         (profile_function): Update.
16754         (leaf_function_p): Update.
16755         (only_leaf_regs_used): Update.
16756         * df-scan.c (df_get_exit_block_use_set): Update.
16757         * dojump.c (clear_pending_stack_adjust): Update.
16758         * tree-stdarg.c (gate_optimize_stdarg): Update.
16759         * gimple-low.c (lower_function_body): Update.
16760         * global.c (compute_regsets): Update.
16761         (global_alloc): Update.
16762         * dwarf2out.c (dwarf2out_begin_prologue): Update.
16763         * expr.c (expand_assignment): Update.
16764         * dse.c (dse_step0): Update.
16765         (dse_step1): Update.
16766         * c-decl.c (store_parm_decls): Update.
16767         * local-alloc.c (combine_regs): Update.
16768         (find_free_reg): Update.
16769         * function.c (assign_parms_augmented_arg_list): Update.
16770         (assign_parm_find_data_types): Update.
16771         (assign_parms): Update.
16772         (allocate_struct_function): Update.
16773         (expand_function_start): Update.
16774         (expand_function_end): Update.
16775         (get_arg_pointer_save_area): Update.
16776         (thread_prologue_and_epilogue_insns): Update.
16777         (rest_of_match_asm_constraints): Update.
16778         * stor-layout.c (variable_size): Update.
16779         * gcse.c (gcse_main): Update.
16780         (bypass_jumps): Update.
16781         * gimplify.c (gimplify_function_tree): Update.
16782         * calls.c (emit_call_1): Update.
16783         (expand_call): Update.
16784         * bt-load.c (compute_defs_uses_and_gen): Update.
16785         * except.c (sjlj_assign_call_site_values): Update.
16786         (sjlj_emit_function_enter): Update.
16787         (can_throw_external): Update.
16788         (set_nothrow_function_flags): Update.
16789         (expand_builtin_unwind_init): Update.
16790         (expand_eh_return): Update.
16791         (convert_to_eh_region_ranges): Update.
16792         (output_function_exception_table): Update.
16793         * emit-rtl.c (gen_tmp_stack_mem): Update.
16794         * cfgexpand.c (expand_used_vars): Update.
16795         (tree_expand_cfg): Update.
16796         * cfgcleanup.c (rest_of_handle_jump): Update.
16797         * explow.c (allocate_dynamic_stack_space): Update.
16798         * varasm.c (assemble_start_function): Update.
16799         (force_const_mem): Update.
16800         (mark_constant_pool): Update.
16801         * tree-optimize.c (tree_rest_of_compilation): Update.
16802         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
16803         * tree-cfg.c (notice_special_calls): Update.
16804         (is_ctrl_altering_stmt): Update.
16805         (tree_can_make_abnormal_goto): Update.
16806         (tree_purge_dead_abnormal_call_edges): Update.
16807         * config/alpha/predicates.md: Update.
16808         * config/alpha/alpha.c (alpha_sa_mask): Update.
16809         (alpha_sa_size): Update.
16810         (alpha_does_function_need_gp): Update.
16811         (alpha_expand_prologue): Update.
16812         (alpha_start_function): Update.
16813         (alpha_output_function_end_prologue): Update.
16814         (alpha_expand_epilogue): Update.
16815         * config/frv/frv.c (frv_stack_info): Update.
16816         (frv_expand_epilogue): Update.
16817         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
16818         (s390_register_info): Update.
16819         (s390_frame_info): Update.
16820         (s390_init_frame_layout): Update.
16821         (s390_can_eliminate): Update.
16822         (save_gprs): Update.
16823         * config/spu/spu.c (spu_split_immediate): Update.
16824         (need_to_save_reg): Update.
16825         (spu_expand_prologue): Update.
16826         (spu_expand_epilogue): Update.
16827         * config/sparc/sparc.md: Update.
16828         * config/sparc/sparc.c (eligible_for_return_delay): Update.
16829         (sparc_tls_got): Update.
16830         (legitimize_pic_address): Update.
16831         (sparc_emit_call_insn): Update.
16832         (sparc_expand_prologue): Update.
16833         (output_return): Update.
16834         (print_operand): Update.
16835         (sparc_function_ok_for_sibcall): Update.
16836         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
16837         * config/m32r/m32r.md: Update.
16838         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
16839         (m32r_compute_frame_size): Update.
16840         (m32r_expand_prologue): Update.
16841         (m32r_expand_epilogue): Update.
16842         (m32r_legitimize_pic_address): Update.
16843         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
16844         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
16845         * config/i386/i386.c (ix86_frame_pointer_required): Update.
16846         (gen_push): Update.
16847         (ix86_save_reg): Update.
16848         (ix86_compute_frame_layout): Update.
16849         (ix86_expand_prologue): Update.
16850         (ix86_expand_epilogue): Update.
16851         * config/sh/sh.c (output_stack_adjust): Update.
16852         (calc_live_regs): Update.
16853         (sh5_schedule_saves): Update.
16854         (sh_expand_prologue): Update.
16855         (sh_expand_epilogue): Update.
16856         (sh_setup_incoming_varargs): Update.
16857         (sh_allocate_initial_value): Update.
16858         (sh_get_pr_initial_val): Update.
16859         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
16860         * config/sh/sh.md (label:): Update.
16861         * config/avr/avr.c (out_movhi_mr_r): Update.
16862         * config/crx/crx.h (enum): Update.
16863         * config/xtensa/xtensa.h (along): Update.
16864         * config/stormy16/stormy16.c Update.
16865         (xstormy16_compute_stack_layout): Update.
16866         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
16867         (fr30_expand_prologue): Update.
16868         * config/cris/cris.c (cris_conditional_register_usage): Update.
16869         (cris_reg_saved_in_regsave_area): Update.
16870         (cris_initial_frame_pointer_offset): Update.
16871         (cris_simple_epilogue): Update.
16872         (cris_expand_prologue): Update.
16873         (cris_expand_epilogue): Update.
16874         (cris_expand_pic_call_address): Update.
16875         (cris_asm_output_symbol_ref): Update.
16876         (cris_asm_output_label_ref): Update.
16877         * config/cris/cris.md Update.
16878         * config/iq2000/iq2000.c (compute_frame_size): Update.
16879         (iq2000_expand_epilogue): Update.
16880         * config/mt/mt.h (save_direction): Update.
16881         * config/mn10300/mn10300.c (mn10300_function_value): Update.
16882         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
16883         (ia64_secondary_reload_class): Update.
16884         * config/m68k/m68k.c (m68k_save_reg): Update.
16885         (m68k_expand_prologue): Update.
16886         (m68k_expand_epilogue): Update.
16887         (legitimize_pic_address): Update.
16888         * config/rs6000/rs6000.c (rs6000_got_register): Update.
16889         (first_reg_to_save): Update.
16890         (first_altivec_reg_to_save): Update.
16891         (compute_vrsave_mask): Update.
16892         (compute_save_world_info): Update.
16893         (rs6000_stack_info): Update.
16894         (spe_func_has_64bit_regs_p): Update.
16895         (rs6000_ra_ever_killed): Update.
16896         (rs6000_emit_eh_reg_restore): Update.
16897         (rs6000_emit_allocate_stack): Update.
16898         (rs6000_emit_prologue): Update.
16899         (rs6000_emit_epilogue): Update.
16900         (rs6000_output_function_epilogue): Update.
16901         (output_profile_hook): Update.
16902         (rs6000_elf_declare_function_name): Update.
16903         * config/rs6000/rs6000.h (rs6000_args): Update.
16904         * config/rs6000/rs6000.md: Update.
16905         * config/mcore/mcore.c (mcore_expand_prolog): Update.
16906         * config/arc/arc.c (arc_output_function_epilogue): Update.
16907         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
16908         * config/darwin.c (machopic_function_base_name): Update.
16909         * config/score/score3.c (score3_compute_frame_size): Update.
16910         (rpush): Update.
16911         (rpop): Update.
16912         (score3_epilogue): Update.
16913         * config/score/score7.c (score7_compute_frame_size): Update.
16914         (score7_prologue): Update.
16915         (score7_epilogue): Update.
16916         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
16917         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
16918         * config/arm/arm.c (use_return_insn): Update.
16919         (require_pic_register): Update.
16920         (arm_load_pic_register): Update.
16921         (arm_compute_save_reg0_reg12_mask): Update.
16922         (arm_compute_save_reg_mask): Update.
16923         (thumb1_compute_save_reg_mask): Update.
16924         (output_return_instruction): Update.
16925         (arm_output_function_prologue): Update.
16926         (arm_output_epilogue): Update.
16927         (arm_get_frame_offsets): Update.
16928         (arm_expand_prologue): Update.
16929         (thumb_pushpop): Update.
16930         (thumb_exit): Update.
16931         (thumb1_expand_prologue): Update.
16932         (thumb1_expand_epilogue): Update.
16933         (arm_unwind_emit): Update.
16934         (arm_output_fn_unwind): Update.
16935         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
16936         * config/arm/arm.md: Update.
16937         * config/pa/pa.md: Update.
16938         * config/pa/pa.c (legitimize_pic_address): Update.
16939         (compute_frame_size): Update.
16940         (hppa_expand_prologue): Update.
16941         (hppa_expand_epilogue): Update.
16942         (borx_reg_operand): Update.
16943         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
16944         (HARD_REGNO_RENAME_OK): Update.
16945         * config/mips/mips.c (mips_global_pointer): Update.
16946         (mips_save_reg_p): Update.
16947         (mips_compute_frame_info): Update.
16948         (mips_frame_pointer_required): Update.
16949         (mips_expand_prologue): Update.
16950         (mips_expand_epilogue): Update.
16951         (mips_can_use_return_insn): Update.
16952         (mips_reorg_process_insns): Update.
16953         * config/v850/v850.c (compute_register_save_size): Update.
16954         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
16955         * config/mmix/mmix.c (along): Update.
16956         (mmix_expand_epilogue): Update.
16957         * config/bfin/bfin.c (legitimize_pic_address): Update.
16958         (must_save_p): Update.
16959         (stack_frame_needed_p): Update.
16960         (add_to_reg): Update.
16961         (bfin_expand_prologue): Update.
16962         * stmt.c (expand_asm_operands): Update.
16963         * reload1.c (reload): Update.
16964         (init_elim_table): Update.
16965
16966 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
16967
16968         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
16969
16970 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
16971
16972         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
16973         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
16974         (mov<mode>): Removed.
16975         (*movv4sf_internal): Likewise.
16976         (*movv2df_internal): Likewise.
16977
16978 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
16979
16980         * config.gcc (crx-*-elf): Remove deprecation.
16981
16982 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
16983
16984         * config/i386/cygming-crtend.c (register_frame_ctor): Register
16985         __gcc_deregister_frame with atexit.
16986         (deregister_frame_dtor): Remove.
16987
16988 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
16989             Nathan Sidwell  <nathan@codesourcery.com>
16990
16991         * config/rs6000/rs6000.opt (mspe): Remove Var property.
16992         (misel): Likewise.
16993         * config/rs6000/rs6000.h (rs6000_spe): Declare.
16994         (rs6000_isel): Likewise.
16995         * config/rs6000/rs6000.c (rs6000_spe): New variable.
16996         (rs6000_isel): New variable.
16997         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
16998
16999 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
17000
17001         PR c++/35758
17002         * c-common.c (handle_vector_size_attribute): Call
17003         lang_hooks.types.reconstruct_complex_type instead of
17004         reconstruct_complex_type.
17005         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
17006         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
17007         * langhooks.h (struct lang_hooks_for_types): Add
17008         reconstruct_complex_type hook.
17009         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
17010         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
17011
17012 2008-04-24  Richard Guenther  <rguenther@suse.de>
17013
17014         * c-common.h (check_builtin_function_arguments): Declare.
17015         * c-common.c (validate_nargs): New function.
17016         (check_builtin_function_arguments): Likewise.
17017         * c-typeck.c (build_function_call): Call
17018         check_builtin_function_arguments.
17019         * builtins.c (fold_builtin_classify): Remove error reporting code.
17020         (fold_builtin_unordered_cmp): Likewise.
17021         (fold_builtin_1): Likewise.
17022         (fold_builtin_n): Likewise.
17023
17024 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
17025
17026         PR tree-optimization/36008
17027         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
17028         the original op1, rather than delta by step.
17029
17030 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
17031             Sebastian Pop  <sebastian.pop@amd.com>
17032
17033         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
17034         eliminate_local_variables_stmt, eliminate_local_variables,
17035         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
17036         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
17037         of code delimited by two edges in the CFG.
17038         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
17039         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
17040         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
17041         the case of parallelisation of reductions.
17042         (expr_invariant_in_region_p): New.
17043
17044         * tree-flow.h (gather_blocks_in_sese_region): Declared.
17045         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
17046
17047 2008-04-24  Ira Rosen  <irar@il.ibm.com>
17048             Richard Guenther  <rguenther@suse.de>
17049
17050         PR tree-optimization/36034
17051         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
17052         incapable of dealing with loads with gaps.
17053
17054 2008-04-24  Rafael Espíndola  <espindola@google.com>
17055
17056         * tree-flow.h (vrp_evaluate_conditional): Change signature.
17057         * tree-ssa-propagate.c (fold_predicate_in): Update call to
17058         vrp_evaluate_conditional.
17059         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
17060         (vrp_evaluate_conditional): Split the cond argument.
17061         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
17062         (simplify_stmt_for_jump_threading): Update call to
17063         vrp_evaluate_conditional.
17064
17065 2008-04-24  Ira Rosen  <irar@il.ibm.com>
17066
17067         PR tree-optimization/35982
17068         * tree-vect-analyze.c (vect_check_interleaving): Check that the
17069         interleaved data-refs are of the same type.
17070
17071 2008-04-24  Danny Smith  <dannysmith@users.net>
17072
17073         * c-format.c (check_format_info_main): Use strncmp rather than a
17074         magic prefix to handle multichar length specs.
17075         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
17076         Don't prefix "I64" and "I32" with '\0'.
17077
17078 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
17079
17080         PR target/36015
17081         * config/i386/i386.c (init_cumulative_args): Don't pass anything
17082         in registers for -m32 only if stdarg_p (fntype).
17083
17084 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
17085
17086         PR rtl-optimization/36006
17087         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
17088         temp to op0 in order to avoid invalid rtx sharing.
17089
17090 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
17091
17092         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
17093         check TREE_INVARIANT.
17094         * tree-gimple.c (is_gimple_address): New.
17095         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
17096         * tree-gimple.h (is_gimple_address): New.
17097         * tree.h (decl_address_invariant_p): New.
17098         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
17099         (build_string): Likewise.
17100         (decl_address_invariant_p): New, from is_gimple_invariant_address.
17101         (tree_invariant_p_1): Likewise.
17102         (save_expr): Use it.
17103         (tree_invariant_p): New.
17104         (skip_simple_arithmetic): Use it.
17105         (stabilize_reference_1): Use it.
17106         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
17107         simplify.
17108         (build1_stat): Drop code to compute TREE_INVARIANT.
17109         (build2_stat): Drop code to compute TREE_INVARIANT.
17110         (build3_stat): Drop code to compute TREE_INVARIANT.
17111         (build4_stat): Drop code to compute TREE_INVARIANT.
17112         (build5_stat): Drop code to compute TREE_INVARIANT.
17113         (build7_stat): Drop code to compute TREE_INVARIANT.
17114         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
17115         * tree.h (struct tree_base): Remove invariant_flag.
17116         (TREE_INVARIANT): Remove.
17117         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
17118         (fold_builtin_expect): Check TREE_CONSTANT.
17119         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
17120         * c-tree.h (c_expr_to_decl): Drop third parameter.
17121         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
17122         (build_c_cast): Don't set TREE_INVARIANT.
17123         (pop_init_level): Don't set TREE_INVARIANT.
17124         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
17125         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
17126         TREE_CONSTANT.
17127         (gimplify_init_constructor): Don't set TREE_INVARIANT.
17128         (gimplify_addr_expr): Adjust comment.
17129         * tree-mudflap.c (mf_build_string):
17130         * print-tree.c (print_node): Don't print TREE_INVARIANT.
17131         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
17132         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
17133         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
17134         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
17135         * langhooks.h (struct lang_hooks): Drop third parameter from
17136         expr_to_decl.
17137
17138 2008-04-23  Richard Guenther  <rguenther@suse.de>
17139
17140         PR tree-optimization/27799
17141         PR tree-optimization/32921
17142         PR tree-optimization/32624
17143         * tree-ssa-structalias.c (merge_smts_into): Only merge the
17144         SMTs aliases and the tag itself into the solution.
17145         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
17146         merge the points-to solution back into the SMT aliases.
17147         (may_alias_p): Use alias_set_subset_of instead of
17148         aliases_conflict_p.  A pointer which points to
17149         memory with alias set zero may access any variable.
17150
17151 2008-04-23  Richard Guenther  <rguenther@suse.de>
17152
17153         * alias.c (alias_set_subset_of): Correctly handle asking
17154         if zero is a subset of an alias set with zero child.
17155         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
17156         (compute_flow_insensitive_aliasing): Correctly walk all
17157         pointers.  Do not unnecessarily union sets.
17158
17159 2008-04-23  Richard Guenther  <rguenther@suse.de>
17160
17161         PR middle-end/36021
17162         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
17163
17164 2008-04-22  Tomas Bily  <tbily@suse.cz>
17165
17166         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
17167         unreachable case.
17168         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
17169         NON_LVALUE_EXPR.
17170         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
17171         * tree-ssa-structalias.c (get_constraint_for): Likewise.
17172         * tree-inline.c (estimate_num_insns_1): Likewise.
17173         * varasm.c (const_hash_1, compare_constant, copy_constant)
17174         (compute_reloc_for_constant, output_addressed_constants): Likewise.
17175         * emit-rtl.c (component_ref_for_mem_expr)
17176         (set_mem_attributes_minus_bitpos): Likewise.
17177         * expr.c (highest_pow2_factor, expand_expr_real_1, )
17178         (is_aligning_offset): Likewise.
17179         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
17180         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
17181         * dojump.c (do_jump): Likewise.
17182         * builtins.c (get_pointer_alignment, get_memory_rtx)
17183         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
17184         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
17185
17186 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
17187
17188         PR rtl-optimization/36017
17189         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
17190         expanding the library call.
17191
17192 2008-04-22  Ian Lance Taylor  <iant@google.com>
17193
17194         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
17195         than size_in_bytes.
17196
17197 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
17198
17199         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
17200         of LR/CTR moves for Power6.
17201
17202 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
17203
17204         PR middle-end/36003
17205         * passes.c (init_optimization_passes): Remove
17206         pass_fast_rtl_byte_dce.
17207
17208 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
17209
17210         PR target/29096
17211         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
17212         builtin functions to generate faster code.
17213         (_mm_cvtpu16_ps): Ditto.
17214         (_mm_cvtpi32x2_ps): Ditto.
17215
17216 2008-04-22  Nick Clifton  <nickc@redhat.com>
17217
17218         * common.opt (ftree-loop-distribution): Add Optimization
17219         attribute.
17220
17221         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
17222         (frv_expand_builtin_va_start): Likewise.
17223
17224         * config/arm/arm.c (thumb_find_work_register): Fix location of
17225         argument register count.
17226
17227 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17228
17229         Support scheduling for ColdFire V1 and V3 microarchitecture.
17230         Improve scheduling of multiplication instructions.
17231
17232         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
17233         (mac): New instruction attribute.
17234         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
17235         (m68k_sched_mac): New variable.
17236         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
17237         Handle cfv1 and cfv3.
17238         (max_insn_size): New static variable.
17239         (struct _sched_ib): New type.
17240         (sched_ib): New static variable.
17241         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
17242         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
17243         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
17244         Update.
17245         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
17246         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
17247         new variables.  Update.
17248         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
17249         Add modeling of cfv3 instruction buffer.  Update.
17250         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
17251         * config/m68k/m68k.h (TUNE_CFV3): New macro.
17252         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
17253         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
17254         a particular reservation applies to.
17255         (type2): Reorganize attribute values.  Rename alu to alu_reg,
17256         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
17257         to mul_l and mul_w.
17258         (cf_ib_*): Simplify description of instruction buffer.
17259         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
17260         (cf_mem): Split into cf_mem1 and cf_mem2.
17261         (cf_v2_move_??): Rename to cfv12_alu_??.
17262         (cf_v2_move_l_??): Rename to cfv12_omove_??.
17263         (cf_v2_mul_??): Remove reservations.
17264         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
17265         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
17266         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
17267         appropriate place.
17268         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
17269         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
17270         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
17271         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
17272         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
17273         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
17274         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
17275         expansions of the above reservations for instructions of sizes
17276         1, 2 and 3 words.
17277
17278 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17279
17280         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
17281
17282 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
17283
17284         * coverage.c: Include tree-pass.h.
17285         (coverage_counter_alloc): Print da_file_name to the dump file.
17286
17287 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
17288
17289         * sbitmap.c (sbitmap_range_empty_p): New function.
17290         * sbitmap.h (sbitmap_range_empty_p): New function.
17291         * bitmap.h: Now includes obstack.h.
17292
17293 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
17294             Kenneth Zadeck  <zadeck@naturalbridge.com>
17295
17296         * dbgcnt.def (ra_byte_scan): Added.
17297         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
17298         when the last hit happens for a counter.
17299         * timevar.def (TV_DF_BYTE_LR): New variable.
17300         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
17301         * passes.c (pass_fast_rtl_byte_dce): New pass.
17302         * fwprop.c (update_df): Added mode to call df_ref_create.
17303         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
17304         DF_REF_EXTRACT_OFFSET.
17305         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
17306         DF_BYTE_LR_OUT, df_byte_lr): New macro.
17307         (df_mm): New enum.
17308         (df_ref_extract): Added mode field.
17309         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
17310         DF_REF_EXTRACT_OFFSET.
17311         (DF_REF_EXTRACT_MODE): New macro.
17312         (df_byte_lr_bb_info): New structure.
17313         (df_print_byte_regset, df_compute_accessed_bytes,
17314         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
17315         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
17316         df_byte_lr_simulate_uses,
17317         df_byte_lr_simulate_artificial_refs_at_top,
17318         df_byte_lr_simulate_artificial_refs_at_end,
17319         df_compute_accessed_bytes): New function.
17320         (df_ref_create): Add parameter.
17321         (df_byte_lr_get_bb_info): New inline function.
17322         * df-scan.c (df_ref_record, df_uses_record,
17323         df_ref_create_structure): Added mode parameter.
17324         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
17325         df_defs_record, df_uses_record, df_get_conditional_uses,
17326         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
17327         df_entry_block_defs_collect, df_exit_block_uses_collect):
17328         Added mode parameter to calls to df_ref_record, df_uses_record,
17329         df_ref_create_structure.
17330         (df_ref_equal_p, df_ref_compare): Added test for modes.
17331         (df_ref_create_structure): Added code to set mode.  Renamed
17332         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
17333         DF_REF_EXTRACT_OFFSET.
17334         * df-core.c (df_print_byte_regset): New function.
17335         * df-byte-scan.c: New file.
17336         * df-problems.c (df_rd_transfer_function): Removed unnecessary
17337         calls to BITMAP_FREE.
17338         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
17339         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
17340         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
17341         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
17342         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
17343         df_byte_lr_local_compute, df_byte_lr_init,
17344         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
17345         df_byte_lr_transfer_function, df_byte_lr_free,
17346         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
17347         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
17348         df_byte_lr_simulate_uses,
17349         df_byte_lr_simulate_artificial_refs_at_top,
17350         df_byte_lr_simulate_artificial_refs_at_end): New function.
17351         * dce.c (byte_dce_process_block): New function.
17352         (dce_process_block): au is now passed in rather than computed
17353         locally.  Changed loops that look at artificial defs to not look
17354         for conditional or partial ones, because there never are any.
17355         (fast_dce): Now is able to drive byte_dce_process_block or
17356         dce_process_block depending on the kind of dce being done.
17357         (rest_of_handle_fast_dce): Add parameter to fast_dce.
17358         (rest_of_handle_fast_byte_dce): New function.
17359         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
17360         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
17361
17362 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
17363
17364         PR fortran/35019
17365         * gcc.h: Added fortran options that take arguments to
17366         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
17367         macros.
17368
17369 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
17370
17371         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
17372         scalarization if on the LHS and not a full access.
17373
17374 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17375
17376         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
17377
17378 2008-04-18  Rafael Espíndola  <espindola@google.com>
17379
17380         * tree-vrp.c (find_case_label_index): Fix the binary search.
17381         (find_case_label_range): New.
17382         (vrp_visit_switch_stmt): Use find_case_label_range.
17383         (simplify_switch_using_ranges): Use find_case_label_range.
17384
17385 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
17386
17387         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
17388         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
17389
17390 2008-04-18  Tom Tromey  <tromey@redhat.com>
17391
17392         PR libcpp/15500:
17393         * doc/cpp.texi (Implementation-defined behavior): Mention
17394         -finput-charset.
17395
17396 2008-04-18  Ian Lance Taylor  <iant@google.com>
17397
17398         * fold-const.c (pointer_may_wrap_p): New static function.
17399         (fold_comparison): Add another test for pointer overflow.  Use
17400         pointer_may_wrap_p to disable some false positives.
17401
17402 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
17403
17404         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
17405         (fname_as_string): Match updated cpp_interpret_string prototype.
17406         (fix_string_type): Support char16_t* and char32_t*.
17407         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
17408         derivative) nodes.  Register as builtin if C++0x.
17409         (c_parse_error): Support CPP_CHAR{16,32}.
17410         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
17411         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
17412         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
17413         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
17414         CTI_CHAR32_ARRAY_TYPE>: New elements.
17415         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
17416         char32_type_node, signed_char32_type_node, char16_array_type_node,
17417         char32_array_type_node): New defines.
17418         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
17419         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
17420         (lex_string): Support CPP_STRING{16,32}, match updated
17421         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
17422         (lex_charconst): Support CPP_CHAR{16,32}.
17423         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
17424         and CPP_STRING{16,32}.
17425
17426 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
17427
17428         PR bootstrap/35457
17429         * aclocal.m4: Regenerate.
17430         * configure: Regenerate.
17431
17432 2008-04-18  Jan Hubicka  <jh@suse.cz>
17433
17434         * except.c (dw2_size_of_call_site_table,
17435         sjlj_size_of_call_site_table): Use vector API for call_site_record.
17436
17437         * cgraphbuild.c (build_cgraph_edges): Update.
17438         * tree-pass.h: Update comment.
17439         * final.c (leaf_function_p): Update.
17440         (leaf_renumber_regs): Update.
17441         (rest_of_clean_state): Update.
17442         * omp-low.c (expand_omp_parallel): Update.
17443         * ipa-reference.c (analyze_function): Update.
17444         * reorg.c (find_end_label): Update.
17445         (optimize_skip): Update.
17446         (fill_simple_delay_slots): Update.
17447         (fill_simple_delay_slots): Update.
17448         (make_return_insns): Update.
17449         (dbr_schedule): Update.
17450         * gimple-low.c (record_vars_into): Update.
17451         * cfgbuild.c (make_edges): Update.
17452         * function.c (assign_stack_local): Update.
17453         (assign_parm_adjust_stack_rtl): Update.
17454         (locate_and_pad_parm): Update.
17455         (allocate_struct_function): Do not initialize stack_alignment_needed
17456         and preferred_stack_boundary here.
17457         (stack_protect_prologue): Update.
17458         (stack_protect_epilogue): Update.
17459         (expand_function_start): Initialize stack_alignment_needed,
17460         preferred_stack_boundary and max_jumptable_ents.
17461         (expand_function_end): Update.
17462         (free_after_compilation): Do not NULLify epilogue_delay_list.
17463         * function.h (struct rtl_data): Add stack_protect_guard,
17464         stack_alignment_needed,
17465         preferred_stack_boundary, epilogue_delay_list.
17466         (struct function): Remove value_histograms, stack_alignment_needed,
17467         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
17468         last_label_uid,
17469         unexpanded_var_list, stack_protect_guard.
17470         (current_function_epilogue_delay_list): Remove.
17471         * ipa-type-escape.c (analyze_function): Update.
17472         * gimplify.c (pop_gimplify_context): Update comment.
17473         * calls.c (expand_call): Update.
17474         (emit_library_call_value_1): Update.
17475         * except.c (set_nothrow_function_flags): Update.
17476         * cfgexpand.c (get_decl_align_unit): Update.
17477         (create_stack_guard): Update.
17478         (estimated_stack_frame_size): Update.
17479         (expand_used_vars): Update.
17480         (tree_expand_cfg): Free histogram earliers, init expansion variables.
17481         * explow.c (allocate_dynamic_stack_space): Update.
17482         * tree-ssa-live.c (remove_unused_locals): Update.
17483         * varasm.c (mark_constant_pool): Update.
17484         * tree-inline.c (remap_decls): Update.
17485         (initialize_cfun): Update.
17486         (declare_return_variable): Update.
17487         (inline_forbidden_p): Update.
17488         (expand_call_inline): Update.
17489         (declare_inline_vars): Update.
17490         (tree_function_versioning): Update.
17491         * tree-flow.h (value_histograms): New.
17492         (VALUE_HISTOGRAMS): New macro.
17493         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
17494         last_label_uid.
17495         * tree-cfg.c (set_bb_for_stmt): Update.
17496         (replace_by_duplicate_decl): Update.
17497         (move_block_to_fn): Update.
17498         (new_label_mapper): Update.
17499         (dump_function_to_file): Update.
17500         * ipa-struct-reorg.c (build_data_structure): Update.
17501         * cfgrtl.c (print_rtl_with_bb): Update.
17502         * reload1.c (reload): Update.
17503         (reload): Update.
17504         * config/i386/i386.c (setup_incoming_varargs_64,
17505         ix86_compute_frame_layout): Update.
17506         * config/arc/arc.c (arc_output_function_epilogue): Update.
17507
17508 2008-04-18  Marius Strobl <marius@FreeBSD.org>
17509
17510         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
17511         for FreeBSD as well.
17512         * gthr-posix95.h: Likewise.
17513
17514 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
17515
17516         PR rtl-optimization/35838
17517         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
17518         out the byte offset of the first subreg.
17519
17520 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
17521
17522         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
17523         to split_ti instead of three separate calls with single member arrays.
17524         (subti3 splitter): Ditto.
17525         (adddi3 splitter): Ditto with split_di.
17526         (subdi3 splitter): Ditto.
17527         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
17528         two separate calls with single member arrays.  Swap match_dup
17529         operands 1 and 2 to better fit into the array.
17530         (negdi2 splitter): Ditto with split_di.
17531         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
17532         two separate calls with single member arrays.  Swap match_dup operands
17533         6 and 7 to better fit into the array.
17534
17535 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
17536
17537         * config/i386/i386.c (sse_builtin_type): New.
17538         (bdesc_sse_args): Likewise.
17539         (bdesc_sse_3arg): Removed.
17540         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
17541         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
17542         IX86_BUILTIN_ROUNDPS.
17543         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
17544         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
17545         IX86_BUILTIN_ROUNDPS.
17546         (ix86_expand_sse_4_operands_builtin): Removed.
17547         (ix86_expand_sse_operands_builtin): New.
17548         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
17549         and CODE_FOR_sse4_1_roundps.
17550         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
17551         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
17552
17553 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
17554
17555         PR target/35907
17556         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
17557         regs before frame pop when needed.  If use_backchain_to_restore_sp
17558         then load backchain into a temp reg to restore vr and vrsave.  Add
17559         code to restore vr after frame pop if possible.
17560
17561 2008-04-17  Richard Guenther  <rguenther@suse.de>
17562
17563         * tree-vn.c (expressions_equal_p): Do not check type
17564         equality or compatibility before calling operand_equal_p.
17565         * fold-const.c (operand_equal_p): Check equivalence of
17566         integer constants before bailing out due to signedness or
17567         precision differences.
17568         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
17569         spurious differences in type qualification.  Ignore types
17570         for COMPONENT_REFs at all.
17571
17572 2008-04-17  Christian Bruel  <christian.bruel@st.com>
17573
17574         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
17575         msw_skip comparison.
17576
17577 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
17578
17579         PR c/35739
17580         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
17581         reg type.
17582
17583         PR tree-optimization/35899
17584         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
17585         rather than TREE_OPERAND.
17586
17587 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
17588
17589         PR target/35944
17590         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
17591         temporary registers.  Change operand predicate to general_operand.
17592         (remainderxf3): Ditto.
17593
17594 2008-04-16  Richard Guenther  <rguenther@suse.de>
17595
17596         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
17597         * tree-affine.c (aff_combination_expand): Look through some
17598         conversions.
17599
17600 2008-04-15  Doug Kwan  <dougkwan@google.com>
17601
17602         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
17603         for hex printing.
17604         * tree-pretty-print.c (dump_generic_node): Ditto.
17605         * final.c (output_addr_const): Ditto.
17606         * dwarf2out.c (output_cfi): Ditto.
17607         * c-pretty-print.c (pp_c_integer_constant): Ditto.
17608         * print-rtl.c (print_rtx): Ditto.
17609         * print-tree.c (print_node_brief, print_node): Ditto.
17610         * c-common.c (match_case_to_enum_1): Ditto.
17611         * sched-vis.c (print_value): Ditto.
17612         * config/i386/i386.c (print_operand): Cast to long unsigned int
17613         for hex printing.
17614
17615 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
17616         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
17617         MS Windows VirtualProtect function.
17618
17619 2008-04-15  Jan Hubicka  <jh@suse.cz>
17620
17621         * gengtype.c (write_root): Param_is argument is OK.
17622         * expr.c (expand_expr_real_1): Update call of get_exception_*.
17623         * function.h: Include varray.h
17624         (rtl_eh): New stucture based on except.c one.
17625         (call_site_record): New forward declaration and vector type.
17626         * calls.c (emit_call_1): Do not call
17627         note_current_region_may_contain_throw.
17628         * except.c (eh_status): Remove cur_region, try_region since they are
17629         unused.
17630         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
17631         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
17632         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
17633         Remove call_site_data_used, call_site_data_size.
17634         Turn call_site_record into vector in function.h.
17635         (note_current_region_may_contain_throw): Remove.
17636         (get_exception_pointer, get_exception_filter): Do not take struct
17637         function argument; update.
17638         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
17639         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
17640         build_post_landing_pads, dw2_build_landing_pads,
17641         sjlj_assign_call_site_values, sjlj_mark_call_sites,
17642         sjlj_emit_function_enter, sjlj_emit_function_enter,
17643         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
17644         sjlj_build_landing_pads, finish_eh_generation,
17645         remove_exception_handler_label, remove_eh_handler,
17646         maybe_remove_eh_handler, add_reachable_handler,
17647         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
17648         add_action_record, collect_one_action_chain, add_call_site,
17649         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
17650         sjlj_output_call_site_table, output_function_exception_table,
17651         * except.h (note_current_region_may_contain_throw): Remove
17652         (get_exception_pointer, get_exception_filter): Do not take struct
17653         function argument.
17654         * Makefile.in (GTFILES): Put varargs before struct function.
17655
17656 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
17657
17658         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
17659         punt for STRING_CST.
17660         (get_constraint_for): Deal with STRING_CST here instead.
17661
17662 2008-04-15  Richard Guenther  <rguenther@suse.de>
17663
17664         * tree-ssa-propagate.c (substitute_and_fold): Substitute
17665         statements in a basic-block with a backward walk.  Do not
17666         substitute into dead statements but instead remove those.
17667
17668 2008-04-15  Richard Guenther  <rguenther@suse.de>
17669
17670         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
17671         to zero, thus disable creation of SFTs.
17672
17673 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
17674
17675         * tree-predcom.c (suitable_reference_p): Return false if the
17676         reference can throw.
17677
17678 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
17679
17680         PR c/35751
17681         * c-decl.c (finish_decl): If extern or static var has variable
17682         size, set TREE_TYPE (decl) to error_mark_node.
17683
17684 2008-04-15  Rafael Espíndola  <espindola@google.com>
17685
17686         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
17687         variable arg1.
17688
17689 2008-04-15  Richard Guenther  <rguenther@suse.de>
17690
17691         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
17692         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
17693         (visit_reference_op_load): Do walk vuse-vdef chains on
17694         vn_reference_lookup.
17695         (visit_reference_op_store): But do not here.
17696         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
17697         vn_reference_lookup.
17698         (vn_lookup_with_vuses): But do so here.
17699
17700 2008-04-14  Ian Lance Taylor  <iant@google.com>
17701
17702         * fold-const.c (fold_overflow_warning): Remove assertion.
17703
17704 2008-04-15  Ben Elliston  <bje@au.ibm.com>
17705
17706         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
17707         temp1 local variables.
17708
17709 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
17710
17711         PR target/35661
17712         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
17713         ".text.unlikely" section as executable.
17714
17715 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
17716
17717         * config/ia64/ia64.c (rtx_needs_barrier): Handle
17718         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
17719         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
17720         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
17721         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
17722         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
17723         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
17724
17725 2008-04-14  Ian Lance Taylor  <iant@google.com>
17726
17727         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
17728         * fold-const.c (fold_comparison): If appropriate, test
17729         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
17730         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
17731         reassociating a pointer type.
17732         * doc/invoke.texi (Optimize Options): Document that
17733         -fstrict-overflow applies to pointer wraparound.
17734
17735 2008-04-13  Jan Hubicka  <jh@suse.cz>
17736
17737         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
17738
17739 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
17740
17741         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
17742         we are going to "save the world".
17743
17744 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
17745
17746         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
17747         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
17748         operand 0 constraint, not "=".
17749
17750 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
17751
17752         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
17753
17754 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
17755
17756         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
17757         of size of positions_needed * CHAR_BIT.
17758
17759 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
17760
17761         PR middle-end/35897
17762         * dse.c (store_info): Change positions_needed to unsigned
17763         HOST_WIDE_INT.
17764         (lowpart_bitmask): New.
17765         (record_store): Cast to unsigned HOST_WIDE_INT for
17766         positions_needed.  Assert width <= size of positions_needed *
17767         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
17768         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
17769         lowpart_bitmask to set mask.
17770
17771 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
17772
17773         * config/bfin/constraints.md: New file.
17774         * config/bfin/bfin.md: Include it.
17775         (adddi3): Use satisfies_constraint functions instead of the old macros.
17776         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
17777         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
17778         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
17779         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
17780         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
17781         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
17782         EXTRA_CONSTRAINT): Delete.
17783         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
17784         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
17785         of the old macros.
17786         * config/bfin/bfin.c: Include "tm-constrs.h".
17787         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
17788         Use satisfies_constraint functions instead of the old macros.
17789         * doc/md.texi (Blackfin Constraints): Update file name reference.
17790
17791 2008-04-11  Richard Guenther  <rguenther@suse.de>
17792
17793         PR tree-optimization/35869
17794         * tree-vrp.c (execute_vrp): Move switch statement update after
17795         jump threading.  Schedule another cfg cleanup run.
17796
17797 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
17798
17799         PR c/35744
17800         * attribs.c (decl_attributes): Return early on errorneous node.
17801
17802 2008-04-10  Oleg Ryjkov  <olegr@google.com>
17803
17804         * tree.h (struct tree_base): Added a new flag default_def_flag.
17805         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
17806
17807 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
17808
17809         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
17810
17811 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17812
17813         PR target/35768
17814         * pa.md: Define mode iterator P.  Define mode attribute dwc.
17815         (dcacheflush): Update pattern to use iterator P and attribute dwc.
17816         (icacheflush): Likewise.
17817         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
17818         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
17819
17820 2008-04-11  Ben Elliston  <bje@au.ibm.com>
17821
17822         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
17823
17824 2008-04-10  Rafael Espíndola  <espindola@google.com>
17825
17826         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
17827         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
17828         (extract_range_from_expr): The same.
17829
17830 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
17831
17832         * config/mips/mips.md (GPR2): New mode iterator.
17833         (seq): Add comment.
17834         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
17835         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
17836         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
17837         Rewrite these to take two modes, the mode of comparison and the
17838         mode of the destination.
17839         * config/mips/mips.c (mips_expand_scc): Instead of having
17840         paradoxical subreg as destination, expand "narrowing" scc if mode
17841         of comparison is SI and target is requested in DI mode.
17842         (mips_emit_int_order_test): Update comment.  Make mode of
17843         comparison match CMP0 rather than TARGET.  When creating inverse
17844         target use mode of TARGET.
17845
17846 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
17847
17848         * gcov-dump.c (tag_summary): Only print summaries for the first
17849         GCOV_COUNTERS_SUMMABLE counters.
17850
17851 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
17852
17853         * config/i386/i386.md (absneg): New code iterator.
17854         (absnegprefix): New code attribute.
17855         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
17856         patterns using absneg code iterator.
17857         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
17858         using absneg code iterator.
17859         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
17860         *neg<mode>2 patterns using absneg code iterator.
17861         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
17862         *negextendsfdf2 patterns using absneg code iterator.
17863         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
17864         *negextendsfxf2 patterns using absneg code iterator.
17865         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
17866         *negextendsfdf2 patterns using absneg code iterator.
17867         * config/i386/sse.md (<code><mode>2): Macroize expander from
17868         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
17869
17870 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
17871
17872         * config/s390/s390.h: Remove the remains of the recent search
17873         & replace action of current_function_outgoing_args_size.
17874
17875 2008-04-10  Ira Rosen  <irar@il.ibm.com>
17876
17877         PR tree-optimization/35821
17878         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
17879         NEW_STMT_LIST is not NULL.
17880
17881 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
17882
17883         PR libstdc++/35597
17884         * toplev.c (process_options): Remove -ffunction-sections debugging
17885         warning.
17886
17887 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
17888
17889         PR middle-end/PR28690
17890         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
17891         than gen_rtx_fmt_ee to perform more canonicalizations.
17892
17893 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17894
17895         PR driver/35665
17896         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
17897
17898 2008-04-09  Richard Guenther  <rguenther@suse.de>
17899
17900         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
17901         (dump_function_to_file): Dump function arguments with types.
17902
17903 2008-04-08  Richard Guenther  <rguenther@suse.de>
17904
17905         * fold-const.c (fold_widened_comparison): Do not allow
17906         sign-changes that change the result.
17907
17908 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
17909
17910         PR target/35839
17911         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
17912         kinds of indirect references.
17913
17914 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
17915
17916         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
17917         GNU Fortran language string.
17918
17919 2008-04-08  Rafael Espíndola  <espindola@google.com>
17920
17921         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
17922         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
17923         * tree.h (tree_call_nonnegative_warnv_p): New.
17924
17925 2008-04-08  Jan Hubicka  <jh@suse.cz>
17926
17927         * function.c (free_after_compilation): Clear out regno_reg_rtx
17928         pointer.
17929
17930 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
17931
17932         Revert
17933         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
17934
17935         PR middle-end/PR28690
17936         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
17937         same precedence as REG_POINTER and MEM_POINTER operands.
17938
17939 2008-04-08  Richard Guenther  <rguenther@suse.de>
17940
17941         PR middle-end/35834
17942         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
17943         for adding index to base.
17944
17945 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
17946
17947         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
17948         (MINGW_ENABLE_EXECUTE_STACK): New.
17949         (IN_LIBGCC2): For libgcc include windows.h file for
17950         function declarations.
17951
17952 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
17953
17954         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
17955         and tem2 if tem1 is not a REG or MULT.
17956
17957 2008-04-08  Jan Hubicka  <jh@suse.cz>
17958
17959         * function.h (incomming_args): Break out of struct function.
17960         (function_subsections): Break out of struct function.
17961         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
17962         return_rtx and hard_reg_initial_vals from struct function.
17963         Kill inl_max_label_num.
17964         (current_function_pops_args, current_function_args_info,
17965         current_function_args_size, current_function_args_size,
17966         current_function_pretend_args_size,
17967         current_function_outgoing_args_size,
17968         current_function_internal_arg_pointer, current_function_return_rtx):
17969         Kill compatibility accestor macros.
17970         * builtins.c (expand_builtin_apply_args_1): Update.
17971         (expand_builtin_next_arg): Update.
17972         * df-scan.c (df_get_call_refs): Update.
17973         * dbxout.c (dbxout_function_end): Update.
17974         * dwarf2out.c (dwarf2out_switch_text_section): Update.
17975         (output_line_info): Update.
17976         (secname_for_decl): Update.
17977         (dwarf2out_var_location): Update.
17978         * function.c (free_after_compilation): Update.
17979         (assign_parm_find_stack_rtl): Update.
17980         (assign_parms): Update.
17981         (expand_dummy_function_end): Update.
17982         (expand_function_end): Update.
17983         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
17984         (expand_call): Update.
17985         (emit_library_call_value_1): Update.
17986         (store_one_arg): Update.
17987         * varasm.c (initialize_cold_section_name): Update.
17988         (unlikely_text_section): Update.
17989         (unlikely_text_section_p): Update.
17990         (assemble_start_function): Update.
17991         (assemble_end_function): Update.
17992         (default_section_type_flags): Update.
17993         (switch_to_section): Update.
17994         * integrate.c (set_decl_abstract_flags): Update.
17995         (get_hard_reg_initial_val): Update.
17996         (has_hard_reg_initial_val): Update.
17997         (allocate_initial_values): Update.
17998         * resource.c (init_resource_info): Update.
17999         * config/alpha/alpha.c (NUM_ARGS): Update.
18000         (direct_return): Update.
18001         (alpha_va_start): Update.
18002         (alpha_sa_size): Update.
18003         (alpha_initial_elimination_offset): Update.
18004         (alpha_expand_prologue): Update.
18005         (alpha_start_function): Update.
18006         (alpha_expand_epilogue): Update.
18007         (unicosmk_initial_elimination_offset):
18008         * config/alpha/alpha.md (call expander): Update.
18009         * config/s390/s390.c (s390_register_info): Update.
18010         (s390_register_info): Update.
18011         (s390_frame_info): Update.
18012         (s390_initial_elimination_offset): Update.
18013         (s390_build_builtin_va_list): Update.
18014         (s390_va_start): Update.
18015         * config/spu/spu.c (direct_return): Update.
18016         (spu_expand_prologue): Update.
18017         (spu_initial_elimination_offset): Update.
18018         (spu_build_builtin_va_list): Update.
18019         (spu_va_start): Update.
18020         * config/sparc/sparc.c (sparc_init_modes): Update.
18021         (sparc_compute_frame_size): Update.
18022         (function_value): Update.
18023         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
18024         * config/i386/i386.md (return expander): Update.
18025         * config/i386/i386.c (ix86_va_start): Update.
18026         (ix86_can_use_return_insn_p): Update.
18027         (ix86_compute_frame_layout): Update.
18028         (ix86_expand_epilogue): Update.
18029         * config/sh/sh.c (output_stack_adjust): Update.
18030         (calc_live_regs): Update.
18031         (sh_expand_prologue): Update.
18032         (sh_builtin_saveregs): Update.
18033         (sh_va_start): Update.
18034         (initial_elimination_offset): Update.
18035         (sh_allocate_initial_value): Update.
18036         (sh_function_ok_for_sibcall): Update.
18037         (sh_get_pr_initial_val): Update.
18038         * config/sh/sh.md (return expander): Update.
18039         * config/avr/avr.c (frame_pointer_required_p): UPdate.
18040         * config/crx/crx.c (crx_compute_frame): UPdate.
18041         (crx_initial_elimination_offset): UPdate.
18042         * config/xtensa/xtensa.c (compute_frame_size): Update
18043         (xtensa_builtin_saveregs): Update.
18044         (xtensa_va_start): Update.
18045         (order_regs_for_local_alloc): Update.
18046         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
18047         (xstormy16_expand_builtin_va_start): Update.
18048         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
18049         * config/m68hc11/m68hc11.md (return expanders): Update.
18050         * config/m68hc11/m68hc11.c (expand_prologue): Update.
18051         (expand_epilogue): Update.
18052         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
18053         (cris_simple_epilogue): Update.
18054         (cris_expand_prologue): Update.
18055         (cris_expand_epilogue): Update.
18056         * config/iq2000/iq2000.c (iq2000_va_start): Update.
18057         (compute_frame_size): Update.
18058         * config/mt/mt.c (mt_compute_frame_size): Update.
18059         * config/mn10300/mn10300.c (expand_prologue): Update.
18060         (expand_epilogue): Update.
18061         (initial_offset): Update.
18062         (mn10300_builtin_saveregs):
18063         * config/mn10300/mn10300.md (return expander): Update.
18064         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
18065         (ia64_initial_elimination_offset): Update.
18066         (ia64_initial_elimination_offset): Update.
18067         (ia64_expand_prologue): Update.
18068         * config/m68k/m68k.md (return expander): Update.
18069         * config/rs6000/rs6000.c (rs6000_va_start): Update.
18070         (rs6000_stack_info): Update.
18071         * config/mcore/mcore.c (layout_mcore_frame): Update.
18072         (mcore_expand_prolog): Update.
18073         * config/arc/arc.c (arc_compute_frame_size): Update.
18074         * config/score/score3.c (score3_compute_frame_size): Update.
18075         * config/score/score7.c (score7_compute_frame_size): Update.
18076         * config/arm/arm.c (use_return_insn): Update.
18077         (thumb_find_work_register): Update.
18078         (arm_compute_save_reg_mask): Update.
18079         (arm_output_function_prologue): Update.
18080         (arm_output_epilogue): Update.
18081         (arm_size_return_regs): Update.
18082         (arm_get_frame_offsets): Update.
18083         (arm_expand_prologue): Update.
18084         (thumb_exit): Update.
18085         (thumb_unexpanded_epilogue): Update.
18086         (thumb1_output_function_prologue): Update.
18087         * config/pa/pa.md (return expander): Update.
18088         * config/pa/pa.c (compute_frame_size): Update.
18089         (hppa_builtin_saveregs): Update.
18090         * config/mips/mips.c (mips_va_start): Update.
18091         (mips16_build_function_stub): Update.
18092         (mips_compute_frame_info): Update.
18093         (mips_restore_gp): Update.
18094         (mips_output_function_prologue): Update.
18095         (mips_expand_prologue): Update.
18096         * config/v850/v850.c (compute_frame_size): Update.
18097         (expand_prologue): * config/mmix/mmix.c (along): update.
18098         (mmix_initial_elimination_offset): update.
18099         (mmix_reorg): update.
18100         (mmix_use_simple_return): update.
18101         (mmix_expand_prologue): update.
18102         (mmix_expand_epilogue): Update.
18103         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
18104         (emit_link_insn): Update.
18105
18106 2008-04-08  Anatoly Sokolov <aesok@post.ru>
18107
18108         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
18109         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
18110         instructions.
18111         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
18112         atmega103 device.
18113
18114 2008-04-07  Jan Hubicka  <jh@suse.cz>
18115
18116         * function.h (rtl): Rename to x_rtl.
18117         (crtl): New define.
18118         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
18119         frame_offset, stack_check_probe_note, arg_pointer_save_area,
18120         used_temp_slots avail_temp_slots, temp_slot_level,
18121         nonlocal_goto_handler_labels): Update accesstors.
18122         (rtl): New global variable.
18123         (struct function): Move some fileds to rtl_data.
18124         (get_arg_pointer_save_area): Update prototype.
18125         * builtins.c (expand_builtin_setjmp_receiver): Update call of
18126         get_arg_pointer_save_area.
18127         * expr.c (init_expr): Update
18128         * function.c (get_frame_size): Update
18129         (assign_stack_local): Update
18130         (expand_function_end): Update.
18131         (get_art_pointer_save_area): Update
18132         * function.h
18133         * emit-rtl.c (rtl): Declare.
18134         (regno_reg_rtx): Declare.
18135         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
18136         Update.
18137         (gen_reg_rtx): Update.
18138         * varasm.c (n_deferred_constatns): Update accestor.
18139         (init_varasm_status): Do not allocate varasm_status.
18140         (force_const_mem, get_pool_size, output_constant_pool): Update.
18141         * stmt.c (force_label_rtx): Do not use x_ prefixes.
18142         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
18143         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
18144         * sparc/sparc.h (INIT_EXPANDERS): Update.
18145         * ia64/ia64.h (INIT_EXPANDERS): Update.
18146
18147 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
18148
18149         * reload.c (push_secondary_reload): Add missing break to for loop.
18150
18151 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
18152
18153         PR middle-end/PR28690
18154         * rtlanal.c: Update copyright years.
18155         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
18156         as REG_POINTER and MEM_POINTER operands.
18157         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
18158         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
18159         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
18160         * gcse.c: Update copyright years.
18161         (pre_delete): Call gen_reg_rtx_and_attrs.
18162         (hoist_code): Likewise.
18163         (build_store_vectors): Likewise.
18164         (delete_store): Likewise.
18165         * loop-invariant.c (move_invariant_reg): Likewise.
18166         Update copyright years.
18167
18168 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
18169
18170         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
18171         control string instead of quoted.
18172
18173 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
18174
18175         * doc/rtl.texi: Rewrite of subreg section.
18176
18177 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
18178
18179         PR/35842
18180         * config/i386/i386.c (legitimize_pic_address): Add treating
18181         of dllimport SYM_REF's.
18182         (legitimize_dllimport_symbol): Add prototype.
18183
18184 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
18185
18186         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
18187         reference in constructor with non self-referential type.
18188
18189 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
18190
18191         Removal of Return with Depressed Stack Pointer support
18192         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
18193         (ECF_SP_DEPRESSED): Likewise.
18194         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
18195         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
18196         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
18197         (expand_call): Do not test ECF_SP_DEPRESSED.
18198         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
18199         * function.c (keep_stack_depressed): Delete.
18200         (handle_epilogue_set): Likewise.
18201         (update_epilogue_consts): Likewise.
18202         (emit_equiv_load): Likewise.
18203         (thread_prologue_and_epilogue_insns): Remove support for Return with
18204         Depressed Stack Pointer.
18205         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
18206
18207 2008-04-06  Richard Guenther  <rguenther@suse.de>
18208
18209         PR tree-optimization/35400
18210         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
18211         information from SSA_NAMEs.
18212
18213 2008-04-06  Anatoly Sokolov <aesok@post.ru>
18214
18215         * config/avr/avr.h (avr_mega_p): Remove declaration.
18216         (AVR_MEGA): Remove macro.
18217         * config/avr/avr.c (avr_mega_p): Remove variable.
18218         (avr_override_options): Remove inicializion of avr_mega_p.
18219         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
18220         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
18221         (avr_jump_mode): (Ditto.).
18222         (avr_output_progmem_section_asm_op): (Ditto.).
18223         (avr_asm_init_sections): (Ditto.).
18224         (avr_asm_init_sections): (Ditto.).
18225         (avr_rtx_costs): (Ditto.).
18226         * config/avr/avr.md: (Ditto.).
18227         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
18228         '__AVR_MEGA__'.
18229
18230 2008-04-06  Richard Guenther  <rguenther@suse.de>
18231
18232         PR tree-optimization/35842
18233         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
18234         is_gimple_invariant_address.
18235
18236 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18237
18238         * gcc.c (default_compilers): Sync Fortran extensions list with
18239         that in fortran/lang-specs.h.
18240         * doc/invoke.texi: Likewise.
18241         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
18242         * dwarf2out.c (gen_compile_unit_die): Likewise.
18243
18244 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
18245
18246         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
18247
18248 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
18249
18250         PR target/12329
18251         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
18252         attribute is used for nested functions.
18253
18254 2008-04-05  Jan Hubicka  <jh@suse.cz>
18255
18256         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
18257
18258         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
18259         letter argument.
18260         (dump_files): Update.
18261         (enable_rtl_dump_file): Do not accept letter argument.
18262         * tree-pass.h (dump_file_info): Remove letter argument.
18263         * toplev.c (decode_d_option): Update -da handling.
18264         * toplev.h (enable_rtl_dump_file): Update prototype.
18265         * passes.c (register_one_dump_file): Do not accept IPA argument; work
18266         it out based on pass type.
18267         (register_dump_files_1): Likewise.
18268         (init_optimization_passes): Update register_one_dump_file calls.
18269         (execute_one_pass): Sanity check that IPA passes are called at IPA
18270         level and RTL passes at RTL level.
18271         (execute_pass_list): IPA pass can not be after or subpass of
18272         GIMPLE/RTL pass.
18273         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
18274         disallov RTL subpasses of IPA subpasses.
18275
18276 2008-04-05  Ben Elliston  <bje@au.ibm.com>
18277
18278         * tree-cfg.c (need_fake_edge_p): Return false for calls to
18279         builtins that return exactly once and do not throw. Cache call to
18280         call_expr_flags.
18281
18282 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
18283
18284         PR rtl-optimization/34916
18285         PR middle-end/35519
18286         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
18287         between instruction pairs.
18288
18289 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
18290
18291         * doc/invoke.texi: Document -mbitops for SH.
18292         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
18293         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
18294         * config/sh/sh.c (print_operand): Add %t operand code.
18295         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
18296         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
18297         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
18298         (extendqihi2): Likewise.
18299         (movqi_i): Likewise.
18300         (insv): Use bset, bclr and bst instructions for SH2A if possible.
18301         (extv): Use bld instruction for SH2A if possible.
18302         (extzv): Likewise.
18303         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
18304         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
18305         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
18306         (bset.b, bclr.b): Define peepholes.
18307         * config/sh/sh.opt (mbitops): New option.
18308
18309 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
18310
18311         PR target/35620
18312         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
18313         and view convert expression.
18314
18315 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
18316
18317         PR target/35364
18318         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
18319
18320 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
18321
18322         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
18323
18324         * config/i386/cpuid.h (bit_AES): New.
18325         (bit_PCLMUL): Likewise.
18326
18327         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
18328         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
18329         SSE2 if AES or PCLMUL is enabled.
18330         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
18331         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
18332         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
18333         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
18334         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
18335         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
18336         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
18337         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
18338         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
18339         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
18340         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
18341         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
18342         __builtin_ia32_aeskeygenassist128 and
18343         __builtin_ia32_pclmulqdq128.
18344         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
18345         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
18346         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
18347
18348         * config/i386/i386.h (TARGET_AES): New.
18349         (TARGET_PCLMUL): Likewise.
18350         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
18351
18352         * config/i386/i386.md (UNSPEC_AESENC): New.
18353         (UNSPEC_AESENCLAST): Likewise.
18354         (UNSPEC_AESDEC): Likewise.
18355         (UNSPEC_AESDECLAST): Likewise.
18356         (UNSPEC_AESIMC): Likewise.
18357         (UNSPEC_AESKEYGENASSIST): Likewise.
18358         (UNSPEC_PCLMUL): Likewise.
18359
18360         * config/i386/i386.opt (maes): New.
18361         (mpclmul): Likewise.
18362
18363         * config/i386/sse.md (aesenc): New pattern.
18364         (aesenclast): Likewise.
18365         (aesdec): Likewise.
18366         (aesdeclast): Likewise.
18367         (aesimc): Likewise.
18368         (aeskeygenassist): Likewise.
18369         (pclmulqdq): Likewise.
18370
18371         * config/i386/wmmintrin.h: New.
18372
18373         * doc/extend.texi: Document AES and PCLMUL built-in function.
18374
18375         * doc/invoke.texi: Document -maes and -mpclmul.
18376
18377 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
18378
18379         * function.c (free_after_parsing): Replace with
18380         cxx_push_function_context from C++ front-end.
18381         (allocate_struct_function): Don't call langhook.
18382         * langhooks.h (struct lang_hooks_for_functions): Delete.
18383         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
18384         member "function".
18385         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
18386         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
18387         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
18388         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
18389         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
18390         remove LANG_HOOKS_FUNCTION_INITIALIZER.
18391         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
18392
18393         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
18394         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
18395
18396 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
18397
18398         PR c/35440
18399         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
18400         for all types.
18401
18402 2008-04-04  Richard Guenther  <rguenther@suse.de>
18403
18404         PR middle-end/35823
18405         * fold-const.c (optimize_minmax_comparison): Use the correct
18406         type for the constant in the simplified comparison.
18407
18408 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
18409
18410         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
18411         Pass L2 size as "--param l2-cache-size" to the compiler.
18412         (decode_l2_cache): New function to decode L2 cache parameters using
18413         0x8000006 extended cpuid function.
18414         (detect_caches_amd): Determine parameters of L2 cache using
18415         decode_l2_caches function.
18416         (decode_caches_intel): Decode L2 cache parameters.
18417         (detect_caches_intel): Determine L2 cache parameters using
18418         decode_caches_intel and decode_l2_caches functions.
18419
18420 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
18421
18422         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
18423         secondary input reload for subword loads from the constant pool.
18424
18425 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
18426
18427         PR target/35713
18428         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
18429           constants of the appropriate size for runtime calculations.
18430
18431         PR c/35712
18432         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
18433           decimal-float literal constant zero.
18434
18435 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
18436
18437         PR c/35738
18438         * c-parser.c (c_parser_omp_atomic): Call
18439         default_function_array_conversion on the RHS.
18440
18441         PR middle-end/35818
18442         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
18443         call is_variable_sized if decl has incomplete type.
18444
18445 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
18446
18447         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
18448
18449 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
18450
18451         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
18452         iterators.
18453         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
18454         (sgt<u>): Merge sgt and sgtu into new expander.
18455         (sgt, sgtu): Remove expanders.
18456         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
18457         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
18458         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
18459         *sgtu_<mode>_mips16 into new pattern.
18460         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
18461         (sge<u>): Merge sge and sgeu into new expander.
18462         (sge, sgeu): Remove expanders.
18463         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
18464         new pattern.
18465         (*sge_<mode>, second *sge_<mode>): Remove patterns.
18466         (slt<u>): Merge slt and sltu into new expander.
18467         (slt, sltu): Remove expanders.
18468         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
18469         (*slt_<mode>, *sltu_<mode>): Remove patterns.
18470         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
18471         *sltu_<mode>_mips16 into new pattern.
18472         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
18473         (sle<u>): Merge sle and sleu into new expander.
18474         (sle, sleu): Remove expanders.
18475         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
18476         (*sle_<mode>, *sleu_<mode>): Remove patterns.
18477         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
18478         *sleu_<mode>_mips16 into new pattern.
18479         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
18480
18481 2008-04-03  Jan Hubicka  <jh@suse.cz>
18482
18483         PR tree-optimization/35795
18484         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
18485         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
18486         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
18487         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
18488         * score/score3.c (score3_output_mi_thunk): Likewise.
18489         * score/score7.c (score7_output_mi_thunk): Likewise.
18490         * mips/mips.c (mips_output_mi_thunk): Likewise.
18491
18492 2008-04-03  Richard Guenther  <rguenther@suse.de>
18493
18494         * tree-vrp.c (extract_range_from_unary_expr): Handle all
18495         conversions.  Simplify code.
18496
18497 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
18498
18499         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
18500
18501 2008-04-03  Tom Tromey  <tromey@redhat.com>
18502             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18503
18504         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
18505         * config/bfin/t-bfin-linux (generated_files): Add
18506         linux-sysroot-suffix.h.
18507         * doc/install.texi (Prerequisites): Require make 3.80.
18508         * doc/sourcebuild.texi (Front End Directory): Document new
18509         variable.
18510         * Makefile.in (generated_files): New variable.
18511         (ALL_HOST_OBJS): New variable.
18512         ($(ALL_HOST_OBJS)): New target.
18513
18514 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
18515
18516         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
18517         (remap_block): Call id->transform_lang_insert_block instead
18518         of langhook.
18519         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
18520         Set id.transform_lang_insert_block to NULL.
18521         (clone_body): Move to cp/optimize.c
18522         * tree-inline.h (struct copy_body_data): Change
18523         transform_lang_insert_block to function pointer.
18524         (copy_generic_body, copy_decl_no_change): Export.
18525         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
18526         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
18527         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
18528
18529         * c-tree.h (insert_block): Kill.
18530         * c-decl.c (insert_block): Kill.
18531
18532 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
18533
18534         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
18535         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
18536         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
18537         argument.
18538         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
18539         argument, call {push,pop}_function_context from here.
18540         * c-parser.c: Use c_{push,pop}_function_context.
18541
18542         * function.c (push_function_context_to): Move meat ...
18543         (push_function_context): ... here.  Simplify.
18544         * function.c (pop_function_context_from): Move meat ...
18545         (pop_function_context): ... here.  Simplify.
18546         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
18547         leave_nested).
18548         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
18549         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
18550         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
18551         * tree.h (push_function_context_to, pop_function_context_from): Remove.
18552
18553 2008-04-03  Ben Elliston  <bje@au.ibm.com>
18554
18555         * expmed.c (extract_force_align_mem_bit_field): Remove.
18556
18557 2008-04-03  Richard Guenther  <rguenther@suse.de>
18558
18559         PR middle-end/35800
18560         * expr.h (try_casesi): Adjust prototype.
18561         * expr.c (try_casesi): Take fallback label as extra parameter.
18562         Use that for gen_casesi if default_label is NULL.
18563         * stmt.c (expand_case): Pass fallback label to try_casesi,
18564         make sure to fill gaps with a fallback label if default_label
18565         is not present.
18566
18567 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
18568
18569         PR target/35801
18570         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
18571
18572 2008-04-03  Ben Elliston  <bje@au.ibm.com>
18573
18574         * expmed.c (extract_split_bit_field): Remove if (0) code.
18575         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
18576         (do_ds_constraint): Likewise.
18577
18578 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
18579
18580         * doc/cppopts.texi (-dU): Document.
18581         * c-common.h (flag_dump_macros): Update comment.
18582         * c-opts.c (handle_OPT_d): Handle -dU.
18583         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
18584         dump_queued_macros, cb_used_define, cb_used_undef): New.
18585         (init_pp_output): Handle -dU.
18586         (cb_line_change): Call dump_queued_macros.
18587         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
18588
18589 2008-04-02  Anatoly Sokolov <aesok@post.ru>
18590
18591         * config/avr/predicates.md (io_address_operand): New predicate.
18592         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
18593         * config/avr/avr.c (avr_io_address_p): Remove function.
18594         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
18595         'avr_io_address_p' function.
18596         (out_movhi_r_mr): (Ditto.).
18597         (out_movqi_mr_r): (Ditto.).
18598         (out_movhi_mr_r): (Ditto.).
18599         (avr_address_cost): (Ditto.).
18600
18601 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
18602
18603         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
18604         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
18605         in 32bit mode when XMM registers are available to avoid store
18606         forwarding stalls.
18607         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
18608         corresponding post-reload splitters.
18609
18610 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
18611
18612         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
18613         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
18614         __builtin_ia32_roundss.
18615         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
18616         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
18617         __builtin_ia32_roundss.
18618         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
18619         IX86_BUILTIN_SHUFPD here.
18620
18621 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
18622
18623         * config/i386/i386.md (plogic): New.
18624         (plogicprefix): Likewise.
18625
18626         * config/i386/mmx.md (mmx_<code><mode>3): New.
18627         (mmx_and<mode>3): Removed.
18628         (mmx_ior<mode>3): Likewise.
18629         (mmx_xor<mode>3): Likewise.
18630
18631         * config/i386/sse.md (<code><mode>3): New.
18632         (*<code><mode>3): Likewise.
18633         (*<code><mode>3): Likewise.
18634         (<code><mode>3): Likewise.
18635         (*sse_<code><mode>3): Likewise.
18636         (*sse2_<code><mode>3): Likewise.
18637         (<code>tf3): Likewise.
18638         (*<code>tf3): Likewise.
18639         (and<mode>3): Likewise.
18640         (*and<mode>3): Likewise.
18641         (ior<mode>3): Removed.
18642         (*ior<mode>3): Likewise.
18643         (xor<mode>3): Likewise.
18644         (*xor<mode>3): Likewise.
18645         (*and<mode>3): Likewise.
18646         (*ior<mode>3): Likewise.
18647         (*xor<mode>3): Likewise.
18648         (and<mode>3): Likewise.
18649         (*sse_and<mode>3): Likewise.
18650         (*sse2_and<mode>3): Likewise.
18651         (andtf3): Likewise.
18652         (*andtf3): Likewise.
18653         (ior<mode>3): Likewise.
18654         (*sse_ior<mode>3): Likewise.
18655         (*sse2_ior<mode>3): Likewise.
18656         (iortf3): Likewise.
18657         (*iortf3): Likewise.
18658         (xor<mode>3): Likewise.
18659         (*sse_xor<mode>3): Likewise.
18660         (*sse2_xor<mode>3): Likewise.
18661         (xortf3): Likewise.
18662         (*xortf3): Likewise.
18663
18664 2008-04-02  Richard Guenther  <rguenther@suse.de>
18665
18666         PR tree-optimization/14495
18667         PR tree-optimization/34793
18668         * tree-vrp.c (struct switch_update): New structure.
18669         (to_remove_edges, to_update_switch_stmts): New VECs.
18670         (simplify_switch_using_ranges): New function.  Remove not taken
18671         case labels and edges.
18672         (simplify_stmt_using_ranges): Call it.
18673         (identify_jump_threads): Mark edges we have queued for removal
18674         so we don't thread them.
18675         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
18676         case label vector.
18677         * tree-cfg.c (group_case_labels): Deal with missing default label.
18678         (tree_verify_flow_info): Allow missing default label.
18679         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
18680         (emit_case_nodes): Likewise.
18681         (expand_case): Do not rely on the default label to be present.
18682         * expr.c (try_casesi): Deal with NULL default_label.
18683         (do_tablejump): Likewise.
18684
18685 2008-04-02  Richard Guenther  <rguenther@suse.de>
18686
18687         PR tree-optimization/14495
18688         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
18689         SWITCH_EXPR here ...
18690         (vrp_visit_switch_stmt): ... but here (new function).
18691         (find_case_label_index): New helper function.
18692         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
18693
18694 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18695
18696         * fwprop.c: Fix ISO-C99ism.
18697
18698 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18699
18700         PR bootstrap/35752
18701         * Makefile.in (objdir): Set it here.
18702         * configure.ac: Not here.  Find dynamic linker characteristics.
18703         * exec-tool.in: Use them.
18704         * aclocal.m4: Regenerate.
18705         * configure: Regenerate.
18706
18707 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18708
18709         * expr.c (expand_var): Delete it.
18710         * expr.h (expand_var): Delete prototype.
18711         * function.c (expand_function_start): Use expand_decl instead.
18712         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
18713         langhook.
18714
18715 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
18716
18717         PR rtl-optimization/35542
18718         * fwprop.c (forward_propagate_and_simplify): Replace
18719         loc_reg_mentioned_in_p with reg_mentioned_p.
18720
18721 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
18722
18723         PR rtl-optimization/35281
18724         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
18725         (propagate_rtx_1): Handle PR_HANDLE_MEM.
18726         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
18727         (varying_mem_p): Move above propagate_rtx.
18728         (all_uses_available_at): Do not check MEMs.
18729
18730 2008-04-02  Rafael Espíndola  <espindola@google.com>
18731
18732         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
18733         (register_edge_assert_for_2): Split the cond argument.
18734         (register_edge_assert_for_1): Adjust for the change in
18735         register_edge_assert_for_2.
18736         (register_edge_assert_for): Split the cond argument.
18737         (find_switch_asserts): Adjust for the change in
18738         register_edge_assert_for.
18739
18740 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
18741
18742         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
18743         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
18744         offsets for 64-bit mingw.
18745         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
18746         abi for x86_64-pc-mingw.
18747
18748 2008-04-02  Richard Guenther  <rguenther@suse.de>
18749
18750         * tree-vrp.c (extract_range_from_assert): Make sure to not
18751         produce range min/max with TREE_OVERFOW set.
18752         If merging a anti-range and a range keep the anti-range if
18753         the range covers all values of the type.
18754         (register_edge_assert_for_2): Only allow sign-changing
18755         conversions in detecting canonical range checks.  Also
18756         register an assert for the unsigned name if useful.
18757
18758         PR tree-optimization/35787
18759         * tree-vrp.c (vrp_val_max): New function.
18760         (vrp_val_min): Likewise.
18761         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
18762         (vrp_val_is_min): Likewise.
18763         (supports_overflow_infinity): Use vrp_val_{min,max}.
18764         (negative_overflow_infinity): Likewise.
18765         (positive_overflow_infinity): Likewise.
18766         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
18767         (is_positive_overflow_infinity): Likewise.
18768         (is_overflow_infinity): Likewise.
18769         (avoid_overflow_infinity): Use vrp_val_{min,max} and
18770         vrp_val_is_{min,max}.
18771         (set_and_canonicalize_value_range): Canonicalize anti-ranges
18772         to ranges if possible.  Avoid empty ranges.
18773
18774 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18775
18776         PR middle-end/35705
18777         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
18778         the expression is a function address.
18779
18780 2008-04-01  George Helffrich  <george@gcc.gnu.org>
18781
18782         PR fortran/35154, fortran/23057
18783         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
18784         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
18785         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
18786         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
18787         in common.
18788         (dbxout_syms): Check for COMMON-based symbol and wrap in
18789         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
18790         in bracket for efficiency.
18791
18792         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
18793         using DW_TAG_common_block + member offset.
18794         (add_pubname_string): New function.
18795         (dw_expand_expr): New function to find block name and offset for
18796         COMMON var.
18797         (common_check): New function to check whether symbol in Fortran COMMON.
18798         (gen_variable_die): If COMMON, use DW_TAG_common_block.
18799
18800 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
18801
18802         PR c/35436
18803         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
18804
18805 2008-04-02  Ben Elliston  <bje@au.ibm.com>
18806
18807         * config/v850/v850.md (casesi): Remove if (0) code.
18808         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
18809         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
18810
18811 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
18812
18813         * config/i386/i386.md (rex64suffix): New mode attribute.
18814         (floathi<mode>2): Disable expander for SSE math.
18815         (*floathi<mode>2_1): New insn insn_and_split pattern.
18816         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
18817         corresponding post-reload splitters.
18818         (*floathi<mode>2_i387): New macroized insn pattern.
18819         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
18820         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
18821         insn_and_split pattern.
18822         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
18823         New macroized instruction patterns and corresponding post-reload
18824         splitters.
18825         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
18826         and corresponding post-reload splitters.
18827         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
18828         New macroized instruction patterns.
18829         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
18830         macroized instruction patterns and corresponding post-reload splitters.
18831         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
18832         corresponding post-reload splitters.
18833         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
18834         New macroized instruction patterns.
18835         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
18836         corresponding post-reload splitters.
18837         (*floatsi<mode>2_i387): New macroized instruction patterns.
18838
18839 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
18840
18841         * config/i386/i386.md (smaxmin): New.
18842         (umaxmin): Likewise.
18843         (maxminiprefix): Likewise.
18844         (maxminfprefix): Likewise.
18845         (<code><mode>3): Likewise.
18846         (smin<mode>3): Removed.
18847         (smax<mode>3): Likewise.
18848
18849         * config/i386/mmx.md (mmx_<code>v2sf3): New.
18850         (mmx_<code>v4hi3): Likewise.
18851         (mmx_<code>v8qi3): Likewise.
18852         (mmx_smaxv2sf3): Removed.
18853         (mmx_sminv2sf3): Likewise.
18854         (mmx_umaxv8qi3): Likewise.
18855         (mmx_smaxv4hi3): Likewise.
18856         (mmx_uminv8qi3): Likewise.
18857         (mmx_sminv4hi3): Likewise.
18858
18859         * config/i386/sse.md (<addsub><mode>3): New.
18860         (*<addsub><mode>3): Likewise.
18861         (<sse>_vm<addsub><mode>3): Likewise.
18862         (<maxmin><mode>3): Likewise.
18863         (*<maxmin><mode>3_finite): Likewise.
18864         (*<maxmin><mode>3): Likewise.
18865         (<sse>_vm<maxmin><mode>3): Likewise.
18866         (sse3_h<addsub>v4sf3): Likewise.
18867         (sse3_h<addsub>v2df3): Likewise.
18868         (<maxmin>v16qi3): Likewise.
18869         (*<maxmin>v16qi3): Likewise.
18870         (<maxmin>v8hi3): Likewise.
18871         (*<maxmin>v8hi3): Likewise.
18872         (*sse4_1_<maxmin><mode>3): Likewise.
18873         (*sse4_1_<maxmin><mode>3): Likewise.
18874         (add<mode>3): Removed.
18875         (*add<mode>3): Likewise.
18876         (<sse>_vmadd<mode>3): Likewise.
18877         (sub<mode>3): Likewise.
18878         (*sub<mode>3): Likewise.
18879         (<sse>_vmsub<mode>3): Likewise.
18880         (smin<mode>3): Likewise.
18881         (*smin<mode>3_finite): Likewise.
18882         (*smin<mode>3): Likewise.
18883         (<sse>_vmsmin<mode>3): Likewise.
18884         (smax<mode>3): Likewise.
18885         (*smax<mode>3_finite): Likewise.
18886         (*smax<mode>3): Likewise.
18887         (<sse>_vmsmax<mode>3): Likewise.
18888         (sse3_haddv4sf3): Likewise.
18889         (sse3_haddv2df3): Likewise.
18890         (sse3_hsubv4sf3): Likewise.
18891         (sse3_hsubv2df3): Likewise.
18892         (umaxv16qi3): Likewise.
18893         (*umaxv16qi3): Likewise.
18894         (smaxv8hi3): Likewise.
18895         (*smaxv8hi3): Likewise.
18896         (*sse4_1_smax<mode>3): Likewise.
18897         (*sse4_1_umax<mode>3): Likewise.
18898         (uminv16qi3): Likewise.
18899         (*uminv16qi3): Likewise.
18900         (sminv8hi3): Likewise.
18901         (*sminv8hi3): Likewise.
18902         (*sse4_1_smin<mode>3): Likewise.
18903         (*sse4_1_umin<mode>3): Likewise.
18904
18905 2008-04-01  Rafael Espíndola  <espindola@google.com>
18906
18907         * tree-cfg.c (verify_expr): remove in_phi.
18908         (verify_stmt): Don't call walk_tree with verify_expr. Use
18909         is_gimple_min_invariant instead of is_gimple_val.
18910
18911 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
18912
18913         * doc/include/gpl_v3.texi: Update for manpage generation.
18914         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
18915         gpl.texi.
18916         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
18917         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
18918         gpl_v3.texi instead of gpl.texi.
18919         (gpl.pod): New.
18920
18921 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
18922
18923         PR pch/13675
18924         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
18925
18926 2008-04-01  Rafael Espíndola  <espindola@google.com>
18927
18928         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
18929         (extract_code_and_val_from_cond): Use
18930         extract_code_and_val_from_cond_with_ops.
18931
18932 2008-04-01  Jan Hubicka  <jh@suse.cz>
18933
18934         * function.c (free_after_compilation): Free epilogue_delay_list.
18935         (prepare_function_start): Assert that previous compilation was freed.
18936
18937 2008-04-01  Jan Hubicka  <jh@suse.cz>
18938             Jim Wilson  <wilson@tuliptree.org>
18939             Andreas Tobler <andreast@gcc.gnu.org>
18940
18941         PR middle-end/35781
18942         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
18943         rtl.emit instead cfun->emit.
18944         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
18945         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
18946
18947 2008-04-01  Ben Elliston  <bje@au.ibm.com>
18948
18949         * doc/c-tree.texi (Function Basics): Fix grammatical error.
18950
18951 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
18952
18953         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
18954         New options
18955         (fprofile-use): Add var flag_profile_use
18956         * coverage.c (coverage_begin_output): Do not open a gcno file for
18957         output only if -ftest-coverage is set.
18958         Do not add getpwd() to gcda file path.
18959         (build_gcov_info): Check the new flag
18960         flag_profile_datafile_relative_path.
18961         (coverage_init): Use profile_data_prefix.
18962         Read profile counter only if flag_profile_use is set.
18963         * opts.c (common_handle_option): New option fprofile-use=,
18964         fprofile-dir=, fprofile-generate=.
18965         * toplev.c (profile_data_prefix): New variable definition.
18966         * toplev.h (profile_data_prefix): New declaration.
18967         * doc/invoke.tex (Option Summary, Optimization Options):
18968         Add new options.
18969
18970 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
18971
18972         * varasm.c (output_constant_pool_1): In LABEL_REF check,
18973         use tmp consistently.
18974
18975         PR target/35695
18976         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
18977         * config/ia64/ia64.c (rtx_needs_barrier): Handle
18978         UNSPEC_FR_RECIP_APPROX_RES.
18979         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
18980
18981 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
18982
18983         PR c/35750
18984         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
18985
18986 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18987
18988         PR middle-end/30186
18989         * fold-const.c (fold_indirect_ref_1): Support accessing non first
18990         element of the vector via a pointer.
18991
18992 2008-03-31  Ian Lance Taylor  <iant@google.com>
18993
18994         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
18995
18996 2008-03-31  Jan Hubicka  <jh@suse.cz>
18997
18998         * builtins.c (expand_builtin_setjmp_receiver): Update call of
18999         get_arg_pointer_save_area.
19000         * expr.c (init_expr): Just clear out rtl.expr.
19001         * function.c (free_after_compilation): Clear out whole RTL structure.
19002         (get_func_frame_size): Merge into ...
19003         (get_frame_size): ... this one.
19004         (assign_stack_local_1): Merge into ...
19005         (assign_stack_local): ... this one.
19006         (expand_function_end): Update call of get_arg_pointer_save_area.
19007         (get_art_pointer_save_area): Remove cfun argument.
19008         * function.h (emit_status): regno_pointer_align does not need length
19009         attribute. Move x_regno_reg_rtx to ...
19010         (regno_reg_rtx): ... new global array.
19011         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
19012         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
19013         apply_args_value, forced_labels, stack_pointer_delta):
19014         Update accestors.
19015         (struct varasm_status): Move here from varasm.c
19016         (struct rtl_data): New. Move here some fields from struct function.
19017         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
19018         frame_offset, stack_check_probe_note, arg_pointer_save_area,
19019         used_temp_slots avail_temp_slots, temp_slot_level,
19020         nonlocal_goto_handler_labels): Update accesstors.
19021         (rtl): New global variable.
19022         (struct function): Move some fileds to rtl_data.
19023         (get_arg_pointer_save_area): Update prototype.
19024         * emit-rtl.c (rtl): Declare.
19025         (regno_reg_rtx): Declare.
19026         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
19027         Update.
19028         (gen_reg_rtx): Update.
19029         (init_virtual_regs): Do not tate emit_status argument.
19030         (init_emit): Do not allocate emit.
19031         * varasm.c (varasm_statuc): Move to function.h.
19032         (n_deferred_constatns): Update accestor.
19033         (init_varasm_status): Do not allocate varasm_status.
19034         (force_const_mem, get_pool_size, output_constant_pool): Update.
19035         * stmt.c (force_label_rtx): Do not use x_ prefixes.
19036         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
19037
19038 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
19039
19040         PR rtl-optimization/35729
19041         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
19042         references.
19043
19044 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
19045
19046         PR target/32000
19047         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
19048         load/store if memory is unaligned.
19049         (*movti_rex64): Likewise.
19050
19051         * config/i386/predicates.md (misaligned_operand): New.
19052
19053 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
19054
19055         PR tree-opt/35431
19056         * tree-ssa-phiopt.c (conditional_replacement): Return early for
19057         complex types.
19058
19059 2008-03-31  Jan Beulich  <jbeulich@novell.com>
19060
19061         * config/ia64/constraints.md: Add 'j' constraint.
19062         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
19063         (movdi_internal): Likewise.
19064
19065 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
19066
19067         PR c/35748
19068         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
19069
19070 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
19071
19072         PR target/35757
19073         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
19074         proper error message for the third argument on blendpd and
19075         blendps.
19076
19077         * config/i386/sse.md (blendbits): New.
19078         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
19079
19080 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
19081
19082         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
19083
19084 2008-03-30  Richard Guenther  <rguenther@suse.de>
19085
19086         PR middle-end/31023
19087         * fold-const.c (fold_sign_changed_comparison): Do leave
19088         conversions to base-types alone.
19089
19090 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19091
19092         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
19093         the link register if one altivec register is be saved.
19094
19095 2008-03-30  Ben Elliston  <bje@au.ibm.com>
19096
19097         * final.c (final_scan_insn): Remove if (0) code.
19098
19099 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
19100
19101         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
19102
19103 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
19104
19105         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
19106         of V4SFmode to ix86_binary_operator_ok.
19107
19108 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
19109
19110         * config/i386/i386.c (override_options): Initialize
19111         ix86_veclib_handler to ix86_veclibabi_svml when
19112         -mveclibabi=svml is used.
19113         (ix86_veclibabi_svml): New function for SVML ABI style
19114         vectorization support.
19115         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
19116
19117 2008-03-28  Rafael Espíndola  <espindola@google.com>
19118
19119         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
19120         (tree_binary_nonnegative_warnv_p): Make it public.
19121         (tree_single_nonnegative_warnv_p): Make it public.
19122         (tree_invalid_nonnegative_warnv_p): Make it public.
19123         (tree_unary_nonzero_warnv_p): Make it public.
19124         (tree_binary_nonzero_warnv_p): Make it public
19125         (tree_single_nonzero_warnv_p): Make it public.
19126         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
19127         (extract_range_from_binary_expr): Split the expr argument.
19128         (extract_range_from_unary_expr): Split the expr argument.
19129         (extract_range_from_comparison): Split the expr argument.
19130         (extract_range_from_expr): Use the new aux functions.
19131         (vrp_evaluate_conditional_warnv): Use
19132         vrp_evaluate_conditional_warnv_with_ops.
19133         * tree.h (tree_unary_nonzero_warnv_p): Declare.
19134         (tree_binary_nonzero_warnv_p): Declare.
19135         (tree_single_nonzero_warnv_p): Declare.
19136         (tree_expr_nonzero_warnv_p): Declare.
19137         (tree_unary_nonnegative_warnv_p): Declare.
19138         (tree_binary_nonnegative_warnv_p): Declare.
19139         (tree_single_nonnegative_warnv_p): Declare.
19140         (tree_invalid_nonnegative_warnv_p): Declare.
19141
19142 2008-03-28  Richard Guenther  <rguenther@suse.de>
19143
19144         PR tree-optimization/30317
19145         PR tree-optimization/30911
19146         PR tree-optimization/34793
19147         * tree-vrp.c (set_and_canonicalize_value_range): New function.
19148         (struct assert_locus_d): New member EXPR.
19149         (register_new_assert_for): Add EXPR parameter to support
19150         ASSERT_EXPR <name, expr OP limit>.
19151         (register_edge_assert_for_1): Adjust callers.
19152         (find_assert_locations): Likewise.
19153         (process_assert_insertions_for): Build condition from expression.
19154         (extract_range_from_assert): Handle ASSERT_EXPRs
19155         of the form ASSERT_EXPR <name, expr OP limit>.
19156         (register_edge_assert_for_2): New helper registering
19157         asserts for comparisons.  Recognize range tests of the form
19158         (unsigned)i - CST1 OP CST2.
19159         (register_edge_assert_for_1): Use it.
19160         (register_edge_assert_for): Likewise.
19161         (needs_overflow_infinity): Integer sub-types
19162         do not need overflow infinities.
19163         (vrp_val_is_max): The extreme values of integer sub-types
19164         are those of the base type.
19165         (vrp_val_is_min): Likewise.
19166         * tree.def (ASSERT_EXPR): Document extra allowed conditional
19167         expressions.
19168
19169 2008-03-28  Nick Clifton  <nickc@redhat.com>
19170
19171         PR target/31110
19172         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
19173         Return GENERAL_REGS for stack adjustment reloads.
19174
19175 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19176
19177         PR target/31334
19178         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
19179         const_vector when all the vectors are constant.
19180
19181 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
19182
19183         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
19184         comparisons.
19185         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
19186         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
19187         (scc_sf): New.
19188         (s<code>_sf): Use new scc_sf attribute for opcode names.
19189
19190 2008-03-27  Tom Tromey  <tromey@redhat.com>
19191
19192         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
19193         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
19194         config/spu/t-spu-elf, config/i386/t-interix,
19195         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
19196         config/i386/x-darwin, config/i386/x-mingw32,
19197         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
19198         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
19199         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
19200         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
19201         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
19202         config/rs6000/x-darwin, config/rs6000/t-rs6000,
19203         config/score/t-score-elf, config/arm/t-strongarm-pe,
19204         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
19205         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
19206         Revert automatic dependency patch.
19207
19208 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
19209
19210         PR target/35657
19211         * config/i386/i386.c (ix86_function_arg_boundary): Align
19212         decimal floating point to its natural boundary.
19213
19214 2008-03-27  Richard Guenther  <rguenther@suse.de>
19215
19216         PR middle-end/35716
19217         * fold-const.c (fold_comparison): Restrict distinct decl
19218         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
19219         solely rely on operand_equal_p.
19220
19221 2008-03-27  Richard Guenther  <rguenther@suse.de>
19222
19223         PR c/32511
19224         * c-common.c (handle_weak_attribute): Reject combination of
19225         weak and inline.
19226
19227 2008-03-27  Richard Guenther  <rguenther@suse.de>
19228
19229         PR tree-optimization/32810
19230         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
19231         conversions from DECL_INITIAL.
19232         (fold_const_aggregate_ref): Likewise from constructor elements.
19233
19234 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
19235
19236         * tree-affine.h (aff_combination_expand): Declare.
19237         (get_inner_reference_aff): Likewise.
19238         * tree-affine.c (aff_combination_expand): Split out from
19239         tree_to_aff_combination_expand.
19240         (get_inner_reference_aff): New function.
19241         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
19242         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
19243         (struct lim_aux_data): sm_done field removed.
19244         (mem_ref_loc_p, mem_ref_locs_p): New types.
19245         (struct mem_ref): Added id, stored, accesses_in_loop,
19246         indep_loop, dep_loop, indep_ref, dep_ref fields.
19247         Removed is_stored, locs and next fields.
19248         (memory_accesses): New variable.
19249         (movement_possibility): Do not allow moving statements
19250         that store to memory.
19251         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
19252         New functions.
19253         (determine_max_movement): For statements with memory references,
19254         find the outermost loop in that the reference is independent.
19255         (move_computations_stmt): Mark the virtual operands for renaming.
19256         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
19257         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
19258         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
19259         add_vop_ref_mapping, create_vop_ref_mapping_loop,
19260         create_vop_ref_mapping, analyze_memory_references,
19261         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
19262         get_all_locs_in_loop, ref_always_accessed_p,
19263         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
19264         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
19265         store_motion_loop, store_motion): New functions.
19266         (struct vop_to_refs_elt): New type.
19267         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
19268         memref_hash, memref_eq, hoist_memory_references): Rewritten.
19269         (schedule_sm): Replaced by...
19270         (execute_sm): ... this.
19271         (determine_lsm_ref, hoist_memory_references,
19272         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
19273         find_more_ref_vops, free_mem_ref, free_mem_refs,
19274         determine_lsm_loop, determine_lsm): Removed.
19275         (tree_ssa_lim_finalize): Free data structures used by store motion.
19276         (tree_ssa_lim): Call analyze_memory_references.  Use
19277         store_motion instead of determine_lsm.
19278
19279 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
19280
19281         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
19282         rename tmake_file to m68hc11/t-m68hc11.
19283         (mcore): Set inhibit_libc to true.
19284         * config.host (alpha*-dec-*vms*): Set extra_programs.
19285         (interix3*): Don't use host_xmake_file.
19286         * configure.ac: Let config.gcc override inhibit_libc.
19287         * configure: Regenerate.
19288
19289         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
19290         * config/t-openbsd-thread: Remove commented out lines.
19291
19292         * config/x-interix: Remove.
19293
19294         * config/m68hc11/t-m68hc11-gas: Rename to...
19295         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
19296
19297         * config/mcore/t-mcore: Remove T_CFLAGS.
19298         * config/mcore/t-mcore-pe: Likewise.
19299
19300 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
19301
19302         * configure.ac: Replace custom __GNU_SOURCE test with
19303         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
19304         * aclocal.m4: Regenerate.
19305         * configure: Regenerate.
19306         * config.in: Regenerate.
19307
19308 2008-03-27  Richard Guenther  <rguenther@suse.de>
19309
19310         * fold-const.c (target.h): Include.
19311         (fold_comparison): Fold comparison of addresses of decls
19312         that bind locally or of constants.  Consolidate address folding code.
19313         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
19314         results from fold_binary_to_constant.
19315         (compare_values_warnv): Likewise.
19316
19317 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
19318
19319         PR middle-end/35429
19320         * fold-const.c (fold_truthop): Check for integeral types when folding
19321         a == 0 && b == 0 and a != 0 || b != 0 .
19322
19323 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
19324
19325         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
19326
19327 2008-03-26  Andreas Schwab  <schwab@suse.de>
19328
19329         * doc/invoke.texi: Fix use of @item vs. @itemx.
19330
19331 2008-03-26  Tom Tromey  <tromey@redhat.com>
19332
19333         * Makefile.in (build/gensupport.o, build/print-rtl.o,
19334         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
19335         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
19336         build/gencodes.o, build/genconditions.o, build/genconfig.o,
19337         build/genconstants.o, build/genemit.o, build/genextract.o,
19338         build/genflags.o, build/genmddeps.o, build/genopinit.o,
19339         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
19340         options.h.
19341
19342 2008-03-26  Richard Guenther  <rguenther@suse.de>
19343
19344         Revert
19345         2008-03-26  Richard Guenther  <rguenther@suse.de>
19346
19347         * fold-const.c (target.h): Include.
19348         (fold_comparison): Fold comparison of addresses of two decls
19349         that bind locally.  Consolidate address folding code.
19350
19351 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19352
19353         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
19354         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
19355         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
19356         dconstsqrt2, dconstthird, dconste and/or dconst10.
19357         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
19358         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
19359         dconstsqrt2, dconste): Delete.
19360         (init_emit_once): Likewise.  Simplify initializing dconstm1.
19361         Constify variable.
19362         * real.c (get_real_const): New.
19363         * real.h (dconst3, dconst10, dconstm2, dconstthird,
19364         dconstsqrt2, dconste): Delete.
19365         (real_value_const, get_real_const): New.
19366
19367 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
19368
19369         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
19370
19371         * config/i386/i386.c (ix86_function_arg_boundary): Check
19372         BIGGEST_ALIGNMENT instead of 128.
19373         (setup_incoming_varargs_64): Likewise.
19374
19375 2008-03-26  Tom Tromey  <tromey@redhat.com>
19376
19377         * Makefile.in (DEPFILES): Add missing '/'.
19378
19379 2008-03-26  Richard Guenther  <rguenther@suse.de>
19380
19381         * fold-const.c (target.h): Include.
19382         (fold_comparison): Fold comparison of addresses of two decls
19383         that bind locally.  Consolidate address folding code.
19384
19385 2008-03-26  Nick Clifton  <nickc@redhat.com>
19386
19387         PR target/31232
19388         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
19389         not allow INT+INT as a legitimate addressing mode.
19390
19391 2008-03-26  Richard Guenther  <rguenther@suse.de>
19392
19393         * tree-flow.h (widen_bitfield): Remove declaration.
19394         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
19395         (widen_bitfield): Remove function.
19396         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
19397         code.
19398
19399 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19400
19401         PR target/31558
19402         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
19403         error_mark_node's.
19404
19405 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
19406
19407         PR rtl-optimization/35232
19408         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
19409         (forget_old_reloads_1, forget_marked_reloads): Don't clear
19410         reg_reloaded_call_part_clobbered here.
19411         (reload_regs_reach_end_p): New function.
19412         (reload_reg_rtx_for_input): New variable.
19413         (reload_reg_rtx_for_output): Likewise.
19414         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
19415         when reassigning a pseudo register.  Load reloadreg from
19416         reload_reg_rtx_for_input, moving the mode and register
19417         calculation to...
19418         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
19419         instead of the original when deciding whether an input reload
19420         would be a no-op or whether an output reload can be deleted.
19421         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
19422         when setting up new_spill_reg_store.  Load it from
19423         reload_reg_rtx_for_output, moving the mode and register
19424         calculation to...
19425         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
19426         instead of the original when deciding whether an output reload
19427         would be a no-op.  Do the same when modifying insn notes.
19428         Use rtx_equal_p instead of == to compare the registers.
19429         (inherit_piecemeal_p): Take a mode and two register numbers
19430         as argument.
19431         (emit_reload_insns): Clear new_spill_reg_store for every hard
19432         register in the reload register.  Remove spill registers
19433         from reg_reloaded_valid before considering whether to record
19434         inheritance information for them.  Use reload_reg_rtx_for_output
19435         instead of reg_rtx when recording output reloads.  Use
19436         reload_reg_rtx_for_input instead of reg_rtx when recording
19437         input reloads.  Set or clear reg_reloaded_call_part_clobbered
19438         at the same time as setting reg_reloaded_valid.
19439         (delete_output_reload): Add a new_reload_reg parameter and use it
19440         instead of rld[j].reg_rtx.
19441         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
19442         calls accordingly.
19443
19444 2008-03-25  Tom Tromey  <tromey@redhat.com>
19445
19446         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
19447         (build/genattr.o): Likewise.
19448         (build/genattrtab.o): Likewise.
19449         (build/gencodes.o): Likewise.
19450         (build/genconfig.o): Likewise.
19451         (build/genconstants.o): Likewise.
19452         (build/genemit.o): Likewise.
19453         (build/genextract.o): Likewise.
19454         (build/genflags.o): Likewise.
19455
19456 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
19457
19458         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
19459         instead of size_int for integer types.
19460         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
19461         to match type of MINUS_EXPR.
19462
19463 2008-03-25  Tom Tromey  <tromey@redhat.com>
19464
19465         * configure: Rebuilt.
19466         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
19467         Makefile.
19468
19469 2008-03-25  Tom Tromey  <tromey@redhat.com>
19470
19471         * config/x-solaris (host-solaris.o): Update.
19472         * config/x-linux (host-linux.o): Update.
19473         * config/x-hpux (host-hpux.o): Update.
19474         * config/x-darwin (host-darwin.o): Update.
19475         * config/v850/t-v850e (v850-c.o): Update.
19476         * config/v850/t-v850 (v850-c.o): Update.
19477         * config/t-vxworks (vxworks.o): Update.
19478         * config/t-sol2 (sol2-c.o, sol2.o): Update.
19479         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
19480         * config/spu/t-spu-elf (spu-c.o): Update.
19481         (spu.o): Remove.
19482         * config/sh/t-symbian (sh-c.o): Update.
19483         (symbian.o): Update.
19484         * config/sh/t-sh (sh-c.o): Update.
19485         * config/score/t-score-elf (score7.o, score3.o): Update.
19486         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
19487         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
19488         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
19489         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
19490         (rs6000.o): Remove.
19491         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
19492         * config/m32c/t-m32c (m32c-pragma.o): Update.
19493         * config/ia64/t-ia64 (ia64-c.o): Update.
19494         * config/i386/x-mingw32 (host-mingw32.o): Update.
19495         * config/i386/x-i386 (driver-i386.o): Update.
19496         * config/i386/x-darwin (host-i386-darwin.o): Update.
19497         * config/i386/x-cygwin (host-cygwin.o): Update.
19498         * config/i386/t-nwld (nwld.o): Update.
19499         * config/i386/t-netware (netware.o): Update.
19500         * config/i386/t-interix (winnt.o): Update.
19501         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
19502         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
19503         msformat-c.o): Update.
19504         * config/bfin/t-bfin-linux (generated_files): Add
19505         linux-sysroot-suffix.h.
19506         * config/arm/t-wince-pe (pe.o): Update.
19507         * config/arm/t-strongarm-pe (pe.o): Update.
19508         * config/arm/t-pe (pe.o): Update.
19509         * config/arm/t-arm (arm-c.o): Update.
19510         * doc/install.texi (Prerequisites): Require make 3.80.
19511         * Makefile.in: Remove .o targets.
19512         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
19513         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
19514         (simple_generated_h, simple_generated_c): Move earlier.
19515         (generated_files): New variable.
19516         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
19517         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
19518         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
19519         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
19520         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
19521         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
19522         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
19523         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
19524         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
19525         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
19526         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
19527         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
19528         (.c.o): Remove.
19529         (COMPILE.base, COMPILE): New variables.
19530         (%.o): New pattern rule.
19531         (ALL_HOST_OBJS): New variable.
19532         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
19533         (dummy-checksum.o, cc1-checksum.o): Remove.
19534         (DRIVER_SHLIB): New variable.
19535         (DRIVER_DEFINES): Use it.
19536         (gencondmd.c): Move out of build/.
19537         (s-conditions): Update.
19538         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
19539         (ALL_BUILD_OBJS): Likewise.
19540         (build/%.o): Use BUILDCOMPILE.
19541         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
19542         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
19543         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
19544         build/gencheck.o, build/gencodes.o, build/genconditions.o,
19545         build/genconfig.o, build/genconstants.o, build/genemit.o,
19546         build/genextract.o, build/genflags.o, build/genmddeps.o,
19547         build/genopinit.o, build/genoutput.o, build/genpeep.o,
19548         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
19549         build/gen-protos.o, build/scan.o, build/fix-header.o,
19550         build/scan-decls.o): Simplify.
19551         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
19552         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
19553         prefix.o, toplev.o): Reduce to variable setting.
19554         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
19555         ($(out_object_file), gcc-options.o): New targets.
19556         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
19557         * configure: Rebuilt.
19558         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
19559         * doc/sourcebuild.texi (Front End Directory): Document new variable.
19560
19561 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
19562
19563         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
19564         complain when we hit an error, return ERROR_MARK_NODE.
19565
19566 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19567
19568         * config/sh/constraints.md (Pso, Psz): New constraints.
19569         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
19570         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
19571
19572 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19573
19574         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
19575         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
19576
19577 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
19578
19579         * config/sh/sh.md (prefetch): Add condition for SH2A target.
19580         (prefetch_sh2a): New.
19581
19582 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
19583             Naveen.H.S  <naveen.hs@kpitcummins.com>
19584
19585         * config/sh/constraints.md (I28): New constraint.
19586         * config/sh/sh.c (broken_move): Add support for movi20s.
19587         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
19588
19589 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
19590             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
19591             Naveen.H.S  <naveen.hs@kpitcummins.com>
19592
19593         * config/sh/sh.c (SH_ATTRIBUTES): Define.
19594         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
19595         (print_operand): Handle resbank in %@ operand code.
19596         (sh_encode_section_info): New.
19597         (push_regs): Add conditions for resbank.
19598         (sh_expand_epilogue): Likewise.
19599         (sh_insert_attributes): Likewise.
19600         (sh_attribute_table): Likewise.
19601         (sh_handle_resbank_handler_attribute): New.
19602         (sh2a_handle_function_vector_handler_attribute): New.
19603         (sh2a_is_function_vector_call): New.
19604         (sh2a_get_function_vector_number): New.
19605         (sh2a_function_vector_p): New.
19606         (sh_cfun_resbank_handler_p): New.
19607         * config/sh/sh.md (calli): Emit jsr/n if possible.
19608         (calli_tbr_rel): New.
19609         (calli_pcrel): Emit jsr/n if possible.
19610         (return_i): Emit rts/n if possible.
19611         (call_valuei_tbr_rel): New.
19612         (call_valuei_pcrel): Add condition for SH2A target.
19613         (call_value): Likewise.
19614         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
19615         (sh2a_get_function_vector_number): Likewise.
19616         (sh2a_is_function_vector_call): Likewise.
19617         * doc/extend.texi: Document TBR relative addressing of SH2A.
19618         (resbank): Add description for SH2A.
19619
19620 2008-03-24  Richard Guenther  <rguenther@suse.de>
19621
19622         PR c/22371
19623         * gimplify.c (gimplify_modify_expr): For frontend type-correct
19624         pointer assignments change conversions according to middle-end rules.
19625         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
19626         * configure.ac: Include type checking in yes.
19627         * configure: Regenerate.
19628
19629 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19630
19631         * diagnostic.c (diagnostic_count_diagnostic): Delete.
19632         (diagnostic_report_diagnostic): Update. Handle ICEs here.
19633
19634 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
19635
19636         * gthr-vxworks.h (UNUSED): Define.
19637
19638 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
19639
19640         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
19641
19642 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
19643
19644         * doc/extend.texi (Function Attributes): Add missing comma in the
19645         example of the "alloc_size" attribute.
19646
19647 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
19648
19649         Revert:
19650         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
19651
19652         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
19653         32bit host.
19654
19655         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
19656
19657         PR target/35496
19658         * stor-layout.c (update_alignment_for_field): Set minimum alignment
19659         of the underlying type of a MS bitfield layout to the natural
19660         alignment of the type.
19661
19662         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
19663
19664         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
19665         to their natural alignment to avoid store forwarding stalls.
19666
19667 2008-03-22  Richard Guenther  <rguenther@suse.de>
19668
19669         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
19670         For PHI nodes verify the address is invariant.
19671         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
19672         (get_symbol_constant_value): Use is_gimple_min_invariant.
19673         (maybe_fold_stmt_indirect): Likewise.
19674
19675 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
19676
19677         PR rtl-optimization/33927
19678         * Makefile.in (dse.o): Depend on $(TM_P_H).
19679         * expr.h (extract_low_bits): Declare.
19680         * expmed.c (extract_low_bits): New function.
19681         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
19682         * dse.c: Include tm_p.h.
19683         (find_shift_sequence): Remove the read_reg argument and return the
19684         read value.  Emit the instructions instead of returning them.
19685         Iterate on new_mode rather than calculating it each time.
19686         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
19687         source to NEW_MODE and extract_low_bits to convert the shifted
19688         value to READ_MODE.
19689         (replace_read): Allow the load and store to have different mode
19690         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
19691         or extraction instructions before trying the replacement.  Update
19692         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
19693
19694 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
19695
19696         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
19697         to their natural alignment to avoid store forwarding stalls.
19698
19699 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19700
19701         PR target/27946
19702         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
19703         encouraging but not allowing gprs for input;
19704         change the input constraint to !f#r.
19705         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
19706         gprs for output;
19707         change the output constraint to !f#r.
19708
19709 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
19710
19711         PR target/13958
19712         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
19713         corresponding post-reload splitters.
19714         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
19715         when x87 FP math is selected.
19716         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
19717         New function prototype.
19718         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
19719         unreachable function to ease macroization of insn patterns.
19720
19721 2008-03-21  Martin Jambor  <mjambor@suse.cz>
19722
19723         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
19724         reference dumps if ddr is NULL or dependence is unknown.
19725
19726 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19727
19728         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
19729         unsigned extension into account.
19730         (ATOMIC_COMPARE_AND_SWAP): Likewise.
19731         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
19732         Do computations on a scratch register.
19733
19734 2008-03-21  Richard Guenther  <rguenther@suse.de>
19735
19736         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
19737         Use is_gimple_min_invariant instead of TREE_INVARIANT.
19738         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
19739         * tree-ssa-dom.c (record_equality): Likewise.
19740         * tree-inline.c (copy_body_r): Likewise.
19741         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
19742         TREE_INVARIANT.
19743
19744 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
19745
19746         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
19747         as 'delete_unused' argument.
19748
19749 2008-03-20  Richard Guenther  <rguenther@suse.de>
19750
19751         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
19752         special casing of constant qualifiers.
19753         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
19754         care about them in general.
19755         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
19756         regardless of their type.
19757         (fold_stmt_r): Forcefully fold *& if we end up with that.
19758
19759 2008-03-20  Paul Brook  <paul@codesourcery.com>
19760
19761         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
19762         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
19763         linker flags.
19764         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
19765         definition.
19766         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
19767         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
19768
19769 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
19770
19771         * common.opt (Wmudflap): New option.
19772         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
19773         (mx_register_decls): Likewise.
19774         (mudflap_finish_file): Likewise.
19775         * doc/invoke.texi: Document -Wno-mudflap.
19776
19777 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
19778
19779         * c-format.c (replace_format_name_to_system_name): New.
19780         (cmp_attribs): New.
19781         (convert_format_name_to_system_name): New.
19782         (decode_format_attr): Add use of convert_format_name_to_system_name.
19783         (format_types_orig): Add gnu_ prefix to names.
19784         (check_format_info_main): Special treating of \0 escaped names for
19785         supporting multi-character format specifiers as I32, I64.
19786         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
19787         (gnu_target_overrides_format_attributes): New.
19788         * c-format.h: Add structure target_ovr_attr to hold
19789         system specific formatter names.
19790         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
19791         msformat-c.o file to c_target_objs and cxx_target_objs.
19792         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
19793         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
19794         (TARGET_N_FORMAT_TYPES): New.
19795         * config/i386/msformat-c.c: New.
19796         * config/i386/t-cygming: Add build rule for msformat-c.o.
19797         * doc/extend.texi: Add new format names gnu_* and ms_* and
19798         further details.
19799         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
19800
19801 2008-03-20  Ira Rosen  <irar@il.ibm.com>
19802
19803         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
19804         optimizations turned on under -O3.
19805         (ftree-vectorize): Add that the flag is turned on with -O3.
19806
19807 2008-03-20  Ben Elliston  <bje@au.ibm.com>
19808
19809         * regmove.c (try_auto_increment): Fix spelling error in comment.
19810         * final.c (final_scan_insn): Likewise.
19811
19812 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
19813
19814         PR target/14552
19815         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
19816         allocator preferences for "y" and "r" class registers.
19817         ("*mov<mode>_internal"): Ditto.
19818         ("*movv2sf_internal_rex64"): Ditto.
19819         ("*movv2sf_internal"): Ditto.
19820
19821 2008-03-19  Michael Matz  <matz@suse.de>
19822
19823         PR middle-end/35616
19824         * calls.c (expand_call): Check overlap of arguments with call
19825         address for sibcalls.
19826
19827 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
19828
19829         PR target/35496
19830         * stor-layout.c (update_alignment_for_field): Set minimum alignment
19831         of the underlying type of a MS bitfield layout to the natural
19832         alignment of the type.
19833
19834 2008-03-19  Jan Hubicka  <jh@suse.cz>
19835
19836         PR other/35094
19837         * toplev.c (decode_d_option): Handle all CPP flags.
19838         * tree-vrp.c: Update tree_pass descriptors.
19839         * regrename.c: Update tree_pass descriptors.
19840         * fwprop.c: Update tree_pass descriptors.
19841         * doc/invoke.texi: Remove documentation of dropped -d? flags.
19842         * tree-into-ssa.c: Update tree_pass descriptors.
19843         * tree-dump.c: Update tree_pass descriptors.
19844         * tree-complex.c: Update tree_pass descriptors.
19845         * tree-dump.h: Update tree_pass descriptors.
19846         * see.c: Update tree_pass descriptors.
19847         * cgraphbuild.c: Update tree_pass descriptors.
19848         * tracer.c: Update tree_pass descriptors.
19849         * tree-loop-distribution.c: Update tree_pass descriptors.
19850         * cgraph.c: Update tree_pass descriptors.
19851         * postreload-gcse.c: Update tree_pass descriptors.
19852         * postreload.c: Update tree_pass descriptors.
19853         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
19854         * tree-tailcall.c: Update tree_pass descriptors.
19855         * tree-pass.h (tree_opt_pass): Rename to ...
19856         (opt_pass) ... this one; add "type" field and remove letter field.
19857         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
19858         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
19859         all_lowering_passes): Update declaration.
19860         * ipa-cp.c: Update tree_pass descriptors.
19861         * final.c: Update tree_pass descriptors.
19862         * omp-low.c: Update tree_pass descriptors.
19863         * tree-ssa-dse.c: Update tree_pass descriptors.
19864         * ipa-reference.c: Update tree_pass descriptors.
19865         * tree-ssa-uncprop.c: Update tree_pass descriptors.
19866         * auto-inc-dec.c: Update tree_pass descriptors.
19867         * reorg.c: Update tree_pass descriptors.
19868         * cgraphunit.c: Update tree_pass descriptors.
19869         * tree-ssa-copyrename.c: Update tree_pass descriptors.
19870         * tree-ssa-ccp.c: Update tree_pass descriptors.
19871         * df-core.c: Update tree_pass descriptors.
19872         * mode-switching.c: Update tree_pass descriptors.
19873         * tree-nomudflap.c: Update tree_pass descriptors.
19874         * modulo-sched.c: Update tree_pass descriptors.
19875         * ipa-pure-const.c: Update tree_pass descriptors.
19876         * cse.c: Update tree_pass descriptors.
19877         * web.c: Update tree_pass descriptors.
19878         * tree-stdarg.c: Update tree_pass descriptors.
19879         * tree-ssa-math-opts.c: Update tree_pass descriptors.
19880         * tree-ssa-dom.c: Update tree_pass descriptors.
19881         * tree-nrv.c: Update tree_pass descriptors.
19882         * tree-ssa-alias.c: Update tree_pass descriptors.
19883         * loop-init.c: Update tree_pass descriptors.
19884         * gimple-low.c: Update tree_pass descriptors.
19885         * ipa-inline.c: Update tree_pass descriptors.
19886         * tree-ssa-sink.c: Update tree_pass descriptors.
19887         * global.c: Update tree_pass descriptors.
19888         * ifcvt.c: Update tree_pass descriptors.
19889         * jump.c: Update tree_pass descriptors.
19890         * predict.c: Update tree_pass descriptors.
19891         * tree-ssa-loop.c: Update tree_pass descriptors.
19892         * recog.c: Update tree_pass descriptors.
19893         * dse.c: Update tree_pass descriptors.
19894         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
19895         * tree-eh.c: Update tree_pass descriptors.
19896         * regmove.c: Update tree_pass descriptors.
19897         * local-alloc.c
19898         * function.c: Update tree_pass descriptors.
19899         * tree-vectorizer.c: Update tree_pass descriptors.
19900         * gcse.c: Update tree_pass descriptors.
19901         * ipa-type-escape.c: Update tree_pass descriptors.
19902         * tree-if-conv.c: Update tree_pass descriptors.
19903         * init-regs.c: Update tree_pass descriptors.
19904         * ipa.c: Update tree_pass descriptors.
19905         * tree-ssa-phiopt.c: Update tree_pass descriptors.
19906         * rtl-factoring.c: Update tree_pass descriptors.
19907         * lower-subreg.c: Update tree_pass descriptors.
19908         * bt-load.c: Update tree_pass descriptors.
19909         * tree-dfa.c: Update tree_pass descriptors.
19910         * except.c: Update tree_pass descriptors.
19911         * emit-rtl.c: Update tree_pass descriptors.
19912         * cfgexpand.c: Update tree_pass descriptors.
19913         * tree-cfgcleanup.c: Update tree_pass descriptors.
19914         * cfgcleanup.c: Update tree_pass descriptors.
19915         * tree-ssa-pre.c: Update tree_pass descriptors.
19916         * tree-sra.c: Update tree_pass descriptors.
19917         * tree-mudflap.c: Update tree_pass descriptors.
19918         * tree-ssa-copy.c: Update tree_pass descriptors.
19919         * cfglayout.c: Update tree_pass descriptors.
19920         * tree-ssa-forwprop.c: Update tree_pass descriptors.
19921         * tree-ssa-dce.c: Update tree_pass descriptors.
19922         * tree-ssa.c: Update tree_pass descriptors.
19923         * regclass.c: Update tree_pass descriptors.
19924         * integrate.c: Update tree_pass descriptors.
19925         * tree-optimize.c: Update tree_pass descriptors.
19926         * tree-ssa-phiprop.c: Update tree_pass descriptors.
19927         * tree-object-size.c: Update tree_pass descriptors.
19928         * combine.c: Update tree_pass descriptors.
19929         * tree-outof-ssa.c: Update tree_pass descriptors.
19930         * bb-reorder.c: Update tree_pass descriptors.
19931         * stack-ptr-mod.c: Update tree_pass descriptors.
19932         * var-tracking.c: Update tree_pass descriptors.
19933         * tree-profile.c: Update tree_pass descriptors.
19934         * tree-vect-generic.c: Update tree_pass descriptors.
19935         * reg-stack.c: Update tree_pass descriptors.
19936         * sched-rgn.c: Update tree_pass descriptors.
19937         * tree-ssa-structalias.c: Update tree_pass descriptors.
19938         * tree-cfg.c: Update tree_pass descriptors.
19939         * passes.c (current_pass): Update declaration.
19940         (finish_optimization_passes): Update.
19941         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
19942         (register_one_dump_file, register_dump_files_1, next_pass_1):
19943         Update arguments.
19944         (init_optimization_passes): Update handling of new types.
19945         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
19946         * ipa-struct-reorg.c: Update tree_pass descriptors.
19947         * tree-ssa-reassoc.c: Update tree_pass descriptors.
19948         * combine-stack-adj.c: Update tree_pass descriptors.
19949         * cfgrtl.c: Update tree_pass descriptors.
19950         * dce.c: Update tree_pass descriptors.
19951         * tree-ssanames.c: Update tree_pass descriptors.
19952
19953 2008-03-19  Richard Guenther  <rguenther@suse.de>
19954
19955         PR middle-end/35609
19956         * tree-ssa.c (walk_data): New structure.
19957         (warn_uninitialized_var): If not always_executed warn with "maybe"
19958         instead of "is".
19959         (execute_early_warn_uninitialized): Compute post-dominators.
19960         Initialize always_executed before processing each basic block.
19961
19962 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
19963
19964         PR target/35504
19965         * config/i386/i386.c (x86_this_parameter): Calculate correct location
19966         of "this" pointer when "regparm = N" or "fastcall" is in effect.
19967
19968 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19969
19970         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
19971
19972 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
19973
19974         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
19975         is true.
19976         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
19977         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
19978         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
19979         target after ignore has been set, and move there also the commputation
19980         of subtarget and original_target.
19981         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
19982         (LANG_HOOKS_INITIALIZER): Remove it.
19983         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
19984
19985 2008-03-18  Richard Guenther  <rguenther@suse.de>
19986
19987         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
19988         found an expression with constants, note that in the VN for the lhs.
19989         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
19990         fold them to constants if possible.  Run cleanup_cfg if done so.
19991         (execute_pre): Return todo.
19992         (do_pre): Likewise.
19993         (execute_fre): Likewise.
19994         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
19995         of constants.
19996         (get_prop_source_stmt): Look through pointer conversions.
19997
19998 2008-03-18  Jan Hubicka  <jh@suse.cz>
19999
20000         * tree-pretty-print.c: Include predict.h.
20001         (dump_generic_node): Dump predictor.
20002         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
20003         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
20004         * gimple-low.c (lower_stmt): Likewise.
20005         * expr.c (expand_expr_real): Likewise.
20006         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
20007         them.
20008         (build_predict_expr, build_predict_expr): New.
20009         * predict.h (predictor_name, build_predict_expr): Update.
20010         * c-typeck.c (c_finish_bc_stmt): Add prediction.
20011         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
20012         * predict.def (PRED_CONTINUE): Update hitrate.
20013         * tree.def (PREDICT_EXPR): Define.
20014         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
20015         do not handle BIND_EXPR.
20016         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
20017         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
20018         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
20019         operands.
20020
20021 2008-03-18  Michael Matz  <matz@suse.de>
20022
20023         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
20024
20025 2008-03-18  Richard Guenther  <rguenther@suse.de>
20026
20027         * tree-gimple.h (is_gimple_invariant_address): Declare.
20028         (is_gimple_constant): Likewise.
20029         * tree-gimple.c (is_gimple_constant): New function.
20030         (is_gimple_invariant_address): Likewise.
20031         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
20032         and is_gimple_invariant_address.
20033         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
20034         previous change.
20035         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
20036         an addressable base.
20037
20038 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
20039
20040         PR middle-end/35611
20041         * gimplify.c (gimplify_expr): Gimplify second operand of
20042         OMP_ATOMIC_LOAD.
20043
20044 2008-03-17  Richard Guenther  <rguenther@suse.de>
20045
20046         PR tree-optimization/19637
20047         * fold-const.c (fold_unary): Remove restrictions of removing
20048         intermediate pointer-conversions (P2)(P1)P0.
20049         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
20050         conversion to void pointer.
20051         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
20052
20053 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
20054
20055         PR debug/31510
20056         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
20057         emulated thread local variables.
20058
20059 2008-03-16  Richard Guenther  <rguenther@suse.de>
20060
20061         PR middle-end/35607
20062         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
20063         expand TREE_INVARIANT operations that are not gimple invariant.
20064
20065 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
20066
20067         * doc/extend.texi (Alignment): Say that the ABI controls
20068         the __alignof__ for non-strict-alignment targets rather
20069         than being a recommendation.
20070
20071 2008-03-15  Paul Brook  <paul@codesourcery.com>
20072
20073         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
20074         annotations.
20075         (arm_output_fn_unwind): Mark functions that can not be unwound.
20076
20077 2008-03-15  Paul Brook  <paul@codesourcery.com>
20078
20079         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
20080         extension instructions.
20081
20082 2008-03-15  Richard Guenther  <rguenther@suse.de>
20083
20084         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
20085         and fold constant aggregate refs.
20086         (fold_const_aggregate_ref): Handle string constants
20087         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
20088         (evaluate_stmt): Simplify now that ccp_fold folds constant
20089         aggregate refs.
20090
20091 2008-03-15  Paul Brook  <paul@codesourcery.com>
20092
20093         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
20094         (extzv): Use gen_extzv_t2.
20095         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
20096
20097 2008-03-15  Richard Guenther  <rguenther@suse.de>
20098
20099         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
20100         (fold_const_aggregate_ref): Likewise.
20101         (get_value): Return NULL if we don't have any values.
20102         (ccp_finalize): Set const_val to NULL after freeing it.
20103         * tree-flow.h (get_symbol_constant_value): Declare.
20104         (fold_const_aggregate_ref): Likewise.
20105         * tree-ssa-sccvn.c (try_to_simplify): Use them.
20106
20107 2008-03-15  Richard Guenther  <rguenther@suse.de>
20108
20109         PR middle-end/35593
20110         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
20111         to not produce negative array indices if not allowed.  Add
20112         parameter to indicate that.
20113         (maybe_fold_offset_to_component_ref): Allow negative array
20114         indices only for the first member of a structure.
20115         (maybe_fold_offset_to_reference): Allow negative array indices.
20116         (maybe_fold_stmt_addition): Likewise.
20117
20118 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
20119             Anatoly Sokolov <aesok@post.ru>
20120
20121         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
20122         (avr_arch): Add ARCH_AVR6.
20123         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
20124         (initial_elimination_offset): Initialize and use 'avr_pc_size'
20125         instead of fixed value 2.
20126         (print_operand_address): Use gs() asm specifier instead of pm().
20127         (avr_assemble_integer): (Ditto.).
20128         (avr_output_addr_vec_elt): (Ditto.).
20129         (print_operand): Handle "!" code.
20130         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
20131         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
20132         (AVR_HAVE_EIJMP_EICALL): Define.
20133         (AVR_3_BYTE_PC): Redefine.
20134         (AVR_2_BYTE_PC): (Ditto.).
20135         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
20136         (LINK_SPEC): Add atmega2560 and atmega2561.
20137         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
20138         (crtm2561.o).
20139         * config/avr/avr.md (call_insn): Use eicall instead of icall
20140         for 3 byte PC devices.
20141         (call_value_insn): (Ditto.).
20142         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
20143         (indirect_jump): Use only for for 2 byte PC devices.
20144         (*tablejump): (Ditto.).
20145         (*indirect_jump_avr6): Add insn.
20146         (*tablejump_rjmp): Don't use for 3 byte PC devices.
20147         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
20148         instead of ijmp for 3 byte PC devices.
20149         (__tablejump2__): (Ditto.).
20150         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
20151         (MULITLIB_DIRNAMES): (Ditto.).
20152         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
20153
20154 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
20155
20156         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
20157         "sse2_umulsidi3".  Use V1DI mode for operand 0.
20158         ("mmx_psadbw"): Use V1DI mode for operand 0.
20159         * config/i386/i386-modes.def (V1SI): New vector mode.
20160         * config/i386/i386.c (struct builtin_description)
20161         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
20162         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
20163         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
20164         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
20165         v1di_ftype_v8qi_v8qi type.
20166         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
20167
20168         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
20169         __builtin_ia32_pmuludq]: Fix the mode of return value.
20170
20171 2008-03-15  Richard Guenther  <rguenther@suse.de>
20172
20173         PR middle-end/35595
20174         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
20175         being a PHI_NODE.
20176
20177 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
20178
20179         * doc/invoke.texi (Option Summary, Xtensa Options): Document
20180         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
20181         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
20182         unless TARGET_SERIALIZE_VOLATILE is enabled.
20183         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
20184         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
20185         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
20186
20187 2008-03-14  Richard Guenther  <rguenther@suse.de>
20188
20189         PR tree-optimization/34172
20190         * tree-flow.h (refs_may_alias_p): Declare.
20191         (get_single_def_stmt): Likewise.
20192         (get_single_def_stmt_from_phi): Likewise.
20193         (get_single_def_stmt_with_phi): Likewise.
20194         * tree-dfa.c (refs_may_alias_p): New function.
20195         (get_single_def_stmt): Likewise.
20196         (get_single_def_stmt_from_phi): Likewise.
20197         (get_single_def_stmt_with_phi): Likewise.
20198         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
20199         (vn_reference_lookup_1): New helper function.
20200         (vn_reference_lookup): Walk the virtual use-def chain to
20201         continue searching for a match if the def does not alias the
20202         reference we are looking for.
20203
20204 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
20205
20206         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
20207         archive and Perzl.  Update The Written Word listing.
20208
20209 2008-03-14  Richard Guenther  <rguenther@suse.de>
20210
20211         PR tree-optimization/34043
20212         PR tree-optimization/33989
20213         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
20214         when doing FRE.
20215         (bitmap_find_leader): Use extra argument to verify dominance
20216         relationship inside a basic-block.
20217         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
20218         (find_leader_in_sets): Adjust.
20219         (create_component_ref_by_pieces): Take extra argument for
20220         dominance check, handle lookup failures.
20221         (find_or_generate_expression): Likewise.
20222         (create_expression_by_pieces): Likewise.
20223         (insert_into_preds_of_block): Adjust.
20224         (create_value_expr_from): If asked for, verify all operands
20225         are in the blocks AVAIL_OUT set.
20226         (make_values_for_stmt): Check for SSA_NAMEs that are life
20227         over an abnormal edge.
20228         (compute_avail): Remove such check.
20229         (do_SCCVN_insertion): New function.
20230         (eliminate): If we do not find a leader suitable for replacement
20231         insert a replacement expression from SCCVN if available.
20232         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
20233         (struct vn_ssa_aux): Add needs_insertion flag.
20234         * tree-ssa-sccvn.c (may_insert): New global flag.
20235         (copy_reference_ops_from_ref): Value-number union member access
20236         based on its size, not type and member if insertion is allowed.
20237         (visit_reference_op_load): For a weak match from union type
20238         punning lookup a view-converted value and insert a SSA_NAME
20239         for that value if that is not found.
20240         (visit_use): Make dumps shorter.  Do not disallow value numbering
20241         SSA_NAMEs that are life over an abnormal edge to constants.
20242         (free_scc_vn): Release inserted SSA_NAMEs.
20243         (run_scc_vn): New flag to specify whether insertion is allowed.
20244         Process SSA_NAMEs in forward order.
20245         * tree-ssa-loop-im.c (for_each_index): Handle invariant
20246         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
20247         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
20248         pointer type to/from integral types that do not change the
20249         precision to regular conversions.
20250
20251 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
20252
20253         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
20254         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
20255         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
20256         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
20257         input arguments and the mode of return value.  Built-in functions
20258         that operate on whole 64-bit MMX register now use V1DI mode.
20259
20260 2008-03-13  Alon Dayan  <alond@il.ibm.com>
20261             Olga Golovanevsky  <olga@il.ibm.com>
20262
20263         PR tree-optimization/35041
20264         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
20265         to locate the right position in a statement.
20266
20267 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
20268
20269         PR target/34000
20270         PR target/35553
20271         * config/i386/xmmintrin.h:  Change all static inline functions to
20272         extern inline and add __gnu_inline__ attribute.
20273         * config/i386/bmintrin.h: Ditto.
20274         * config/i386/smmintrin.h: Ditto.
20275         * config/i386/tmmintrin.h: Ditto.
20276         * config/i386/mmintrin-common.h: Ditto.
20277         * config/i386/ammintrin.h: Ditto.
20278         * config/i386/emmintrin.h: Ditto.
20279         * config/i386/pmmintrin.h: Ditto.
20280         * config/i386/mmintrin.h: Ditto.
20281         * config/i386/mm3dnow.h: Ditto.
20282
20283 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
20284
20285         PR middle-end/35185
20286         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
20287         (lower_omp_2): New function.
20288         (lower_omp_1, lower_omp): Rewritten.
20289
20290 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
20291
20292         PR 35054
20293         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
20294         with the phrase "Microsoft Windows compilers".
20295         (Push/Pop Macro Pragmas): New subsection. Document
20296         #pragma push_macro and pragma pop_macro.
20297
20298 2008-03-12  Paul Brook  <paul@codesourcery.com>
20299
20300         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
20301
20302 2008-03-12  Paul Brook  <paul@codesourcery.com>
20303
20304         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
20305         (thumb2_alusi3_short): Exclude PLUS and MINUS.
20306         (thumb2_addsi_shortim): Rename ...
20307         (thumb2_addsi_short): ... to this.  Allow register operands.
20308         (thumb2_subsi_short): New pattern.
20309         (thumb2_one_cmplsi2_short,
20310         thumb2_negsi2_short): New patterns and peepholes.
20311
20312 2008-03-12  Paul Brook  <paul@codesourcery.com>
20313
20314         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
20315
20316 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
20317
20318         * config/i386/i386.md (int_cond): New code iterator.
20319         (fp_cond): Ditto.
20320         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
20321         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
20322         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
20323         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
20324         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
20325         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
20326         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
20327         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
20328
20329 2008-03-12  Paul Brook  <paul@codesourcery.com>
20330
20331         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
20332         instead of {arm,thumb}_compute_save_reg_mask.
20333         (output_return_instruction): Ditto.
20334         (thumb_unexpanded_epilogue): Ditto.
20335         (thumb1_expand_prologue): Ditto.
20336         (thumb1_output_function_prologue): Ditto.
20337         (arm_set_return_address): Ditto.
20338         (thumb_set_return_address): Ditto.
20339         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
20340         regs to achieve stack alignment.
20341         (thumb1_compute_save_reg_mask): Fix compiler warning.
20342         (arm_output_epilogue): Use offsets->saved_regs_mask.
20343         Adjust stack pointer by poping call clobered registers.
20344         (arm_expand_prologue): Use offsets->saved_regs_mask.
20345         Adjust stack pointer by pushing extra registers.
20346         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
20347
20348 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
20349
20350         PR tree-opt/35422
20351         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
20352         conversion to the operands of a multiplication.
20353
20354 2008-03-12  Richard Guenther  <rguenther@suse.de>
20355
20356         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
20357         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
20358         * timevar.def (TV_TREE_PHIPROP): Add.
20359         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
20360         pass description.  Use TV_TREE_PHIPROP.
20361         * tree-ssa-forwprop.c: Remove phiprop code.
20362
20363 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
20364
20365         PR middle-end/35549
20366         * omp-low.c (maybe_lookup_decl): Constify first argument.
20367         (use_pointer_for_field): Change last argument from bool to
20368         omp_context *.  Disallow shared copy-in/out in nested
20369         parallel if decl is shared in outer parallel too.
20370         (build_outer_var_ref, scan_sharing_clauses,
20371         lower_rec_input_clauses, lower_copyprivate_clauses,
20372         lower_send_clauses, lower_send_shared_vars): Adjust callers.
20373
20374 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
20375             Ira Rosen  <irar@il.ibm.com>
20376
20377         * tree-vectorizer.c (free_stmt_vec_info): New function.
20378         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
20379         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
20380         * tree-vectorizer.h (free_stmt_vec_info): Declare.
20381         * tree-vect-transform.c (vectorizable_conversion): Free
20382         vec_oprnds0 if it was allocated.
20383         (vect_permute_store_chain): Remove unused VECs.
20384         (vectorizable_store): Free VECs that are allocated in the..
20385         function.
20386         (vect_transform_strided_load, vectorizable_load): Likewise.
20387         (vect_remove_stores): Simplify the code.
20388         (vect_transform_loop): Move code to vect_remove_stores().
20389         Call vect_remove_stores() and free_stmt_vec_info().
20390
20391 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20392
20393         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
20394         TARGET_HPUX.  Revise comment.
20395         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
20396         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
20397         Use sr4 variant of `be' instruction when not generating PIC code.
20398         (attr_length_call): Adjust for above change.
20399
20400 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20401
20402         * ipa-reference.c (static_execute): Remove module_statics_const and
20403         associated setting code.
20404
20405 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
20406
20407         PR target/35540
20408         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
20409         predicate for operand 1.
20410         (paritysi2_cmp): Use register_operand predicate for operand 2.
20411         Use earlyclobber modifier for operand 1.  Remove support for
20412         memory operands.
20413         (paritydi2_cmp): Use register_operand predicate for operand 3.
20414         Use earlyclobber modifier for operand 1.  Remove support for
20415         memory operands.
20416
20417 2008-03-11  Paul Brook  <paul@codesourcery.com>
20418             Vladimir Prus  <vladimir@codesourcery.com>
20419
20420         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
20421         (arm_compute_save_reg0_reg12_mask): Always
20422         check if register 11 must be saved.  Always safe hard frame pointer
20423         when frame_pointer_needeed.
20424         (arm_compute_save_reg_mask): Save IP and PC
20425         only with apcs frames.
20426         (arm_output_epilogue): Adjust Thumb2 codepath to
20427         be also invoked and work for ARM non-apcs frames.
20428         (arm_expand_prologue): Don't bother saving IP
20429         for non-apcs frame, since it's not clobbered by
20430         prologue code.  Implement non-apcs frame
20431         layout.
20432
20433 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
20434
20435         PR rtl-optimization/35281
20436         * expr.c (convert_move): Use a new pseudo for the intermediate
20437         from_mode->word_mode result.
20438
20439 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
20440
20441         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
20442         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
20443         * toplev.c (compile_file): Don't call it.
20444
20445 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
20446
20447         PR middle-end/35526
20448         * expr.c (store_expr): Call emit_block_move if the mode
20449         of "temp" RTX is BLKmode.
20450
20451 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20452             Richard Guenther  <rguenther@suse.de>
20453
20454         PR tree-optimization/31358
20455         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
20456         the step with a NULL_TREE.
20457         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
20458         to sizetype if type is a pointer type.
20459         (add_candidate_1): Don't convert the base and step to
20460         the generic type if the orginal type is a pointer type.
20461         (add_iv_value_candidates): Use sizetype for the step
20462         if type is a pointer type.
20463         (cand_value_at): Likewise.
20464         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
20465         for pointer types.
20466         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
20467         Don't convert the tem affine to the type.
20468         (add_elt_to_tree): Use sizetype for the step if a pointer.
20469         Use POINTER_PLUS_EXPR for pointers.
20470         (aff_combination_to_tree): Use sizetype for the step if a
20471         pointer.
20472
20473 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
20474
20475         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
20476         Remove commutativity hint.
20477
20478 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
20479
20480         PR c/35438
20481         PR c/35439
20482         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
20483         errorneous type.  Check that v is a VAR_DECL.
20484
20485         PR middle-end/35099
20486         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
20487
20488 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
20489
20490         PR tree-optimization/35494
20491         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
20492         may be overriden at link and run time.
20493
20494 2008-03-10  Richard Guenther  <rguenther@suse.de>
20495
20496         PR tree-optimization/34677
20497         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
20498         (poolify_tree): Likewise.
20499         (modify_expr_template): Likewise.
20500         (poolify_modify_stmt): Likewise.
20501         (insert_fake_stores): Handle all component-ref style stores
20502         in addition to INDIRECT_REF.  Also handle complex types.
20503         Do not poolify the inserted load.
20504         (realify_fake_stores): Do not rebuild the tree but only
20505         make it a SSA_NAME copy.
20506         (init_pre): Remove initialzation of modify_expr_template.
20507         Do not allocate modify_expr_node_pool.
20508         (fini_pre): Do not free modify_expr_node_pool.
20509
20510 2008-03-10  Paul Brook  <paul@codesourcery.com>
20511
20512         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
20513         to avoid conflicts.
20514
20515 2008-03-10  Paul Brook  <paul@codesourcery.com>
20516             Mark Shinwell  <shinwell@codesourcery.com>
20517
20518         * config/arm/cortex-r4.md: New.
20519         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
20520         insn attributes.
20521         * config/arm/arm.md: Include cortex-r4.md.
20522         (insn): Add smmls, sdiv and udiv values.
20523         (generic_sched): Don't use generic scheduling for Cortex-R4.
20524         (arm_issue_rate): New function.
20525         (TARGET_SCHED_ISSUE_RATE): Define.
20526
20527 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
20528
20529         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
20530
20531 2008-03-10  Richard Guenther  <rguenther@suse.de>
20532
20533         * tree-ssa-pre.c (get_sccvn_value): Simplify.
20534         (compute_avail): Do not add stmt uses to AVAIL_OUT.
20535
20536 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
20537
20538         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
20539         Set default to true.
20540
20541 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20542
20543         * c.opt (Wsynth): Deprecate.
20544         * doc/invoke.texi (Option Summary, Warning Options): Document
20545         -Wno-format-contains-nul.
20546
20547 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
20548
20549         PR target/35496
20550         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
20551         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
20552
20553 2008-03-09  Ira Rosen  <irar@il.ibm.com>
20554
20555         * config/rs6000/rs6000.c (builtin_description): Rename vector
20556         left shift operations.
20557         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
20558         (altivec_vsl<VI_char>): Rename to ...
20559         (ashl<mode>3): ... new name.
20560         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
20561         gen_ashlv4si3.
20562         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
20563
20564 2008-03-08  Richard Guenther  <rguenther@suse.de>
20565
20566         * coverage.h (tree_coverage_counter_addr): Declare.
20567         * coverage.c (tree_coverage_counter_addr): New function.
20568         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
20569         before using again.
20570         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
20571         (tree_gen_one_value_profiler): Likewise.
20572         (tree_gen_ic_profiler): Likewise.
20573         (tree_gen_average_profiler): Likewise.
20574         (tree_gen_ior_profiler): Likewise.
20575
20576 2008-03-08  Richard Guenther  <rguenther@suse.de>
20577
20578         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
20579         (vn_binary_op_insert): Likewise.
20580         (vn_unary_op_lookup): Likewise.
20581         (vn_unary_op_insert): Likewise.
20582         (vn_nary_op_lookup): Declare.
20583         (vn_nary_op_insert): Likewise.
20584         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
20585         and binary hashes, use a single obstack for unary_op_pool
20586         and binary_op_pool.
20587         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
20588         a single struct vn_nary_op_s.  Store tree code length and
20589         a variable number of operands.
20590         (struct vn_reference_op_struct): Remove unused op2.
20591         (vn_reference_op_eq): Do not compare op2.
20592         (vn_reference_op_compute_hash): Do not compute hash of op2.
20593         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
20594         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
20595         with vn_nary_op_compute_hash.
20596         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
20597         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
20598         vn_nary_op_lookup.
20599         (vn_unary_op_insert, vn_binary_op_insert): Replace with
20600         vn_nary_op_insert.
20601         (visit_unary_op): Call nary functions.
20602         (visit_binary_op): Likewise.
20603         (process_scc): Adjust for struct vn_tables_s changes.
20604         (allocate_vn_table): Likewise.
20605         (free_vn_table): Likewise.
20606         * tree-vn.c (vn_add): Call nary functions.
20607         (vn_lookup): Likewise.
20608
20609 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
20610
20611         PR target/35498
20612         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
20613         wdst back after sync_compare_and_swapqhi_internal.
20614
20615 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
20616
20617         PR target/22152
20618         * config/i386/i386-modes.def (V1DI): New vector mode.
20619         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
20620         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
20621         (MMXMODE248): Ditto.
20622         (MMXMODE): Add V1DI mode.
20623         (mmxvecsize): Change DI mode to V1DI mode.
20624         ("mov<mode>): Use MMXMODEI8 mode iterator.
20625         ("*mov<mode>_internal_rex64"): Ditto.
20626         ("*mov<mode>_internal"): Ditto.
20627         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
20628         ("mmx_sub<mode>3"): Ditto.
20629         ("mmx_adddi3"): Remove insn pattern.
20630         ("mmx_subdi3"): Ditto.
20631         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
20632         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
20633         ("mmx_ashl<mode>3"): Ditto.
20634         ("mmx_lshrdi3"): Remove insn pattern.
20635         ("mmx_ashldi3"): Ditto.
20636         * config/i386/i386.c (classify_argument): Handle V1DImode.
20637         (function_arg_advance_32): Ditto.
20638         (function_arg_32): Ditto.
20639         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
20640         mmx_addv1di3 insn pattern.
20641         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
20642         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
20643         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
20644         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
20645         Remove definitions of built-in functions.
20646         (V1DI_type_node): New node.
20647         (v1di_ftype_v1di_int): Ditto.
20648         (v1di_ftype_v1di_v1di): Ditto.
20649         (v2si_ftype_v2si_si): Ditto.
20650         (v4hi_ftype_v4hi_di): Remove node.
20651         (v2si_ftype_v2si_di): Ditto.
20652         (ix86_init_mmx_sse_builtins): Handle V1DImode.
20653         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
20654         Redefine builtins using def_builtin_const with *_ftype_*_int node.
20655         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
20656         Add new builtins using def_builtin_const.
20657         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
20658         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
20659         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
20660         * config/i386/mmintrin.h (__v1di): New typedef.
20661         (_mm_add_si64): Cast arguments to __v1di type.
20662         (_mm_sub_si64): Ditto.
20663         (_mm_sll_pi16): Cast __count to __v4hi type.
20664         (_mm_sll_pi32): Cast __count to __v2si type.
20665         (_mm_sll_si64): Cast arguments to __v1di type.
20666         (_mm_srl_pi16): Cast __count to __v4hi type.
20667         (_mm_srl_pi32): Cast __count to __v2si type.
20668         (_mm_srl_si64): Cast arguments to __v1di type.
20669         (_mm_sra_pi16): Cast __count to __v4hi type.
20670         (_mm_sra_pi32): Cast __count to __v2si type.
20671         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
20672         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
20673         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
20674         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
20675         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
20676         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
20677         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
20678         (_mm_srai_pi32): Use __builtin_ia32_psradi.
20679         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
20680         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
20681         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
20682         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
20683
20684 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
20685
20686         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
20687
20688 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
20689
20690         PR target/35373
20691         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
20692         reg+const addressing for Altivec modes.  Don't generate reg+reg
20693         addressing for TFmode or TDmode quantities.
20694
20695 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
20696
20697         * c-common.c (vector_types_convertible_p): Call langhook
20698         instead of comptypes.
20699
20700 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20701
20702         PR tree-opt/35402
20703         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
20704         integral and scalar float variables which have a
20705         NULL DECL_INITIAL.
20706
20707 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
20708
20709         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
20710         dwarf_register_span hook when emitting unwind information for
20711         register-to-memory saves.
20712         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
20713         (rs6000_frame_related): Remove call to spe_synthesize_frame.
20714
20715 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
20716
20717         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
20718         for the same VAR_DECL.
20719
20720 2008-03-06  Tom Tromey  <tromey@redhat.com>
20721
20722         * treelang: Delete.
20723         * doc/standards.texi (Standards): Don't mention treelang.
20724         * doc/invoke.texi (Overall Options): Don't mention treelang.
20725         * doc/install.texi (Prerequisites): Don't mention bison or
20726         treelang.
20727         (Configuration): Don't mention treelang.
20728         (Building): Likewise.
20729         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
20730
20731 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
20732
20733         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
20734         word-extractions out of a multi-word object.
20735
20736 2008-03-06  Richard Guenther  <rguenther@suse.de>
20737
20738         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
20739         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
20740         result type and precision.
20741         * expr.c (get_inner_reference): Set unsignedp based on the result
20742         type of BIT_FIELD_REF.
20743         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
20744         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
20745         (try_instantiate_multiple_fields): Likewise.  Use the correct type
20746         for BIT_FIELD_REF.
20747         (sra_build_assignment): Likewise.
20748         (sra_build_elt_assignment): Likewise.
20749         (sra_explode_bitfield_assignment): Likewise.
20750         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
20751         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
20752         set BIT_FIELD_REF_UNSIGNED.
20753         (vectorizable_load): Likewise.
20754
20755 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
20756
20757         * cse.c (cse_extended_basic_block): Invalidate artificial defs
20758         at bb start.
20759
20760 2008-03-06  Richard Guenther  <rguenther@suse.de>
20761
20762         * alias.c (struct alias_set_entry): Move has_zero_child field
20763         to pack with alias_set.
20764
20765 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
20766
20767         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
20768         32bit host.
20769
20770 2008-03-05  Ian Lance Taylor  <iant@google.com>
20771
20772         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
20773
20774 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
20775
20776         * fwprop.c (update_df): Support width and offset parameters of
20777         df_ref_create.
20778         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
20779         global_conflicts): Change DF_REF_EXTRACT to either
20780         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20781         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20782         * df-scan.c (df_ref_record, df_defs_record,
20783         df_ref_create_structure, df_def_record_1, df_uses_record,
20784         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
20785         df_bb_refs_collect, df_entry_block_defs_collect,
20786         df_exit_block_uses_collect): Support new width and offset fields.
20787         (ref_extract_pool): New storage pool.
20788         (df_free_ref): New function.
20789         (df_reg_chain_unlink, df_free_collection_rec,
20790         df_sort_and_compress_refs): Call df_free_ref.
20791         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
20792         of df_ref_extract.
20793         (df_ref_create_structure): Allocate df_ref_extract if offset and
20794         width fields are used.
20795         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
20796         (df_uses_record): Get offset and width from ZERO_EXTRACT
20797         and SIGN_EXTRACT.
20798         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
20799         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20800         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20801         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
20802         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
20803         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
20804         (df_ref_extract): New structure.
20805         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
20806         (df_ref_create): Add width and offset parameters.
20807
20808 2008-03-05  Richard Guenther  <rguenther@suse.de>
20809
20810         * tree-ssa-structalias.c (get_constraint_for_component_ref):
20811         Use ranges_overlap_p.
20812         (offset_overlaps_with_access): Rename
20813         to ranges_overlap_p and move ...
20814         * tree-flow-inline.h (ranges_overlap_p): ... here.
20815
20816         * tree.h (get_inner_reference, handled_component_p): Update
20817         comments.
20818
20819         * tree.h (record_component_aliases, get_alias_set,
20820         alias_sets_conflict_p, alias_sets_must_conflict_p,
20821         objects_must_conflict_p): Move declarations ...
20822         * alias.h (record_component_aliases, get_alias_set,
20823         alias_sets_conflict_p, alias_sets_must_conflict_p,
20824         objects_must_conflict_p): ... here.
20825         Include coretypes.h.
20826         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
20827
20828 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
20829
20830         * cfg.c: Include tree-flow.h.
20831         (remove_edge_raw): Call redirect_edge_var_map_clear.
20832         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
20833         * tree-flow-inline.h (redirect_edge_var_map_def): New.
20834         (redirect_edge_var_map_result): New.
20835         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
20836         PENDING_STMT use with redirect_edge_var_map_*.
20837         * tree-ssa.c (edge_var_maps): New definition.
20838         (redirect_edge_var_map_add): New.
20839         (redirect_edge_var_map_clear): New.
20840         (redirect_edge_var_map_dup): New.
20841         (redirect_edge_var_map_vector): New.
20842         (redirect_edge_var_map_destroy): New.
20843         (ssa_redirect_edge): Replace PENDING_STMT use with
20844         redirect_edge_var_map_*.
20845         (flush_pending_stmts): Same.
20846         (delete_tree_ssa): Destroy edge var map.
20847         * tree-flow.h (struct _edge_var_map): New.
20848         Define edge_var_map vector type.
20849         Declare redirect_edge_var_map_* prototypes.
20850         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
20851         * tree-cfg.c (reinstall_phi_args): Replace
20852         PENDING_STMT use with redirect_edge_var_map_*.
20853
20854 2008-03-05  Richard Guenther  <rguenther@suse.de>
20855
20856         PR tree-optimization/35472
20857         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
20858         whose single use_stmt has a overlapping set of loaded and
20859         stored symbols as that use_stmt might be a noop assignment then.
20860
20861 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
20862
20863         * gthr-rtems.h: Implement __gthread_mutex_destroy.
20864
20865 2008-03-05  Richard Guenther  <rguenther@suse.de>
20866
20867         PR c++/35336
20868         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
20869         should be constants.
20870         * tree-cfg.c (verify_expr): Verify it.
20871         * fold-const.c (fold_truthop): Remove code generating
20872         BIT_FIELD_REFs of structure bases.
20873         (fold_binary): Likewise.
20874         (fold_ternary): Position and size of BIT_FIELD_REFs are
20875         always host integers.
20876         (make_bit_field_ref): Remove.
20877         (optimize_bit_field_compare): Remove.
20878         (all_ones_mask_p): Remove.
20879
20880 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
20881
20882         PR gcc/33009
20883         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
20884         (split_block_and_df_analyze): New. Split basic block and rebuild
20885         dataflow.
20886         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
20887         SPLIT_BLOCK.
20888         (split_pattern_seq): Likewise.
20889         (erase_matching_seqs): Likewise.
20890         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
20891
20892 2008-03-04  Geoff Keating  <geoffk@apple.com>
20893
20894         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
20895         declaration and code.
20896         (tree_invalid_nonnegative_warnv_p): Likewise.
20897
20898 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
20899
20900         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
20901         examples.  Truncate option-names then causing overfull hbox.
20902
20903 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20904
20905         PR target/35222
20906         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
20907         on hpux10.
20908         * configure: Rebuilt.
20909
20910 2008-03-04  Rafael Espíndola  <espindola@google.com>
20911
20912         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
20913         (tree_unary_nonnegative_warnv_p): New.
20914         (tree_binary_nonnegative_warnv_p): New.
20915         (tree_single_nonnegative_warnv_p): New.
20916         (tree_invalid_nonnegative_warnv_p): New.
20917         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
20918
20919 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20920
20921         PR 28322
20922         * opts.c (handle_option): Postpone 'unknown option' errors only for
20923         warning options.
20924
20925 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
20926
20927         PR target/35453
20928         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
20929         (_SIDD_XXX): This.
20930
20931 2008-03-04  Rafael Espíndola  <espindola@google.com>
20932
20933         * fold-const.c (tree_unary_nonzero_warnv_p): New.
20934         (tree_binary_nonzero_warnv_p): New.
20935         (tree_single_nonzero_warnv_p): New.
20936         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
20937
20938 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
20939
20940         PR middle-end/35456
20941         * fold-const.c (fold_cond_expr_with_comparison): Prevent
20942         transformations for modes that have signed zeros.
20943         * ifcvt.c (noce_try_abs): Ditto.
20944
20945 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
20946
20947         * config/i386/i386.c (override_options): Force
20948         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
20949
20950 2008-03-04  Jan Hubicka  <jh@suse.cz>
20951
20952         PR c++/35262
20953         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
20954         in last commit.
20955
20956 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
20957
20958         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
20959         label to probe the stack.
20960
20961 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
20962
20963         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
20964         (__gthr_win32_mutex_destroy): Declare.
20965         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
20966         __gthr_win32_mutex_destroy.
20967         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
20968
20969 2008-03-03  Jan Hubicka  <jh@suse.cz>
20970
20971         PR c++/35262
20972         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
20973         aggressive on inlining cold calls.
20974
20975 2008-03-03  Richard Guenther  <rguenther@suse.de>
20976
20977         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
20978         struct copies into the expression table.
20979         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
20980         (try_to_simplify): Likewise.
20981         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
20982         integral and pointer arguments which do not change the
20983         precision to NOP_EXPRs.
20984         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
20985         VIEW_CONVERT_EXPR case.
20986
20987 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
20988
20989         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
20990         defined in a loop at depth 0 is invariant.
20991         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
20992         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
20993         be called at loop depth 0.
20994
20995 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
20996
20997         PR driver/35420
20998         * gcc.c (process_command): Update copyright notice dates.
20999         * gcov.c (print_version): Likewise.
21000         * gcov-dump.c (print_version): Likewise.
21001         * mips-tfile.c (main): Likewise.
21002         * mips-tdump.c (main): Likewise.
21003
21004 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21005
21006         PR 24924
21007         * c-common.c (flag_permissive): Delete.
21008         (constant_expression_warnings): Check flags first.
21009         (constant_expression_error): New.
21010         * c-common.h (flag_permissive): Delete.
21011         (constant_expression_error): Declare.
21012         * flags.h (flag_permissive): Declare. Update description.
21013         * diagnostic.c (pedwarn): Update.
21014         (permerror): New.
21015         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
21016         (permissive_error_kind): New.
21017         * toplev.c (flag_permissive): Define. Update description.
21018         * toplev.h (permissive_error_kind): Declare.
21019         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
21020         (pedwarn_c90): Use pedantic_warning_kind.
21021         * c-opts.c (c_common_post_options): flag_permissive does not affect
21022         flag_pedantic_errors.
21023
21024 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
21025
21026         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
21027         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
21028         __absvsi2, __absvDI2): Use unsigned arithmetic.
21029
21030 2008-03-02  Andi Kleen  <ak@suse.de>
21031             Richard Guenther  <rguenther@suse.de>
21032
21033         * struct-equiv.c: Remove file.
21034         * cfg_cleanup.c (condjump_equiv_p): Remove.
21035         * Makefile.in (OBJS-common): Remove struct-equiv.o.
21036         (struct-equiv.o): Remove rule.
21037         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
21038         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
21039         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
21040
21041 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
21042
21043         * ifcvt.c (noce_process_if_block): Try to handle only the then
21044         block if the else block exists but isn't suitable.
21045
21046 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
21047
21048         PR gcc/35063
21049         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
21050         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
21051         regression from previous patch.
21052
21053 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
21054
21055         PR gcc/35063
21056         * gthr.h: Add __gthread_mutex_destroy as a function that must be
21057         implemented.
21058         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
21059         * gthr-single.h (__gthread_mutex_destroy): Likewise.
21060         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
21061         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
21062         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
21063         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
21064         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
21065         (__gthread_mutex_destroy_function): Rename to
21066         __gthread_mutex_destroy.
21067         * gthr-dce.h (__gthread_mutex_destroy): Call
21068         pthread_mutex_destroy.
21069         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
21070         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
21071         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
21072
21073 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
21074
21075         * df-scan.c (df_ref_chain_change_bb): Simplify.
21076         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
21077         set_block_for_insn if there's any change.
21078         * df.h ((df_insn_change_bb): Fix prototype.
21079         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
21080         df_insn_change_bb, don't call set_block_for_insn.
21081         * emit-rtl.c (reorder_insns): Likewise.
21082         * haifa-sched.c (move_insn): Likewise.
21083
21084 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
21085
21086         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
21087
21088 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
21089
21090         * tree-flow-inline.h (next_readonly_imm_use): Return
21091         NULL_USE_OPERAND_P after the end.
21092
21093 2008-03-01  Richard Guenther  <rguenther@suse.de>
21094
21095         PR tree-optimization/35411
21096         * tree-sra.c (sra_build_assignment): Split conversion to
21097         final type to a separate statement if we are not assigning
21098         to a register.
21099
21100 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21101
21102         * fold-const.c (fold_convertible_p): Correct the logic to follow
21103         that in fold_convert().
21104
21105 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
21106
21107         PR c++/35315
21108         * tree-inline.c (build_duplicate_type): When we make a
21109         duplicate type, make it unique in the canonical types system.
21110
21111 2008-02-29  Tom Tromey  <tromey@redhat.com>
21112
21113         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
21114         input_file_stack_history, input_file_stack_restored): Remove.
21115         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
21116         * input.h (struct file_stack): Remove.
21117         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
21118         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
21119         Likewise.
21120         * diagnostic.h (struct diagnostic_context) <last_module>: Change
21121         type.
21122         (diagnostic_last_module_changed): Add 'map' argument.
21123         (diagnostic_set_last_function): Likewise.
21124         * diagnostic.c (undiagnostic_report_current_module): Iterate using
21125         line map, not input_file_stack.
21126         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
21127
21128 2008-02-29  Paul Brook  <paul@codesourcery.com>
21129
21130         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
21131
21132 2008-02-29  Paul Brook  <paul@codesourcery.com>
21133
21134         * config/arm/ieee754-df.S (muldf3): Use RET macros.
21135
21136 2008-02-29  Richard Guenther  <rguenther@suse.de>
21137
21138         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
21139         vn_lookup_or_add.
21140         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
21141         value for comparing for a store match.
21142         (simplify_unary_expression): Do nothing for SSA_NAMEs.
21143         (try_to_simplify): Do not do a full-blown reference lookup.
21144
21145 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
21146
21147         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
21148         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
21149
21150         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
21151
21152 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
21153
21154         * tree-loop-linear.c (try_interchange_loops): Compare memory access
21155         strides against cache sizes.
21156
21157 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
21158
21159         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
21160         constant to fpul.
21161
21162 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
21163
21164         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
21165         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
21166         is smaller than the original promoted value.
21167         (simplify_subreg): If OP is a SUBREG, try to preserve its
21168         SUBREG_PROMOTED_VAR_P information.
21169
21170 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
21171
21172         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
21173         (VN_INFO_GET): Allocate new objects on the obstack.
21174         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
21175         for rpo_numbers_temp, for consistency.
21176         (free_scc_vn): Free the obstack.
21177
21178 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
21179
21180         * doc/invoke.texi: Document -ftree-loop-distribution.
21181         * tree-loop-distribution.c: New.
21182         * tree-pass.h (pass_loop_distribution): New.
21183         * graphds.h (struct graph): Add htab_t indices.
21184         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
21185         * tree-vectorizer.c (rename_variables_in_loop): Extern.
21186         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
21187         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
21188         * tree-data-ref.c (debug_data_dependence_relations): New.
21189         (dump_data_dependence_relation): Also print data references.
21190         (free_data_ref): Extern.
21191         (same_access_functions): Moved...
21192         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
21193         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
21194         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
21195         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
21196         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
21197         (stmts_from_loop): Skip LABEL_EXPR.
21198         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
21199         New.
21200         (build_rdg): Initialize rdg->indices htab.
21201         (free_rdg, stores_from_loop, ref_base_address,
21202         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
21203         have_similar_memory_accesses_1, ref_base_address_1,
21204         remove_similar_memory_refs): New.
21205         * tree-data-ref.h: Depend on tree-chrec.h.
21206         (debug_data_dependence_relations, free_data_ref): Declared.
21207         (same_access_functions): ... here.
21208         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
21209         New.
21210         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
21211         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
21212         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
21213         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
21214         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
21215         rdg_vertex_for_stmt): Declared.
21216         (struct rdg_edge): Add level.
21217         (RDGE_LEVEL): New.
21218         (free_rdg, stores_from_loop, remove_similar_memory_refs,
21219         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
21220         Declared.
21221         (rdg_has_similar_memory_accesses): New.
21222         * tree-vect-analyze.c: Remove unused static decls.
21223         * lambda.h (dependence_level): New.
21224         * common.opt (ftree-loop-distribution): New.
21225         * tree-flow.h (mark_virtual_ops_in_bb,
21226         slpeel_tree_duplicate_loop_to_edge_cfg,
21227         rename_variables_in_loop): Declared.
21228         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
21229         (OBJS-common): Add tree-loop-distribution.o.
21230         (tree-loop-distribution.o): New rule.
21231         * tree-cfg.c (mark_virtual_ops_in_bb): New.
21232         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
21233         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
21234
21235 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
21236
21237         PR target/33963
21238         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
21239         other than structures and unions.
21240
21241 2008-02-28  Richard Guenther  <rguenther@suse.de>
21242
21243         Revert:
21244         2008-02-26  Richard Guenther  <rguenther@suse.de>
21245
21246         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21247         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21248         (lookup_decl_from_uid): Declare.
21249         (remove_decl_from_map): Likewise.
21250         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21251         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21252         (decl_for_uid_map): New global hashtable mapping DECL_UID
21253         to the decl tree.
21254         (init_ttree): Allocate it.
21255         (insert_decl_to_uid_decl_map): New helper function.
21256         (make_node_stat): Insert new decls into the map.
21257         (copy_node_stat): Likewise.
21258         (lookup_decl_from_uid): New function.
21259         (remove_decl_from_map): Likewise.
21260         (print_decl_for_uid_map_statistics): New helper.
21261         (dump_tree_statistics): Call it.
21262
21263         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21264         (referenced_var_iterator): Adjust.
21265         (FOR_EACH_REFERENCED_VAR): Adjust.
21266         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21267         (num_referenced_vars): Adjust.
21268         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21269         (first_referenced_var): Remove.
21270         (end_referenced_vars_p): Likewise.
21271         (next_referenced_var): Likewise.
21272         (referenced_var_iterator_set): New helper function.
21273         * tree-dfa.c (referenced_var_lookup): Adjust.
21274         (referenced_var_check_and_insert): Likewise.
21275         (remove_referenced_var): Likewise.
21276         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21277         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21278         (verify_call_clobbering): Likewise.
21279         (verify_memory_partitions): Likewise.
21280         (init_tree_ssa): Allocate bitmap instead of hashtable for
21281         referenced_vars.
21282         (delete_tree_ssa): Adjust.
21283         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21284         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21285         (compute_tag_properties): Likewise.
21286         (set_initial_properties): Likewise.
21287         (find_partition_for): Likewise.
21288         (update_reference_counts): Likewise.
21289         (dump_may_aliases_for): Likewise.
21290         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21291         (add_call_clobber_ops): Likewise.
21292         (add_call_read_ops): Likewise.
21293         (get_asm_expr_operands): Likewise.
21294         * tree-into-ssa.c (dump_decl_set): Likewise.
21295         (update_ssa): Likewise.
21296         * tree-sra.c (scan_function): Likewise.
21297         (decide_instantiations): Likewise.
21298         (scalarize_parms): Likewise.
21299         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21300         (dsa_named_for): Likewise.
21301         * tree-ssa-structalias.c (update_alias_info): Likewise.
21302         (merge_smts_into): Likewise.
21303
21304 2008-02-27  David Daney  <ddaney@avtrex.com>
21305
21306         PR target/34409
21307         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
21308         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
21309         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
21310         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
21311         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
21312
21313 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
21314
21315         PR target/25477
21316         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
21317         (BUILT_IN_NEXTTOWARD): Remove.
21318         (BUILT_IN_NEXTTOWARDF): Ditto.
21319         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
21320         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
21321
21322 2008-02-27  Tom Tromey  <tromey@redhat.com>
21323
21324         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
21325         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
21326
21327 2008-02-27  Jan Beulich  <jbeulich@novell.com>
21328
21329         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
21330         update the respective field on newdecl.
21331
21332 2008-02-27  Revital Eres  <eres@il.ibm.com>
21333
21334         PR rtl-optimization/34999
21335         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
21336         crossing edges that ends with a call insn.
21337         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
21338         call insn and clear the EDGE_CROSSING flag of the crossing edge
21339         when fixing fallthru edges.
21340
21341 2008-02-27  Richard Guenther  <rguenther@suse.de>
21342
21343         PR middle-end/35390
21344         * fold-const.c (fold_unary): Return the correct argument,
21345         converted to the result type.
21346
21347 2008-02-27  Richard Guenther  <rguenther@suse.de>
21348
21349         PR middle-end/34971
21350         * expr.c (expand_expr_real_1): Assert on rotates that operate
21351         on partial modes.
21352         * fold-const.c (fold_binary): Use the types precision, not the
21353         bitsize of the mode if folding rotate expressions.  Build rotates
21354         only for full modes.
21355
21356 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
21357
21358         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
21359         and CPP_PRAGMA_EOL.
21360         * c-pragma.c (pragma_ns_name): New typedef.
21361         (registered_pp_pragmas): New variable.
21362         (c_pp_lookup_pragma): New function.
21363         (c_register_pragma_1): If flag_preprocess_only, do nothing
21364         for non-expanded pragmas, for expanded ones push pragma's
21365         namespace and name into registered_pp_pragmas vector.
21366         (c_invoke_pragma_handler): Register OpenMP pragmas even when
21367         flag_preprocess_only, don't register GCC pch_preprocess
21368         pragma if flag_preprocess_only.
21369         * c-opts.c (c_common_init): Call init_pragma even if
21370         flag_preprocess_only.
21371         * c-pragma.c (c_pp_lookup_pragma): New prototype.
21372         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
21373         cpp_register_pragma if flag_preprocess_only.
21374
21375 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21376
21377         PR c/28800
21378         * c-parser.c (c_parser_translation_unit): Warn for empty
21379         translation unit, not empty source file.
21380
21381 2008-02-26  Paul Brook  <paul@codesourcery.com>
21382
21383         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
21384         operand for Thumb-2.
21385         * config/arm/arm.h (reg_class): Add CORE_REGS.
21386         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
21387         (BASE_REG_CLASS): Use CORE_REGS.
21388         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
21389         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
21390         (REGNO_OK_FOR_INDEX_P): Exclude SP.
21391         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
21392         ARM_REGNO_OK_FOR_INDEX_P.
21393         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
21394         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
21395         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
21396         (ldm/stm peepholes): Ditto.
21397         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
21398         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
21399         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
21400         * config/arm/constraints.md: Enable "k" constraint on ARM.
21401
21402 2008-02-27  Ben Elliston  <bje@au.ibm.com>
21403
21404         * config/rs6000/rs6000.c: Annotate cache line size field in all
21405         instances of struct processor_costs.
21406
21407 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
21408
21409         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
21410         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
21411         jump_bypass): New counters.
21412         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
21413         * dce.c (gate_ud_dce): Same.
21414         (gate_fast_dce): Same.
21415         * dse.c (gate_dse1): New function.
21416         (gate_dse2): New function.
21417         (gate_dse): Merge results of new gate functions.
21418         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
21419         (gate_handle_jump_bypass): Add dbg_cnt.
21420         (gate_handle_gcse): Add dbg_cnt.
21421         * ifcvt.c (gate_handle_if_conversion): Same.
21422         (gate_handle_if_after_combine): Same.
21423         (gate_handle_if_after_reload): Same.
21424         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
21425
21426 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
21427
21428         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
21429         line sizes.
21430         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
21431
21432 2008-02-26  Jason Merrill  <jason@redhat.com>
21433
21434         PR c++/35315
21435         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
21436         alone if it's the naming decl for the type's main variant.
21437
21438 2008-02-26  Tom Tromey  <tromey@redhat.com>
21439
21440         * system.h (USE_MAPPED_LOCATION): Poison.
21441         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
21442         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
21443         (make_goto_expr_edges): Likewise.
21444         (remove_bb): Likewise.
21445         (execute_warn_function_return): Likewise.
21446         * basic-block.h (struct edge_def) <goto_locus>: Change type to
21447         location_t.
21448         * c-common.c (fname_decl): Remove old location code.
21449         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
21450         location code.
21451         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
21452         variant.
21453         (ASM_INPUT_SOURCE_LOCATION): Likewise.
21454         (gen_rtx_ASM_INPUT): Likewise.
21455         (gen_rtx_ASM_INPUT_loc): Likewise.
21456         (get_rtx_asm_OPERANDS): Remove.
21457         * cfglayout.c (insn_locators_alloc): Remove old location code.
21458         (set_curr_insn_source_location): Likewise.
21459         (curr_insn_locator): Likewise.
21460         * print-tree.c (print_node): Remove old location code.
21461         * tree-mudflap.c (mf_varname_tree): Remove old location code.
21462         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
21463         * cfgexpand.c (expand_gimple_cond_expr): Don't use
21464         location_from_locus.
21465         (construct_exit_block): Remove old location code.
21466         * emit-rtl.c (force_next_line_note): Remove old location code.
21467         * profile.c (branch_prob): Remove old location code.
21468         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
21469         LOC_LINE): Remove old-location variants.
21470         * langhooks.c (lhd_print_error_function): Remove old location
21471         code.
21472         * configure, config.in: Rebuilt.
21473         * configure.ac (--enable-mapped-location): Remove.
21474         * c-decl.c (c_init_decl_processing): Remove old location code.
21475         (finish_function): Likewise.
21476         * recog.c (decode_asm_operands): Remove old location code.
21477         * c-pch.c (c_common_read_pch): Remove old location code.
21478         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
21479         variants.
21480         * gimple-low.c (lower_function_body): Remove old location code.
21481         * toplev.c (unknown_location): Remove.
21482         (push_srcloc): Remove old-location variant.
21483         (process_options): Remove old location code.
21484         (lang_dependent_init): Likewise.
21485         * input.h (UNKNOWN_LOCATION): Move definition.
21486         (location_t): Undeprecate.
21487         (source_locus): Remove.
21488         (location_from_locus): Remove.
21489         (struct location_s): Remove.
21490         Remove all old-location code.
21491         (input_line, input_filename): Remove.
21492         * final.c (final_scan_insn): Remove old location code.
21493         * diagnostic.c (diagnostic_build_prefix): Remove
21494         USE_MAPPED_LOCATION test.
21495         * tree.h (gimple_stmt) <locus>: Now a location_t.
21496         (tree_exp) <locus>: Likewise.
21497         (DECL_IS_BUILTIN): Remove old-location variant.
21498         (annotate_with_file_line, annotate_with_locus): Likewise.
21499         (expr_locus, set_expr_locus): Update.
21500         * tree.c (build1_stat): Remove old location code.
21501         (last_annotated_node): Remove.
21502         (annotate_with_file_line): Remove old-location variant.
21503         (annotate_with_locus): Likewise.
21504         (expr_location): Remove old location code.
21505         (set_expr_location): Likewise.
21506         (expr_has_location): Likewise.
21507         (expr_locus): Likewise.
21508         (set_expr_locus): Likewise.
21509         (expr_filename): Don't use location_from_locus.
21510         (expr_lineno): Likewise.
21511         * rtl-error.c (location_for_asm): Remove old location code.
21512         * c-lex.c (cb_line_change): Remove old location code.
21513         (fe_file_change): Likewise.
21514         (cb_def_pragma): Likewise.
21515         (c_lex_with_flags): Likewise.
21516         * gengtype.c (do_typedef): Don't special-case location types.
21517         (define_location_structures): Remove.
21518         (main): Don't call define_location_structures.
21519         * tree-pretty-print.c (dump_implicit_edges): Remove old location
21520         code.
21521
21522 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21523
21524         PR 26264
21525         * builtins.def (BUILT_IN_STDARG_START): Remove.
21526         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
21527         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
21528         * tree-inline.c (inline_forbidden_p_1): Likewise.
21529
21530 2008-02-26  Richard Guenther  <rguenther@suse.de>
21531
21532         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21533         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21534         (lookup_decl_from_uid): Declare.
21535         (remove_decl_from_map): Likewise.
21536         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21537         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21538         (decl_for_uid_map): New global hashtable mapping DECL_UID
21539         to the decl tree.
21540         (init_ttree): Allocate it.
21541         (insert_decl_to_uid_decl_map): New helper function.
21542         (make_node_stat): Insert new decls into the map.
21543         (copy_node_stat): Likewise.
21544         (lookup_decl_from_uid): New function.
21545         (remove_decl_from_map): Likewise.
21546         (print_decl_for_uid_map_statistics): New helper.
21547         (dump_tree_statistics): Call it.
21548
21549         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21550         (referenced_var_iterator): Adjust.
21551         (FOR_EACH_REFERENCED_VAR): Adjust.
21552         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21553         (num_referenced_vars): Adjust.
21554         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21555         (first_referenced_var): Remove.
21556         (end_referenced_vars_p): Likewise.
21557         (next_referenced_var): Likewise.
21558         (referenced_var_iterator_set): New helper function.
21559         * tree-dfa.c (referenced_var_lookup): Adjust.
21560         (referenced_var_check_and_insert): Likewise.
21561         (remove_referenced_var): Likewise.
21562         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21563         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21564         (verify_call_clobbering): Likewise.
21565         (verify_memory_partitions): Likewise.
21566         (init_tree_ssa): Allocate bitmap instead of hashtable for
21567         referenced_vars.
21568         (delete_tree_ssa): Adjust.
21569         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21570         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21571         (compute_tag_properties): Likewise.
21572         (set_initial_properties): Likewise.
21573         (find_partition_for): Likewise.
21574         (update_reference_counts): Likewise.
21575         (dump_may_aliases_for): Likewise.
21576         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21577         (add_call_clobber_ops): Likewise.
21578         (add_call_read_ops): Likewise.
21579         (get_asm_expr_operands): Likewise.
21580         * tree-into-ssa.c (dump_decl_set): Likewise.
21581         (update_ssa): Likewise.
21582         * tree-sra.c (scan_function): Likewise.
21583         (decide_instantiations): Likewise.
21584         (scalarize_parms): Likewise.
21585         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21586         (dsa_named_for): Likewise.
21587         * tree-ssa-structalias.c (update_alias_info): Likewise.
21588         (merge_smts_into): Likewise.
21589
21590 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21591
21592         PR 34351
21593         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
21594         * c-opts.c (c_common_handle_option): Wall enables
21595         Wvolatile-register-var.
21596         * common.opt: Move Wvolatile-register-var to...
21597         * c.opt: ...here.
21598
21599 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21600
21601         * common.opt (Wlarger-than=): New.
21602         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
21603         -Wlarger-than=.
21604         * opts.c (common_handle_option): Handle -Wlarger-than=.
21605         * optc-gen.awk: Likewise.
21606         * opth-gen.awk: Likewise.
21607         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
21608         * tree-optimize.c (tree_rest_of_compilation): Likewise.
21609
21610 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
21611
21612         * c-common.c (match_case_to_enum_1): Add appropriate
21613         OPT_W* parameter to warning.
21614         (c_do_switch_warnings): Likewise.
21615         * c-typeck.c (warning_init): Add one more parameter following
21616         'warning' function.
21617         (push_init_level): Update call to warning_init.
21618         (pop_init_level): Likewise.
21619         (add_pending_init): Likewise.
21620         (output_init_element: Likewise.
21621
21622 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21623
21624         PR 28322
21625         * toplev.c (toplev_main): If there are warnings or error, print
21626         errors for ignored options.
21627         * opts.c (ignored_options): New static variable.
21628         (postpone_unknown_option_error): New.
21629         (print_ignored_options): New.
21630         (handle_option): Postpone errors for unknown -Wno-* options.
21631         * opts.h (print_ignored_options): Declare.
21632
21633 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
21634
21635         * config/mips/mips.md (loadgp_blockage, blockage): Change type
21636         to "ghost".
21637
21638 2008-02-25  Richard Guenther  <rguenther@suse.de>
21639
21640         Revert:
21641         2008-02-25  Richard Guenther  <rguenther@suse.de>
21642
21643         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21644         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21645         (lookup_decl_from_uid): Declare.
21646         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21647         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21648         (decl_for_uid_map): New global hashtable mapping DECL_UID
21649         to the decl tree.
21650         (init_ttree): Allocate it.
21651         (insert_decl_to_uid_decl_map): New helper function.
21652         (make_node_stat): Insert new decls into the map.
21653         (copy_node_stat): Likewise.
21654         (lookup_decl_from_uid): New function.
21655         (print_decl_for_uid_map_statistics): New helper.
21656         (dump_tree_statistics): Call it.
21657
21658         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21659         (referenced_var_iterator): Adjust.
21660         (FOR_EACH_REFERENCED_VAR): Adjust.
21661         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21662         (num_referenced_vars): Adjust.
21663         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21664         (first_referenced_var): Remove.
21665         (end_referenced_vars_p): Likewise.
21666         (next_referenced_var): Likewise.
21667         (referenced_var_iterator_set): New helper function.
21668         * tree-dfa.c (referenced_var_lookup): Adjust.
21669         (referenced_var_check_and_insert): Likewise.
21670         (remove_referenced_var): Likewise.
21671         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21672         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21673         (verify_call_clobbering): Likewise.
21674         (verify_memory_partitions): Likewise.
21675         (init_tree_ssa): Allocate bitmap instead of hashtable for
21676         referenced_vars.
21677         (delete_tree_ssa): Adjust.
21678         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21679         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21680         (compute_tag_properties): Likewise.
21681         (set_initial_properties): Likewise.
21682         (find_partition_for): Likewise.
21683         (update_reference_counts): Likewise.
21684         (dump_may_aliases_for): Likewise.
21685         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21686         (add_call_clobber_ops): Likewise.
21687         (add_call_read_ops): Likewise.
21688         (get_asm_expr_operands): Likewise.
21689         * tree-into-ssa.c (dump_decl_set): Likewise.
21690         (update_ssa): Likewise.
21691         * tree-sra.c (scan_function): Likewise.
21692         (decide_instantiations): Likewise.
21693         (scalarize_parms): Likewise.
21694         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21695         (dsa_named_for): Likewise.
21696         * tree-ssa-structalias.c (update_alias_info): Likewise.
21697         (merge_smts_into): Likewise.
21698
21699 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
21700
21701         PR fortran/29549
21702         * doc/invoke.texi (-fcx-limited-range): Document new option.
21703         * toplev.c (process_options): Handle -fcx-fortran-rules.
21704         * common.opt: Add documentation for -fcx-fortran-rules.
21705
21706 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
21707
21708         PR c/35162
21709         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
21710         actual behaviour and C99.
21711
21712 2008-02-26  Ben Elliston  <bje@au.ibm.com>
21713
21714         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
21715         (ASM_CPU_POWER6_SPEC): Likewise.
21716         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
21717         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
21718         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
21719
21720 2008-02-25  Richard Guenther  <rguenther@suse.de>
21721
21722         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
21723         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
21724         (lookup_decl_from_uid): Declare.
21725         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
21726         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
21727         (decl_for_uid_map): New global hashtable mapping DECL_UID
21728         to the decl tree.
21729         (init_ttree): Allocate it.
21730         (insert_decl_to_uid_decl_map): New helper function.
21731         (make_node_stat): Insert new decls into the map.
21732         (copy_node_stat): Likewise.
21733         (lookup_decl_from_uid): New function.
21734         (print_decl_for_uid_map_statistics): New helper.
21735         (dump_tree_statistics): Call it.
21736
21737         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
21738         (referenced_var_iterator): Adjust.
21739         (FOR_EACH_REFERENCED_VAR): Adjust.
21740         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
21741         (num_referenced_vars): Adjust.
21742         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
21743         (first_referenced_var): Remove.
21744         (end_referenced_vars_p): Likewise.
21745         (next_referenced_var): Likewise.
21746         (referenced_var_iterator_set): New helper function.
21747         * tree-dfa.c (referenced_var_lookup): Adjust.
21748         (referenced_var_check_and_insert): Likewise.
21749         (remove_referenced_var): Likewise.
21750         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
21751         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21752         (verify_call_clobbering): Likewise.
21753         (verify_memory_partitions): Likewise.
21754         (init_tree_ssa): Allocate bitmap instead of hashtable for
21755         referenced_vars.
21756         (delete_tree_ssa): Adjust.
21757         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
21758         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
21759         (compute_tag_properties): Likewise.
21760         (set_initial_properties): Likewise.
21761         (find_partition_for): Likewise.
21762         (update_reference_counts): Likewise.
21763         (dump_may_aliases_for): Likewise.
21764         * tree-ssa-operands.c (add_virtual_operand): Likewise.
21765         (add_call_clobber_ops): Likewise.
21766         (add_call_read_ops): Likewise.
21767         (get_asm_expr_operands): Likewise.
21768         * tree-into-ssa.c (dump_decl_set): Likewise.
21769         (update_ssa): Likewise.
21770         * tree-sra.c (scan_function): Likewise.
21771         (decide_instantiations): Likewise.
21772         (scalarize_parms): Likewise.
21773         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
21774         (dsa_named_for): Likewise.
21775         * tree-ssa-structalias.c (update_alias_info): Likewise.
21776         (merge_smts_into): Likewise.
21777
21778 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
21779
21780         PR target/35258
21781         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
21782         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
21783         * alias.h (nonoverlapping_memrefs_p): Likewise.
21784
21785 2008-02-25  Jan Beulich  <jbeulich@novell.com>
21786
21787         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
21788         * config/i386/netware-libgcc.exp: Add __bswap?i2,
21789         __emultls_get_address, __emultls_register_common,
21790         __floatundi?f, and _Unwind_GetIPInfo.
21791         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
21792         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
21793         (gen_regparm_prefix): Likewise.
21794         (i386_nlm_encode_section_info): Sync with
21795         config/i386/winnt.c:i386_pe_encode_section_info().
21796         (i386_nlm_maybe_mangle_decl_assembler_name): New.
21797         i386_nlm_mangle_decl_assembler_name): New.
21798         (netware_override_options): New.
21799         * config/i386/netware.h (netware_override_options): Declare.
21800         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
21801         (i386_nlm_mangle_decl_assembler_name): Declare.
21802         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
21803
21804 2008-02-25  Ben Elliston  <bje@au.ibm.com>
21805
21806         PR other/32948
21807         * c-decl.c (grokdeclarator): Remove unused local variables
21808         `typedef_type' and `type_as_written'.
21809         * bb-reorder.c
21810         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
21811         unused local variable `has_hot_blocks'.
21812         (fix_crossing_conditional_branches): Remove unused local variable
21813         `prev_bb'.
21814
21815 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
21816
21817         PR middle-end/19984
21818         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
21819         using DEF_C99_BUILTIN.
21820         (BUILT_IN_NANF): Ditto.
21821         (BUILT_IN_NANL): Ditto.
21822
21823 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
21824             Revital Eres  <eres@il.ibm.com>
21825
21826         * modulo-sched.c (calculate_must_precede_follow): Address TODO
21827         regarding the order of two dependent insns in the same row.
21828
21829 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
21830
21831         * stor-layout.c (layout_decl): Do not bump the alignment of a
21832         bit-field to more than byte alignment if it is packed.
21833
21834 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
21835
21836         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
21837         e300c2 and e300c3.
21838
21839 2008-02-24  Diego Novillo  <dnovillo@google.com>
21840
21841         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
21842
21843         PR 33738
21844         * tree-vrp.c (vrp_evaluate_conditional): With
21845         -Wtype-limits, emit a warning when comparing against a
21846         constant outside the natural range of OP0's type.
21847         * c.opt (Wtype-limits): Move ...
21848         * common.opt (Wtype-limits): ... here.
21849
21850 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
21851
21852         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
21853         * config/rs6000/e300c2c3.md: New file.
21854         * config/rs6000/rs6000.c (processor_costs): Add new costs for
21855         e300c2 and e300c3.
21856         (rs6000_override_options): Add e300c2 and e300c3 cases to
21857         processor_target_table. Do not allow usage of Altivec or Spe
21858         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
21859         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
21860         * config/rs6000/rs6000.h (processor_type): Add
21861         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
21862         (ASM_CPU_SPEC): Add e300c2 and e300c3.
21863         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
21864         and ppce300c3. Include e300c2c3.md.
21865
21866 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
21867
21868         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
21869         instead of TARGET_STRICT_ALIGN.
21870
21871 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
21872
21873         * explow.c (memory_address): Assert that the generated address is
21874         valid.
21875
21876 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21877
21878         PR target/25477
21879         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
21880         * config/darwin-ppc-ldouble-patch.def: New file.
21881         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
21882         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
21883         SUBTARGET_INIT_BUILTINS if defined.
21884         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
21885         New functions.
21886
21887 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21888
21889         PR rtl-opt/33512
21890         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
21891         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
21892
21893 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21894
21895         PR pch/35027
21896         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
21897         file" warning condtional on -Winvalid-PCH.
21898
21899 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
21900
21901         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
21902
21903 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
21904
21905         PR target/22076
21906         PR target/34256
21907         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
21908         prevent reload from using MMX registers.
21909         (*mov<mode>_internal): Ditto.
21910         (*movv2sf_internal_rex64): Ditto.
21911         (*movv2sf_internal): Ditto.
21912
21913 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21914
21915         PR documentation/31569
21916         * doc/install.texi2html: Use makeinfo --no-number-sections.
21917
21918 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21919
21920         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
21921         ensure that we can address an entire entity > 8 bytes.  Don't
21922         generate reg+reg addressing for such data.
21923
21924 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21925
21926         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
21927         strings when optimizing for size, unless the target cares about
21928         alignment.
21929
21930 2008-02-22  Tom Tromey  <tromey@redhat.com>
21931
21932         * regclass.c (current_pass): Remove declaration.
21933
21934 2008-02-22  Anatoly Sokolov <aesok@post.ru>
21935
21936         * config/avr/libgcc.S (__RAMPZ__): Define.
21937         (__do_copy_data): Add for devices with 128KB code memory.
21938
21939 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
21940
21941         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
21942         Use spe_abi.
21943         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
21944
21945 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
21946
21947         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
21948         GENNONACR_REGS.
21949
21950 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21951
21952         PR c/19999
21953         * c-typeck.c (build_binary_op): Warn about floating point
21954         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
21955
21956 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
21957
21958         PR target/34526
21959         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
21960         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
21961         add vrsave.
21962         (rs6000_override_options): Set altivec_abi as default, not override,
21963         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
21964         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
21965         is used; use new member spe_abi.
21966         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
21967         spe_abi and altivec_abi.
21968
21969 2008-02-22  Tomas Bily  <tbily@suse.cz>
21970
21971         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
21972
21973 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21974
21975         PR bootstrap/35273
21976         * config.build (build_file_translate): Set to `CMD //c' only if
21977         it works.
21978         * Makefile.in (build_file_translate): Improve comment.
21979
21980 2008-02-21  Jan Hubicka  <jh@suse.cz>
21981
21982         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
21983         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
21984         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
21985
21986 2008-02-21  Michael Matz  <matz@suse.de>
21987
21988         PR target/35264
21989         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
21990
21991 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
21992
21993         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
21994         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
21995         as insn constraint.
21996         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
21997         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
21998         SSE_VEC_FLOAT_MODE_P as insn constraint.
21999         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
22000         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
22001         sse4a_movntdf using MODEF mode iterator.
22002         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
22003         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
22004         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
22005         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
22006         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
22007         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
22008         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
22009
22010 2008-02-21  Richard Guenther  <rguenther@suse.de>
22011
22012         * tree.def (PAREN_EXPR): New tree code.
22013         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
22014         and PAREN_EXPR.
22015         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
22016         * expr.c (expand_expr_real_1): Likewise.
22017         * tree-inline.c (estimate_num_insns_1): Likewise.
22018         * tree-complex.c (expand_complex_move): Likewise.
22019         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
22020         as plain x.
22021
22022 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22023
22024         PR target/35225
22025         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
22026
22027 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22028
22029         PR target/35190
22030         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
22031
22032         * config/sh/sh.c (find_barrier): Don't go past
22033         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
22034
22035 2008-02-20  DJ Delorie  <dj@redhat.com>
22036
22037         * config/h8300/h8300.md (insv): Force source operand to be a register.
22038
22039         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
22040         as a jump, not as a plain insn.
22041
22042 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
22043
22044         * doc/invoke.texi (Warning Options): Add new option
22045         -Wframe-larger-than=.
22046         (-Wframe-larger-than): Document.
22047
22048         * flags.h (warn_frame_larger_than, frame_larger_than_size):
22049         Add declarations for new option variables.
22050
22051         * final.c (final_start_function): Check the frame size
22052         before emission and issue a Wframe-larger-than warning.
22053
22054         * opts.c (warn_frame_larger_than, frame_larger_than_size):
22055         Add definitions for new option variables.
22056         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
22057
22058         * common.opt (Wframe-larger-than=): New option.
22059
22060 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
22061
22062         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
22063         (<sse>_div<mode>3): Ditto.
22064         (<sse>_vmdiv<mode>3): Ditto.
22065         (<sse>_vmsqrt<mode>2): Ditto.
22066         (*smax<mode>3): Ditto.
22067         (sse5_frcz<mode>2): Ditto.
22068         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
22069         as insn constraint.
22070
22071 2008-02-20  Richard Guenther  <rguenther@suse.de>
22072
22073         PR middle-end/35265
22074         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
22075         be happy with INTEGRAL_TYPE_P.
22076
22077 2008-02-20  Richard Guenther  <rguenther@suse.de>
22078
22079         * fold-const.c (split_tree): Associate floatig-point expressions
22080         if flag_associative_math is set.
22081
22082 2008-02-20  Richard Guenther  <rguenther@suse.de>
22083
22084         * tree.h (fold_real_zero_addition_p): Declare.
22085         * fold-const.c (fold_real_zero_addition_p): Export.
22086         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
22087         floating-point operations with zero and one.
22088
22089 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
22090
22091         * doc/install.texi: Correct references to CFLAGS, replacing them
22092         with BOOT_CFLAGS.  Document flags used during bootstrap for
22093         target libraries.
22094
22095 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
22096
22097         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
22098         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
22099         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
22100         insn constraint.
22101         (smin<mode>3): Ditto from similar patterns.
22102         (smax<mode>3): Ditto.
22103         (*ieee_smin<mode>3): Ditto.
22104         (*ieee_smax<mode>3): Ditto.
22105         * config/i386/sse.md (sse): New mode attribute.
22106         (mov<mode>): Macroize expander from movv4sf and movv2df using
22107         SSEMODEF2P mode iterator.
22108         (<sse>_movnt<mode>): Ditto from similar patterns. Use
22109         SSE_VEC_FLOAT_MODE_P as insn constraint.
22110         (storent<mode>): Ditto.
22111         (storent<mode>): Macroize expander from storentsf and storentdf using
22112         MODEF mode iterator.
22113         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
22114         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
22115         (abs<mode>2): Ditto from similar patterns.
22116         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
22117         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
22118         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
22119         (<sse>_vmsqrt<mode>2): Ditto.
22120         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
22121         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
22122         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
22123         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
22124         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
22125         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
22126         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
22127         insn constraint.
22128         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
22129         iterator and SSE_FLOAT_MODE_P as insn constraint.
22130         (<sse>_ucomi): Ditto from similar patterns.
22131         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
22132         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
22133         SSE_VEC_FLOAT_MODE_P as insn constraint.
22134         (vcond<mode>): Ditto from similar patterns.
22135         (and<mode>3, *and<mode>3): Ditto.
22136         (<sse>_nand<mode>3): Ditto.
22137         (ior<mode>3, *ior<mode>3): Ditto.
22138         (xor<mode>3, *xor<mode>3): Ditto.
22139         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
22140         iterator and SSE_FLOAT_MODE_P as insn constraint.
22141         (*nand<mode>3): Ditto from similar patterns.
22142         (*ior<mode>3): Ditto.
22143         (*xor<mode>3): Ditto.
22144
22145 2008-02-20  Ira Rosen  <irar@il.ibm.com>
22146
22147         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
22148         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
22149         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
22150
22151 2008-02-19  Jan Hubicka  <jh@suse.cz>
22152
22153         * predict.c (tree_bb_level_predictions): Remove variable next
22154         mistakely introduced by previous commit.
22155
22156 2008-02-19  Jan Hubicka  <jh@suse.cz>
22157
22158         * predict.c (predict_paths_leading_to): Rewrite.
22159         (predict_paths_for_bb): New.
22160         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
22161
22162 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22163
22164         PR bootstrap/35218
22165         * Makefile.in (build_file_translate): New.
22166         (gcc-vers.texi): Use it for translating $(abs_srcdir).
22167         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
22168         * configure.ac (build_file_translate): Substitute it.
22169         * configure: Regenerate.
22170
22171 2008-02-19  Jan Hubicka  <jh@suse.cz>
22172
22173         PR rtl-optimization/34408
22174         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
22175         invalid sharing.
22176
22177 2008-02-19  Jan Hubicka  <jh@suse.cz>
22178
22179         PR middle-end/28779
22180         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
22181         call_expr.
22182
22183 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
22184
22185         PR Ada/35186
22186         * config/i386/i386-modes.def: Revert the last DI alignment
22187         change until Ada people can look into it.
22188
22189 2008-02-19  Nick Clifton  <nickc@redhat.com>
22190
22191         * opts.c (print_specific_help): Fix typo in --help text.
22192
22193 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
22194
22195         PR target/35239
22196         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
22197         32-bit inline asm without asm alternatives for host GCC < 3.0.
22198
22199 2008-02-19  Richard Guenther  <rguenther@suse.de>
22200
22201         PR tree-optimization/34989
22202         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
22203         Allow propagation to INDIRECT_REF if we can simplify only.
22204
22205 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22206
22207         * c-common.c (warn_for_collisions_1): Use appropriate option when
22208         warning.
22209
22210 2008-02-19  Nick Clifton  <nickc@redhat.com>
22211
22212         PR other/31349
22213         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
22214         (handle_options): Fix indentation.
22215         (print_filtered_help): If no language-specific options were
22216         displayed tell the user how to list all the options supported by
22217         the language's front-end.
22218         (print_specific_help): Fix indentation and remove duplicate line.
22219         (common_handle_option): Handle the -v option.
22220         For --help enable the display of undocumented options if the -v
22221         switch has been included on the command line.
22222         For --help= check for overlaps in the arguments between the option
22223         classes and the language names and issue a warning when they
22224         cannot be disambiguated.
22225         * c.opt (v): Pass on to the common option handler.
22226
22227 2008-02-19  Revital Eres  <eres@il.ibm.com>
22228
22229         * modulo-sched.c (sms_schedule): Change dump message when
22230         create_ddg function fails.
22231         (try_scheduling_node_in_cycle): Rename row to cycle.
22232         (print_partial_schedule): Rename CYCLE to ROW.
22233
22234 2008-02-19  Christian Bruel  <christian.bruel@st.com>
22235             Zdenek Dvorak  <ook@ucw.cz>
22236
22237         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
22238
22239 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
22240
22241         PR target/33555
22242         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
22243         (*x86_movdicc_0_m1_se): Ditto.
22244
22245 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
22246
22247         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
22248         (CMPtype): Define as __gcc_CMPtype.
22249         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
22250         (CMPtype): Define as __gcc_CMPtype.
22251
22252 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
22253
22254         Support valgrind 3.3 for --enable-checking=valgrind.
22255         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
22256         here.
22257         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
22258         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
22259         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
22260         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
22261         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
22262         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
22263         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
22264         respectively.
22265         * ggc-zone.c: Similar.
22266         * ggc-page.c: Similar.
22267
22268 2008-02-19  Paul Brook  <paul@codesourcery.com>
22269
22270         PR target/35071
22271         * config/arm/ieee754-df.S: Fix do_it typo.
22272         * config/arm/ieee754-sf.S: Fix do_it typo.
22273
22274 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
22275
22276         PR target/35189
22277         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
22278         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
22279         (OPTION_MASK_ISA_SSE_SET): Likewise.
22280         (OPTION_MASK_ISA_SSE2_SET): Likewise.
22281         (OPTION_MASK_ISA_SSE3_SET): Likewise.
22282         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
22283         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
22284         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
22285         (OPTION_MASK_ISA_SSE4_SET): Likewise.
22286         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
22287         (OPTION_MASK_ISA_SSE5_SET): Likewise.
22288         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
22289         (OPTION_MASK_ISA_MMX_UNSET): Updated.
22290         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
22291         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
22292         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
22293         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
22294         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
22295         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
22296         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
22297         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
22298         (OPTION_MASK_ISA_SSE4): Removed.
22299         (ix86_handle_option): Turn on bits in ix86_isa_flags and
22300         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
22301         (override_options): Don't turn on implied SSE/MMX bits in
22302         ix86_isa_flags.
22303
22304 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
22305
22306         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22307         32bit host.
22308
22309 2008-02-18  Joey Ye  <joey.ye@intel.com>
22310
22311         PR middle-end/34921
22312         * tree-nested.c (insert_field_into_struct): Set type alignment
22313         to field alignment if the former is less than the latter.
22314
22315 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
22316
22317         * BASE-VER: Set to 4.4.0.
22318
22319 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
22320
22321         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
22322         * doc/cfg.texi: Likewise.
22323         * doc/extend.texi: Likewise.
22324         * doc/gty.texi: Likewise.
22325         * doc/invoke.texi: Likewise.
22326         * doc/loop.texi: Likewise.
22327         * doc/md.texi: Likewise.
22328         * doc/passes.texi: Likewise.
22329         * doc/rtl.texi: Likewise.
22330         * doc/sourcebuild.texi: Likewise.
22331         * doc/tm.texi: Likewise.
22332         * doc/tree-ssa.texi: Likewise.
22333
22334 2008-02-17  Richard Guenther  <rguenther@suse.de>
22335
22336         PR middle-end/35227
22337         * tree-complex.c (init_parameter_lattice_values): Handle parameters
22338         without default definition.
22339
22340 2008-02-17  Richard Guenther  <rguenther@suse.de>
22341
22342         PR tree-optimization/35231
22343         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
22344         if A | B != 1.
22345
22346 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
22347
22348         Revert:
22349         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22350         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
22351         libgcc_cmp_return mode.
22352
22353 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22354
22355         PR c/28368
22356         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
22357
22358 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
22359
22360         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
22361         multilibs.
22362
22363 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22364
22365         * doc/c-tree.texi: Use `@.' where appropriate.
22366         * doc/extend.texi: Likewise.
22367         * doc/install.texi: Likewise.
22368         * doc/invoke.texi: Likewise.
22369         * doc/loop.texi: Likewise.
22370         * doc/makefile.texi: Likewise.
22371         * doc/md.texi: Likewise.
22372         * doc/passes.texi: Likewise.
22373         * doc/standards.texi: Likewise.
22374         * doc/tm.texi: Likewise.
22375
22376 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
22377
22378         PR middle-end/35196
22379         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
22380         in entry_bb.
22381         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
22382         rather than in entry_bb.
22383
22384 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22385
22386         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
22387         libgcc_cmp_return mode.
22388
22389 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
22390
22391         PR middle-end/35130
22392         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
22393         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
22394
22395 2008-02-15  Richard Guenther  <rguenther@suse.de>
22396             Zdenek Dvorak  <ook@ucw.cz>
22397
22398         PR tree-optimization/35164
22399         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
22400         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
22401         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
22402         Only propagate addresses which do not have abnormal SSA_NAMEs
22403         in their operands.
22404
22405 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
22406
22407         PR target/35088
22408         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
22409
22410 2008-02-15  Jan Hubicka  <jh@suse.cz>
22411
22412         PR middle-end/35149
22413         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
22414
22415 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22416
22417         PR middle-end/34621
22418         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
22419         when calculating alignment_pad.
22420
22421 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
22422
22423         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
22424         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
22425         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
22426         and STACK_BOUNDARY define.
22427
22428 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
22429
22430         PR preprocessor/35061
22431         * c-pragma.c (handle_pragma_pop_macro): Check that
22432         pushed_macro_table has been allocated.
22433
22434 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
22435
22436         PR middle-end/35136
22437         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
22438         (force_gimple_operand): Likewise.
22439         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
22440         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
22441         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
22442         (find_interesting_uses_address): Check addressability and alignment
22443         of the base expression only after substituting bases of IVs into it.
22444
22445 2008-02-14  Michael Matz  <matz@suse.de>
22446
22447         PR target/34930
22448         * function.c (instantiate_virtual_regs_in_insn): Reload address
22449         before falling back to reloading the whole operand.
22450
22451 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
22452
22453         * config/s390/s390.c (s390_mainpool_start): Emit the pool
22454         before the first section switch note.
22455
22456 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
22457
22458         * doc/bugreport.texi: Update copyright years.
22459         * doc/c-tree.texi: Likewise.
22460         * doc/cfg.texi: Likewise.
22461         * doc/cpp.texi: Likewise.
22462         * doc/cppinternals.texi: Likewise.
22463         * doc/fragments.texi: Likewise.
22464         * doc/frontends.texi: Likewise.
22465         * doc/gcc.texi: Likewise.
22466         * doc/gty.texi: Likewise.
22467         * doc/hostconfig.texi: Likewise.
22468         * doc/implement-c.texi: Likewise.
22469         * doc/libgcc.texi: Likewise.
22470         * doc/loop.texi: Likewise.
22471         * doc/makefile.texi: Likewise.
22472         * doc/options.texi: Likewise.
22473         * doc/passes.texi: Likewise.
22474         * doc/rtl.texi: Likewise.
22475         * doc/sourcebuild.texi: Likewise.
22476         * doc/standards.texi: Likewise.
22477         * doc/tree-ssa.texi: Likewise.
22478         * doc/trouble.texi: Likewise.
22479
22480         * doc/extend.texi: Use @: or add comma where appropriate.
22481         * doc/invoke.texi: Likewise.
22482         * doc/tm.texi: Likewise.
22483
22484 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
22485
22486         PR target/34393
22487         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
22488         to a reg.
22489
22490 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
22491
22492         * doc/md.texi (clz, ctz): Add reference.
22493         * doc/rtl.texi (clz, ctz): Likewise.
22494
22495 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22496
22497         PR other/35148
22498         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
22499         srcdir.
22500
22501 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
22502
22503         * config/s390/s390.c (struct constant_pool): New field
22504         emit_pool_after added.
22505         (s390_mainpool_start): Set the emit_pool_after flag according
22506         to the section switch notes.
22507         (s390_mainpool_finish): Consider emit_pool_after when emitting
22508         the literal pool at the end of the function.
22509         (s390_chunkify_start): Force literal pool splits at section
22510         switch notes.
22511
22512 2008-02-13  Michael Matz  <matz@suse.de>
22513
22514         PR debug/35065
22515         * var-tracking.c (clobber_variable_part): Correctly traverse the
22516         list.
22517
22518 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22519
22520         PR 29673
22521         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
22522         Add -fdump-ipa-inline.
22523         * tree-dump.c (dump_files): Remove tree-inlined dump.
22524         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
22525
22526 2008-02-12  Richard Guenther  <rguenther@suse.de>
22527
22528         PR tree-optimization/35171
22529         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
22530         default defs.
22531
22532 2008-02-12  Richard Guenther  <rguenther@suse.de>
22533
22534         PR middle-end/35163
22535         * fold-const.c (fold_widened_comparison): Use get_unwidened in
22536         value-preserving mode.  Disallow final truncation.
22537
22538 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
22539
22540         PR middle-end/35136
22541         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
22542         code from here to...
22543         (force_gimple_operand): ...here.
22544
22545 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
22546
22547         PR c++/35144
22548         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
22549         non-compatible pointers.
22550         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
22551         different FIELD_DECLs, try harder by comparing field offsets, sizes
22552         and types.
22553
22554         PR inline-asm/35160
22555         * function.c (match_asm_constraints_1): Don't replace the same input
22556         multiple times.
22557
22558 2008-02-12  Anatoly Sokolov <aesok@post.ru>
22559
22560         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
22561         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
22562         (expand_epilogue): Restore RAMPZ register.
22563         * config/avr/avr.md (RAMPZ_ADDR): New constant.
22564
22565 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
22566
22567         * config/i386/cygwin.asm: (__alloca): Correct calling
22568         convention and alignment.
22569         (__chkstk): Force 8 byte stack alignment.
22570
22571 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
22572             Richard Guenther  <rguenther@suse.de>
22573
22574         PR tree-optimization/33992
22575         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
22576         the zero we compare against.
22577
22578 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
22579
22580         PR libfortran/35063
22581         * gthr-win32.h (__gthread_mutex_destroy_function): New function
22582         to CloseHandle after unlocking to prevent accumulation of handle
22583         count.
22584
22585 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22586
22587         PR middle_end/34150
22588         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
22589         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
22590         and update LABEL_NUSES during and after reload.
22591
22592 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
22593
22594         PR middle-end/34627
22595         * combine.c (simplify_if_then_else): Make sure the comparison is
22596         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
22597
22598 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
22599
22600         PR bootstrap/35051
22601         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
22602         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
22603         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
22604         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
22605         * tree.h (get_type_static_bounds): Likewise.
22606
22607 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22608
22609         * doc/invoke.texi (Option Summary, C++ Dialect Options)
22610         (Objective-C and Objective-C++ Dialect Options, Warning Options):
22611         Make -Wfoo language annotations match what the compiler outputs.
22612
22613 2008-02-08  Sa Liu  <saliu@de.ibm.com>
22614
22615         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
22616         intrinsics spu_convts, spu_convtu, spu_convtf.
22617
22618 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
22619
22620         * doc/extend.texi (Function Attributes) <noinline>: Mention
22621         asm ("") as method to keep calls.
22622
22623 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22624
22625         PR other/32754
22626         * doc/options.texi (Options): Replace references to opts.sh with
22627         optc-gen.awk.
22628         * opts-common.c: Likewise.
22629         * optc-gen.awk: Likewise.
22630
22631 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
22632
22633         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
22634
22635 2008-02-07  Richard Henderson  <rth@redhat.com>
22636
22637         PR rtl-opt/33410
22638         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
22639         EXPR_LIST for the REG_EQUAL instead of a comparison with a
22640         funny mode.
22641
22642 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
22643
22644         PR tree-optimization/35085
22645         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
22646         for operand entry oe2 in addition to operand entry oe3 in order to
22647         expose more opportunities for vectorizer sum reduction.
22648
22649 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22650
22651         PR other/35107
22652         * Makefile.in (LIBS): Remove $(GMPLIBS).
22653         (cc1-dummy, cc1): Add $(GMPLIBS).
22654
22655 2008-02-06  Jan Hubicka  <jh@suse.cz>
22656
22657         PR target/23322
22658         * i386.md (moddf_integer): Do not produce partial memory stalls for
22659         targets where it hurts.
22660
22661 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
22662
22663         PR target/35083
22664         * optabs.c (expand_float): Do not check for decimal modes when
22665         expanding unsigned integer through signed conversion.
22666
22667 2008-02-06  Nick Clifton  <nickc@redhat.com>
22668
22669         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
22670         inside the clobber with a match_operand and duplicated operand
22671         number in the constraint.
22672         (ineqbranchsi): Delete redundant comment.
22673
22674 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
22675
22676         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
22677         builtin_define ("__USE_INIT_FINI__").
22678         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
22679         -msx multilibs.
22680         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
22681
22682 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22683
22684         PR documentation/30330
22685         * doc/invoke.texi (C++ Dialect Options)
22686         (Objective-C and Objective-C++ Dialect Options, Warning Options):
22687         For each warning option -Wfoo that allows -Wno-foo, ensure both
22688         -Wfoo and -Wno-foo are listed in the option index.  Fix index
22689         entry of -Wswitch-default, index -Wnormalized= including the
22690         `=', and -Wlarger-than-@var{len} including @var{len}.
22691
22692 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
22693
22694         * config/i386/i386.md (floatunssisf2): Use
22695         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
22696         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
22697         Macroize expander using MODEF mode iterator.
22698
22699 2008-02-05  Diego Novillo  <dnovillo@google.com>
22700
22701         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
22702
22703         PR 33738
22704         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
22705
22706 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22707
22708         PR other/35070
22709         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
22710
22711 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
22712
22713         PR target/35084
22714         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
22715         to indicate if a message should be generated.
22716         (init_cumulative_args): Updated.
22717         (function_value_32): Likewise.
22718
22719 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
22720
22721         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
22722
22723 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
22724
22725         PR target/35083
22726         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
22727         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
22728
22729 2008-02-04  Diego Novillo  <dnovillo@google.com>
22730
22731         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
22732
22733         PR 33738
22734         * tree-vrp.c (vrp_evaluate_conditional): With
22735         -Wtype-limits, emit a warning when comparing against a
22736         constant outside the natural range of OP0's type.
22737
22738 2008-02-04  Richard Guenther  <rguenther@suse.de>
22739
22740         PR middle-end/33631
22741         * expr.c (count_type_elements): Give for unions instead of
22742         guessing.
22743
22744 2008-02-04  Richard Guenther  <rguenther@suse.de>
22745
22746         PR middle-end/35043
22747         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
22748         to TYPE_DOMAINs base type instead of using bitsizetype here.
22749
22750 2008-02-03  Jason Merrill  <jason@redhat.com>
22751
22752         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
22753
22754 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22755
22756         PR other/29972
22757         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
22758         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
22759         (RS/6000 and PowerPC Options): Fix typos and markup.
22760         * doc/passes.texi (Tree-SSA passes): Likewise.
22761
22762 2008-02-02  Michael Matz  <matz@suse.de>
22763
22764         PR target/35045
22765         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
22766         from record_last_reg_set_info.
22767         (record_last_reg_set_info): Take an RTX argument, iterate over all
22768         constituent hardregs.
22769         (record_last_set_info, record_opr_changes): Change calls to
22770         new signature or to record_last_reg_set_info_regno.
22771
22772 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
22773
22774         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
22775
22776 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
22777
22778         PR rtl-optimization/34773
22779         * reg-notes.def (EQUAL): Mention significance of combination of
22780         REG_EQUAL and REG_RETVAL.
22781         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
22782         insn that has a REG_RETVAL.
22783
22784 2008-02-01  Roger Sayle  <roger@eyesopen.com>
22785
22786         PR bootstrap/33781
22787         * configure.ac (--enable-fixed-point): Disable unless explicitly
22788         requested on IRIX.
22789         * configure: Regenerate.
22790
22791 2008-02-01  Richard Guenther  <rguenther@suse.de>
22792
22793         PR other/35042
22794         * invoke.texi (-finline-limit): Remove no longer true parts
22795         of the documentation.  Note that there is no default value.
22796
22797 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
22798             Mark Mitchell  <mark@codesourcery.com>
22799             Ben Elliston  <bje@au.ibm.com>
22800
22801         PR c/29326
22802         * doc/extend.texi (Other Builtins): Document.
22803
22804 2008-01-31  Tom Browder <tom.browder@gmail.com>
22805
22806         * doc/c-tree.texi (Types): Fix grammar.
22807         (Expression trees): Ditto.
22808         * doc/passes.texi (Tree-SSA passes): Ditto.
22809
22810         * doc/configterms.texi (Configure Terms): Fix typo.
22811         * doc/cpp.texi (Common Predefined Macros): Ditto.
22812         * doc/md.texi (Machine Constraints): Ditto.
22813
22814         * doc/makefile.texi (Makefile): Add comma.
22815
22816 2008-01-31  Tom Browder  <tom.browder@gmail.com>
22817             Gerald Pfeifer  <gerald@pfeifer.com>
22818
22819         * doc/sourcebuild.texi (Front End): Remove references to CVS
22820         and CVSROOT/modules.
22821         (Texinfo Manuals): Replace reference to CVS by one to SVN.
22822         (Back End): Remove reference to CVS.
22823
22824 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
22825
22826         PR target/34900
22827         * config/mips/mips.c (gen_load_const_gp): New function, taking a
22828         comment from...
22829         (mips16_gp_pseudo_reg): ...here.
22830         * config/mips/mips.md (load_const_gp): Replace with...
22831         (load_const_gp_<mode>): ...this :P-based insn.
22832
22833 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22834
22835         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
22836         options. Minor fixes.
22837         (-std): Move reference to standards closer to where language
22838         standards are first mentioned.
22839
22840 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
22841
22842         PR rtl-optimization/34995
22843         * reload.c (alternative_allows_const_pool_ref): Take an rtx
22844         parameter and return a bool.  If the rtx parameter is nonnull,
22845         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
22846         (find_reloads): Update call accordingly.  Pass the new operand
22847         if it needed no address reloads, otherwise pass null.
22848
22849 2008-01-30  Richard Henderson  <rth@redhat.com>
22850
22851         PR c/34993
22852         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
22853         for unbounded arrays.
22854
22855 2008-01-30  Silvius Rus  <rus@google.com>
22856
22857         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
22858
22859 2008-01-30  Jan Hubicka  <jh@suse.cz>
22860
22861         PR target/34982
22862         * i386.c (init_cumulative_args): Use real function declaration when
22863         calling locally.
22864
22865 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
22866
22867         PR rtl-optimization/34998
22868         * global.c (build_insn_chain): Treat non-subreg_lowpart
22869         SUBREGs of pseudos as clobbering all the words covered by the
22870         SUBREG, not just all the bytes.
22871         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
22872         original df_ref rather than an extract parameter.
22873         (global_conflicts): Update call accordingly.
22874
22875 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22876
22877         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
22878         the overflow check to make it easier to read.
22879         (__fixtfdi): Change the type of the ll member in union
22880         long_double to UDItype_x.
22881
22882 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
22883
22884         PR middle-end/34969
22885         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
22886         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
22887         * tree-inline.c (fold_marked_statements): Call
22888         cgraph_update_edges_for_call_stmt if folding a call statement.
22889         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
22890         debug_generic_stmt calls, reset it back afterwards.
22891
22892         PR c/35017
22893         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
22894         static decls.
22895         * c-typeck.c (build_external_ref): Don't pedwarn about
22896         static vars in current function's scope.
22897
22898 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
22899
22900         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
22901
22902 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
22903
22904         PR c/35002
22905         * ipa-struct-reorg.c: Fix spelling.
22906         * params.def: Ditto.
22907
22908 2008-01-29  Richard Guenther  <rguenther@suse.de>
22909
22910         PR middle-end/35006
22911         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
22912         field.
22913         * tree-inline.c (remap_type): Increment remapping_type_depth
22914         around remapping types.
22915         (copy_body_r): Only add referenced variables if they are referenced
22916         from code, not types.
22917
22918 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
22919
22920         PR c++/34055
22921         PR c++/34103
22922         PR c++/34219
22923         PR c++/34606
22924         PR c++/34753
22925         PR c++/34754
22926         PR c++/34755
22927         PR c++/34919
22928         PR c++/34961
22929         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
22930         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
22931
22932 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
22933
22934         PR target/34412
22935         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
22936         pointer for tiny stack.
22937
22938 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
22939
22940         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
22941
22942 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
22943
22944         * config/vx-common.h: Fix typo in comment.
22945
22946 2008-01-28  Ian Lance Taylor  <iant@google.com>
22947
22948         PR c++/34862
22949         PR c++/33407
22950         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
22951         coalesce pointers if they have different DECL_NO_TBAA_P values.
22952         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
22953         between variables with different DECL_NO_TBAA_P values.
22954
22955 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
22956
22957         PR 31535
22958         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
22959         are not legitimate small data references on SPE targets.
22960
22961 2008-01-28  David Daney  <ddaney@avtrex.com>
22962
22963         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
22964
22965 2008-01-28  David Daney  <ddaney@avtrex.com>
22966
22967         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
22968
22969 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
22970
22971         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
22972         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
22973         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
22974         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
22975         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
22976         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
22977         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
22978         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
22979
22980 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22981
22982         * basic-block.h (condjump_equiv_p): Fix comment.
22983
22984 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22985
22986         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
22987         print_generic_stmt_indented): Fix comment.
22988
22989 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
22990
22991         * configure.ac (__stack_chk_fail): Add detecion for availability
22992         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
22993         * configure: Regenerate.
22994
22995 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
22996
22997         PR middle-end/34688
22998         * final.c (output_addr_const): Handle TRUNCATE.
22999
23000 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
23001
23002         PR target/34711
23003         * tree-ssa-loop-ivopts.c (comp_cost): New type.
23004         (zero_cost, infinite_cost): New constants.
23005         (struct cost_pair): Change type of cost to comp_cost.
23006         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
23007         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
23008         New functions.
23009         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
23010         split_address_cost, ptr_difference_cost, difference_cost,
23011         get_computation_cost_at, get_computation_cost,
23012         determine_use_iv_cost_generic, determine_use_iv_cost_address,
23013         determine_use_iv_cost_condition, determine_use_iv_costs,
23014         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
23015         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
23016         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
23017         Change type of cost to comp_cost.
23018         (determine_iv_cost): Increase cost of non-original ivs, instead
23019         of decreasing the cost of original ones.
23020         (get_address_cost): Indicate the complexity of the addressing mode
23021         in comp_cost.
23022         (try_add_cand_for): Prefer using ivs not specific to some object.
23023         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
23024
23025 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
23026             Janis Johnson  <janis187@us.ibm.com>
23027
23028         PR target/34814
23029         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
23030         (TARGET_INSTANTIATE_DECLS): Likewise.
23031         * target.h (expand_to_rtl_hook): New target hook.
23032         (instantiate_decls): Likewise.
23033         * function.c (instantiate_decl): Make non-static.  Rename to...
23034         (instantiate_decl_rtl): ... this.
23035         (instantiate_expr): Use instantiate_decl_rtl.
23036         (instantiate_decls_1): Likewise.
23037         (instantiate_decls): Likewise.
23038         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
23039         * function.h (instantiate_decl_rtl): Add prototype.
23040         * cfgexpand.c (target.h): New include.
23041         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
23042         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
23043         (TARGET_INSTANTIATE_DECLS): Likewise.
23044         (TARGET_INITIALIZER): New target hooks added.
23045         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
23046         New prototype.
23047         * config/rs6000/rs6000.c (tree-flow.h): New include.
23048         (machine_function): Add sdmode_stack_slot field.
23049         (rs6000_alloc_sdmode_stack_slot): New function.
23050         (rs6000_instantiate_decls): Likewise.
23051         (rs6000_secondary_memory_needed_rtx): Likewise.
23052         (rs6000_check_sdmode): Likewise.
23053         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
23054         (TARGET_INSTANTIATE_DECLS): Likewise.
23055         (rs6000_hard_regno_mode_ok): Allow SDmode.
23056         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
23057         (rs6000_emit_move): Handle SDmode.
23058         (function_arg_advance): Likewise.
23059         (function_arg): Likewise.
23060         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
23061         SDmode var args for 32-bit compiles.
23062         (rs6000_secondary_reload_class): Handle SDmode.
23063         (rs6000_output_function_epilogue): Likewise.
23064         (rs6000_function_value): Simplify if statement.
23065         (rs6000_libcall_value): Likewise.
23066         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
23067         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
23068         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
23069         (movsd_hardfloat): New define_insn.
23070         (movsd_softfloat): Likewise.
23071         (movsd_store): Likewise.
23072         (movsd_load): Likewise.
23073         (extendsddd2): Likewise.
23074         (extendsdtd2): Likewise.
23075         (truncddsd2): Likewise.
23076         (movdd_hardfloat64): Fixup comment.
23077         (UNSPEC_MOVSD_LOAD): New constant.
23078         (UNSPEC_MOVSD_STORE): Likewise.
23079
23080 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
23081
23082         PR c++/34965
23083         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
23084         TRUTH_XOR_EXPR.
23085         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
23086         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
23087         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
23088         and TRUTH_XOR_EXPR.
23089
23090 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
23091
23092         PR target/34794
23093         * config.gcc: Separate AIX 5.3 from AIX 6.1.
23094         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
23095         __LONGDOUBLE128 too.
23096         * config/rs6000/aix61.h: New file.
23097
23098 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
23099
23100         PR rtl-optimization/34959
23101         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
23102         popcount and parity rtxes the same mode as their operand.
23103         Truncate or extend the result to the return value's mode
23104         if necessary.
23105
23106 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
23107
23108         PR target/34981
23109         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
23110         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
23111         to GOT_VERSION_REGNUM.
23112         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
23113         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
23114         * config/mips/mips.c (mips_emit_call_insn): New function.
23115         (mips_call_tls_get_addr): Call mips_expand_call directly.
23116         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
23117         emit_call_insn.
23118         (mips16_build_call_stub): Likewise.  Return the call insn or null.
23119         (mips_expand_call): Update the call to mips16_build_call_stub
23120         accordingly and a remove redundant condition.  Assert that MIPS16
23121         stubs do not use lazy binding.  Use mips_emit_call_insn and return
23122         the call insn.
23123         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
23124         TARGET_USE_GOT.
23125         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
23126         (mips_avoid_hazard): Remove hazard_set handling.
23127         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
23128         (UNSPEC_RESTORE_GP): ...this.
23129         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
23130         (FAKE_CALL_REGNO): Rename to...
23131         (GOT_VERSION_REGNUM): ...this.
23132         (type): Add "ghost" value.  Add an associated insn reservation.
23133         (hazard_set): Remove.
23134         (exception_receiver): Rename to...
23135         (restore_gp): ...this and update the unspec identifier accordingly.
23136         (exception_receiver, nonlocal_got_receiver): New expanders.
23137         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
23138         FAKE_CALL_REGNO.  Remove hazard_set attribute.
23139         (set_got_version, update_got_version): New patterns.
23140
23141 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
23142
23143         PR target/34970
23144         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
23145
23146 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
23147
23148         PR other/31955
23149         * doc/install.texi2html: Generate gcc-vers.texi.
23150
23151 2008-01-25  DJ Delorie  <dj@redhat.com>
23152
23153         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
23154
23155 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
23156
23157         * config/c4x: Remove directory.
23158         * config.gcc (crx-*, mt-*): Mark obsolete.
23159         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
23160         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
23161         sh-*-rtemscoff*): Remove cases.
23162         * defaults.h (C4X_FLOAT_FORMAT): Remove.
23163         * real.c (encode_c4x_single, decode_c4x_single,
23164         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
23165         c4x_extended_format): Remove.
23166         * real.h (c4x_single_format, c4x_extended_format): Remove.
23167         * doc/extend.texi (interrupt, naked): Remove mention of attributes
23168         on C4x.
23169         (Pragmas): Remove comment about c4x pragmas.
23170         * doc/install.texi (c4x): Remove target-specific instructions.
23171         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
23172         * doc/md.texi (Machine Constraints): Remove C4x documentation.
23173         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
23174         refer to C4x source files as examples.
23175         (C4X_FLOAT_FORMAT): Remove documentation.
23176
23177 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
23178
23179         * config/bfin/bfin.c (override_options): Reorder tests so that
23180         flag_pic gets enabled for -msep-data.
23181
23182 2008-01-25  Richard Guenther  <rguenther@suse.de>
23183
23184         PR middle-end/32244
23185         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
23186         to its bitfield precision if required.
23187
23188 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
23189
23190         PR middle-end/33880
23191         * tree-nested.c (walk_omp_for): New function.
23192         (convert_nonlocal_reference, convert_local_reference): Call
23193         walk_omp_for on OMP_FOR.
23194         (convert_call_expr): Call walk_body on OMP_FOR's
23195         OMP_FOR_PRE_INIT_BODY.
23196
23197 2008-01-25  Richard Guenther  <rguenther@suse.de>
23198
23199         PR tree-optimization/34966
23200         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
23201         default defs and PHI_NODEs we have to insert after the
23202         defining statement.
23203
23204 2008-01-24  Nick Clifton  <nickc@redhat.com>
23205
23206         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
23207         Provide a default definition.
23208         (LIBGCC2_UNITS_PER_WORD): Likewise.
23209
23210         * config/stormy16/stormy16.c: Include df.h for the prototype
23211         for df_regs_ever_live_p.
23212         (xstormy16_expand_builtin_va_start): Convert the stack offset
23213         into a component_ref and then use POINTER_PLUS_EXPR to add it
23214         to the incoming_virtual_args_rtx.
23215         (xstormy16_gimplify_va_arg_expr): Rename to
23216         xstormy16_gimplify_va_arg_expr.
23217         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
23218         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
23219         xstormy16_gimplify_va_arg_expr.
23220         Fix up some formatting issues.
23221
23222         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
23223         Move to predicates.md.
23224         (xs_hi_general_operand): Likewise.
23225         (xs_hi_nonmemory_operand): Likewise.
23226         * config/stormy16/predicates.md:
23227         (xstormy16_carry_plus_operand): New predicate.
23228         (xs_hi_general_operand): New predicate.
23229         (xs_hi_nonmemory_operand): New predicate.
23230         * config/stormy16/stormy16-protos.h:
23231         (xstormy16_carry_plus_operand): Delete prototype.
23232         (xs_hi_general_operand): Likewise.
23233         (xs_hi_nonmemory_operand): Likewise.
23234
23235         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
23236         modifiers as they are no longer needed and they can trigger
23237         reload spill failures.
23238
23239         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
23240         with a match_operand in order to help reload.
23241
23242         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
23243         constraint with 'e' for the 8th alternative as this version of
23244         the mov.w instruction only accepts the lower 8 registers.
23245
23246 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
23247
23248         PR target/34856
23249         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
23250         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
23251         vector elements.
23252
23253 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
23254
23255         PR middle-end/33333
23256         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
23257
23258 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
23259
23260         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
23261         New functions.
23262         (remove_structure): Update allocations list before removing structure.
23263
23264 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
23265
23266         * ipa-struct-reorg.c (is_safe_cond_expr,
23267         create_new_stmts_for_cond_expr): Use integer_zerop function,
23268         that recognize not only zero-pointer, but zero-integer too.
23269
23270 2008-01-25  Ben Elliston  <bje@au.ibm.com>
23271
23272         PR other/22232
23273         * fixproto: Escape "." in sed expression that strips leading "./".
23274
23275 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
23276
23277         PR driver/34904
23278         * gcc.c (SWITCH_OK): Removed.
23279         (SWITCH_LIVE): Changed to bit.
23280         (SWITCH_FALSE): Likewise.
23281         (SWITCH_IGNORE): Likewise.
23282         (switchstr): Change live_cond to unsigned int.
23283         (process_command): Replace SWITCH_OK with 0.
23284         (do_self_spec): Likewise.
23285         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
23286         (give_switch): Likewise.
23287         (used_arg): Likewise.
23288         (do_spec_1): Set the SWITCH_IGNORE bit.
23289         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
23290         bits.  Set the SWITCH_LIVE bit.
23291
23292 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23293
23294         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
23295
23296 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
23297
23298         PR tree-optimization/34472
23299         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
23300         parameter to a "bool *" and set *DATA to false if there is
23301         an unsafe access.  Do not delete the structure here.
23302         (check_cond_exprs): Delete it here instead.
23303         (check_cond_exprs, exclude_cold_structs): Do not increase
23304         I when removing a structure.
23305
23306 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
23307
23308         PR target/34856
23309         * config/i386/i386.c (ix86_expand_vector_init): Consider only
23310         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
23311
23312 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
23313
23314         PR middle-end/34934
23315         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
23316         a fixed vector for stack.
23317
23318 2008-01-24  Ben Elliston  <bje@au.ibm.com>
23319
23320         PR c++/25701
23321         * doc/gcc.texi (Software development): Add a direntry for g++.
23322
23323 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
23324
23325         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
23326         stale and straggling -fforce-addr comments above.
23327
23328         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
23329         define.
23330         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
23331         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
23332
23333 2008-01-23  Michael Matz  <matz@suse.de>
23334
23335         PR debug/34895
23336         * dwarf2out.c (force_type_die): Use modified_type_die instead of
23337         gen_type_die.
23338
23339 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
23340
23341         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
23342         malloc result type.
23343
23344 2008-01-23 Anatoly Sokolov <aesok@post.ru>
23345
23346         * config/avr/avr.c (avr_current_arch): New variable.
23347         (avr_arch_types): Add 'avr31' and 'avr51' entries.
23348         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
23349         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
23350         (avr_override_options): Init 'avr_current_arch'.
23351         (base_arch_s): Move from here...
23352         * config/avr/avr.h (base_arch_s): ... here. Add new members
23353         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
23354         'mega' to 'have_jmp_call'.
23355         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
23356         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
23357         macros.
23358         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
23359         architectures.
23360         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
23361         MULTILIB_MATCHES): Ditto.
23362
23363 2008-01-23  Richard Guenther  <rguenther@suse.de>
23364
23365         PR middle-end/31529
23366         * cgraphunit.c (cgraph_reset_node): Always mark the node
23367         not reachable if it is not queued already.
23368
23369 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
23370
23371         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
23372         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
23373         (cputype_selected): New static variable.
23374         (bfin_handle_option): Set it if -mcpu is used.
23375         (override_option): Select default set of workarounds if no cpu type
23376         selected on the command line.
23377         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
23378
23379         From  Michael Frysinger  <michael.frysinger@analog.com>
23380         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
23381         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
23382
23383         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
23384         for bf547, bf523, bf524, and bf526.
23385         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
23386         bf526.
23387         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
23388         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
23389         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
23390         __ADSPBF547__ and __ADSPBF54x__ for bf547.
23391         * doc/invoke.texi (Blackfin Options): Document that
23392         -mcpu now accept bf547, bf523, bf524, and bf526.
23393
23394 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
23395
23396         PR rtl-optimization/34628
23397         * combine.c (try_combine): Stop and undo after the first combination
23398         if an autoincrement side-effect on the first insn has effectively
23399         been lost.
23400
23401 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
23402
23403         PR target/34529
23404         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
23405         Offset addresses are not valid for Altivec or paired float modes.
23406
23407 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
23408
23409         PR c++/34607
23410         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
23411         if DECL_INITIAL (decl) is error_mark_node.
23412
23413         PR c++/34914
23414         * c-common.c (handle_vector_size_attribute): Only allow
23415         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
23416         the same way as pointer, array etc. types.
23417         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
23418
23419         PR c++/34917
23420         * tree.c (build_type_attribute_qual_variant): Call
23421         build_qualified_type if attributes are equal, but quals are not.
23422
23423 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23424
23425         PR 32102
23426         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
23427         * flags.h (warn_strict_aliasing): Remove.
23428         (warn_strict_overflow): Remove.
23429         * opts.c (warn_strict_aliasing): Remove.
23430         (warn_strict_overflow): Remove.
23431         * c-opts.c (c_common_handle_option): -Wall only sets
23432         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
23433         (c_common_post_options): Give default values to -Wstrict-aliasing
23434         and -Wstrict-overflow if they are uninitialized.
23435         * common.opt (Wstrict-aliasing): Specify Var and Init.
23436         (Wstrict-overflow): Likewise.
23437
23438 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
23439
23440         PR rtl-optimization/26854
23441         PR rtl-optimization/34400
23442         PR rtl-optimization/34884
23443         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
23444         DF_RD->gen.
23445         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
23446         (df_rd_bb_info.expanded_lr_out): Deleted
23447         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
23448         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
23449         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
23450         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
23451         Removed code to allocate, initialize or free expanded_lr_out.
23452         (df_rd_bb_local_compute_process_def): Restructured to make more
23453         understandable.
23454         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
23455         sets if the sets are being trimmed.
23456
23457 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
23458
23459         PR bootstrap/32287
23460         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
23461         (as_vers): Likewise.
23462         * configure: Regenerated.
23463
23464 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23465
23466         PR middle-end/33092
23467         * tree-pass.h (pass_build_alias): New pass.
23468         * tree-ssa-alias.c (gate_build_alias): New.
23469         (pass_build_alias): New.
23470         * passes.c (init_optimization_passes): Add pass_build_alias after
23471         pass_create_structure_vars.
23472
23473 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
23474
23475         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
23476         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
23477         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
23478         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
23479         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
23480         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
23481         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
23482         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
23483         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
23484         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
23485         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
23486         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
23487         * config/s390/s390.md (FP_ALL): New mode iterator.
23488         (_d): New mode attribute.
23489         ("*signbit<mode>2>"): Changed mode of first operand.
23490         ("isinf<mode>2"): Changed mode of first operand.
23491         ("*TDC_insn"): Adaptation for DFP modes.
23492
23493 2008-01-22  Ben Elliston  <bje@au.ibm.com>
23494
23495         * tree.c (check_qualified_type): Improve function description.
23496
23497 2008-01-21  Jason Merrill  <jason@redhat.com>
23498
23499         PR c++/34196
23500         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
23501         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
23502         if it is set.
23503
23504 2008-01-21  DJ Delorie  <dj@redhat.com>
23505
23506         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
23507         return zero.
23508
23509 2008-01-21  Richard Guenther  <rguenther@suse.de>
23510
23511         PR middle-end/34856
23512         * tree-cfg.c (verify_expr): Allow all invariant expressions
23513         instead of just constant class ones as reference argument.
23514         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
23515         like any other constant.
23516         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
23517
23518 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
23519
23520         * regmove.c (fixup_match_1): Update call crossed frequencies.
23521
23522 2008-01-21  Richard Guenther  <rguenther@suse.de>
23523
23524         PR c/34885
23525         * tree-inline.c (setup_one_parameter): Deal with mismatched
23526         types using a VIEW_CONVERT_EXPR.
23527
23528 2008-01-21  Alon Dayan  <alond@il.ibm.com>
23529             Olga Golovanevsky  <olga@il.ibm.com>
23530
23531         PR tree-optimization/34701
23532         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
23533         when the structure size is not a power of 2.
23534
23535 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
23536
23537         * doc/install.texi: Add doc for --enable-checking=df.
23538
23539 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23540
23541         PR rtl-optimization/34808
23542         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
23543
23544 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
23545
23546         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
23547         input.
23548
23549 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
23550
23551         PR rtl-optimization/26854
23552         PR rtl-optimization/34400
23553         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
23554         DF_RD->gen.
23555         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
23556         (df_rd_bb_info.expanded_lr_out): New.
23557         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
23558         * loop_iv.c (iv_analysis_loop_init): Ditto.
23559         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
23560         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
23561         Added code to allocate, initialize or free expanded_lr_out.
23562         (df_rd_bb_local_compute_process_def): Restructured to make
23563         more understandable.
23564         (df_rd_confluence_n): Add code to do nothing with fake edges and
23565         code to no apply invalidate_by_call sets if the sets are being trimmed.
23566         (df_lr_local_finalize): Renamed to df_lr_finalize.
23567         (df_live_local_finalize): Renamed to df_live_finalize.
23568
23569 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
23570
23571         PR target/34831
23572         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
23573         deciding whether to use reciprocal instructions.
23574
23575 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
23576
23577         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
23578         dwarf2out_note_section_used if cold_text_section is NULL.
23579
23580 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
23581
23582         PR gcov-profile/34610
23583         * tree-cfg.c (make_edges): Mark both outgoing edges from
23584         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
23585         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
23586         from OMP_FOR and OMP_CONTINUE outgoing edges.
23587
23588         * tree-profile.c (tree_profiling): Return early if
23589         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
23590         at the end.
23591         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
23592         from cfun to child_cfun.
23593         * function.h (struct function): Add after_tree_profile bit.
23594
23595 2008-01-19 Anatoly Sokolov <aesok@post.ru>
23596
23597         * config/avr/avr.S (_exit): Disable interrupt.
23598
23599 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
23600             Steven Bosscher  <stevenb.gcc@gmail.com>
23601
23602         PR rtl-optimization/26854
23603         PR rtl-optimization/34400
23604         * df-problems.c (df_live_scratch): New scratch bitmap.
23605         (df_live_alloc): Allocate df_live_scratch when doing df_live.
23606         (df_live_reset): Clear the proper bitmaps.
23607         (df_live_bb_local_compute): Only process the artificial defs once
23608         since the order is not important.
23609         (df_live_init): Init the df_live sets only with the variables
23610         found live by df_lr.
23611         (df_live_transfer_function): Use the df_lr sets to prune the
23612         df_live sets as they are being computed.
23613         (df_live_free): Free df_live_scratch.
23614
23615 2008-01-18  Ian Lance Taylor  <iant@google.com>
23616
23617         * common.opt: Add fmerge-debug-strings.
23618         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
23619         flag_merge_debug_strings rather than flag_merge_constants.
23620         * doc/invoke.texi (Option Summary): Mention
23621         -fmerge-debug-strings.
23622         (Debugging Options): Document -fmerge-debug-strings.
23623
23624 2008-01-18  Ian Lance Taylor  <iant@google.com>
23625
23626         PR c++/33407
23627         * tree.h (DECL_IS_OPERATOR_NEW): Define.
23628         (struct tree_function_decl): Add new field operator_new_flag.
23629         * tree-inline.c (expand_call_inline): When inlining a call to
23630         operator new, force the return value to go into a variable, and
23631         set DECL_NO_TBAA_P on that variable.
23632         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
23633
23634 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
23635
23636         PR debug/34484
23637         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
23638         DWARF2_DEBUGGING_INFO.
23639         (dwarf2out_note_section_used): Ditto.  Add prototype.
23640         (have_multiple_function_sections, text_section_used,
23641         cold_text_section_used, *cold_text_sections): Move declarations
23642         before their uses.
23643
23644 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
23645
23646         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
23647         field and add signal_ra.
23648         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
23649         assignments to frame state pc.  Move end of stack check after
23650         MD_FALLBACK_FRAME_STATE_FOR.
23651         (uw_update_context_1): Use frame state signal_regs if set, instead
23652         of checking signal_frame flag.
23653         (uw_update_context): Use frame state signal_ra if set.
23654         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
23655         * config/xtensa/linux-unwind.h: New file.
23656
23657 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
23658
23659         * modulo-sched.c (get_sched_window): Fix comment typo.
23660
23661 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
23662
23663         PR tree-optimization/34648
23664         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
23665
23666 2008-01-17  Anatoly Sokolov <aesok@post.ru>
23667
23668         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
23669         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
23670
23671 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
23672
23673         PR rtl-optimization/34400
23674         * df-core.c (df_worklist_dataflow_overeager,
23675         df_worklist_dataflow_doublequeue): New functions.
23676         (df_worklist_dataflow): Two different worklist solvers.
23677         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
23678         New param.
23679
23680 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23681
23682         PR testsuite/34821
23683         * doc/invoke.texi: Document the dependence on pthread for fopenmp
23684         and ftree-parallelize-loops.
23685
23686 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
23687
23688         PR rtl-optimization/34826
23689         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
23690
23691 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
23692
23693         * global.c (find_reg): Mark the eh regs as used if necessary.
23694         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
23695         * ra.h (struct allocno): no_eh_reg field added.  Changed
23696         no_stack_reg type to bitfield.
23697
23698 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
23699
23700         * tree.c (substitute_in_expr): Add missing 'break'.
23701
23702 2008-01-17  Richard Guenther  <rguenther@suse.de>
23703
23704         PR tree-optimization/34825
23705         * tree-ssa-math-opts.c (is_division_by): Do not recognize
23706         x / x as division to handle.
23707
23708 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23709
23710         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
23711         "-pthread" is specified.
23712         * pa-hpux11.h (LIB_SPEC): Likewise.
23713
23714 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
23715             Peter Bergner  <bergner@vnet.ibm.com>
23716
23717         PR rtl-optimization/33796
23718         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
23719
23720 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23721
23722         PR libgfortran/34699
23723         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
23724         static links.
23725         * pa-hpux10.h (LINK_SPEC): Likewise.
23726         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
23727
23728 2008-01-16  Richard Guenther  <rguenther@suse.de>
23729
23730         PR middle-end/32628
23731         * fold-const.c (fold_convert_const_int_from_int): Do not
23732         set overflow if that occured only because of a sign extension
23733         change when converting from/to a sizetype with the same
23734         precision and signedness.
23735
23736 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
23737
23738         PR debug/34249
23739         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
23740         location address to the correct place.  Update copyright year.
23741
23742 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23743
23744         * lambda-code.c (lambda_transform_legal_p): Handle the case of
23745         no dependences in the dependence_relations vector.
23746
23747 2008-01-16  Jan Hubicka  <jh@suse.cz>
23748
23749         PR rtl-optimization/31396
23750         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
23751         * cfg.c (dump_reg_info): Print it.
23752         * regs.h (struct reg_info_t): add freq_calls_crossed.
23753         (REG_FREQ_CALLS_CROSSED): New macro.
23754         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
23755         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
23756         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
23757         regmove_optimize): Update call crossed frequencies.
23758         * local-alloc.c (struct qty): Add freq_calls_crossed.
23759         (alloc_qty): Copute freq_calls_crossed.
23760         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
23761         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
23762         * ra.h (struct allocno): Add freq_calls_crossed.
23763
23764 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23765
23766         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
23767         libgomp when compiling with ftree-parallelize-loops.
23768         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
23769
23770 2008-01-16  Richard Guenther  <rguenther@suse.de>
23771
23772         PR tree-optimization/34769
23773         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
23774         * tree.c (int_cst_value): Instead make this function more
23775         permissive in what it accepts as valid input.  Document this
23776         function always sign-extends the value.
23777
23778 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
23779             Richard Guenther  <rguenther@suse.de>
23780
23781         PR c/34668
23782         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
23783         (gimple_fold_indirect_ref_rhs): ... this.
23784         (gimple_fold_indirect_ref): New function with foldings
23785         that preserve lvalueness.
23786         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
23787         * tree-flow.h (gimple_fold_indirect_ref): Declare.
23788         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
23789         to fold an INDIRECT_REF, fall back to the old use of
23790         fold_indirect_ref_1.
23791
23792 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
23793
23794         * tree-data-ref.c (subscript_dependence_tester_1): Call
23795         free_conflict_function.
23796         (compute_self_dependence): Same.
23797
23798 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
23799
23800         PR debug/34249
23801         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
23802         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
23803         function global.
23804         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
23805         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
23806         for DWARF2_UNWIND_INFO targets.
23807
23808 2008-01-16  Richard Guenther  <rguenther@suse.de>
23809
23810         PR c/34768
23811         * c-typeck.c (common_pointer_type): Do not merge inconsistent
23812         type qualifiers for function types.
23813
23814 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
23815
23816         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
23817         loop_iterator li from previous commit.
23818
23819 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
23820
23821         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
23822
23823 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
23824
23825         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
23826         (parallelize_loops): Don't parallelize irreducible components.
23827
23828 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23829
23830         PR c++/24924
23831         * c-opts (c_common_post_options): Do not enable CPP
23832         flag_pedantic_errors by default.
23833
23834 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
23835
23836         PR rtl-optimization/31944
23837         * cse.c (remove_pseudo_from_table): New function.
23838         (merge_equiv_classes): Use above function to remove pseudo-registers.
23839         (invalidate): Likewise.
23840
23841 2008-01-13  Richard Guenther  <rguenther@suse.de>
23842
23843         PR middle-end/34601
23844         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
23845         instead of TYPE_MODE to deal with calls from expand_one_error_var.
23846
23847 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
23848
23849         * gcse.c (cprop_jump): Call validate_unshare_change instead of
23850         validate_change to unshare the source of the PC set.
23851
23852 2008-01-12  Jan Hubicka  <jh@suse.cz>
23853
23854         PR middle-end/32135
23855         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
23856         references above array bounds.  This might trigger bounds checks for
23857         pointers to arrays.
23858
23859 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
23860
23861         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
23862         new_replaceable_dependencies.
23863
23864 2008-01-12  Doug Kwan  <dougkwan@google.com>
23865
23866         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
23867         instead of OPT_Wreturn_type in warning due to ignored return type
23868         qualifiers.
23869         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
23870         options included in -Wextra.
23871         * c.opt: New option -Wignored_qualifiers.
23872         * doc/invoke.texi (Warning Options, -Wextra): Add new option
23873         -Wignore_qualifiers.
23874         (-Wignored-qualifiers): Document.
23875         (-Wreturn-type): Remove description of functionality now handled
23876         by -Wignored-qualifiers.
23877
23878 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
23879
23880         PR ada/33788
23881         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
23882         NOP_EXPR if it is between integral types with the same precision.
23883
23884 2008-01-12  Jan Hubicka  <jh@suse.cz>
23885
23886         PR other/28023
23887         * invoke.texi (max-inline-recursive-depth): Fix default value.
23888
23889 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
23890
23891         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
23892         correct type.
23893
23894 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
23895
23896         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
23897
23898 2008-01-11  James E. Wilson  <wilson@specifix.com>
23899
23900         PR target/26015
23901         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
23902
23903 2008-01-11  Anatoly Sokolov <aesok@post.ru>
23904
23905         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
23906         save/restore frame pointer register and don't use 'call-prologues'
23907         optimization in function with "OS_task" attribute.
23908
23909 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
23910
23911         PR middle-end/31309
23912         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
23913         when copying to memory.
23914
23915 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
23916
23917         PR rtl-optimization/30905
23918         * cfgcleanup.c: Include dce.h
23919         (crossjumps_occured): New global variable.
23920         (try_crossjump_bb): Exit loop after finding a fallthru edge.
23921         If something changed, set crossjumps_occured to true.
23922         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
23923         Don't add/remove fake edges to exit here...
23924         (cleanup_cfg): ...but do it here, when crossjumping.
23925         Run a fast DCE when successful crossjumps occured in the latest
23926         iteration of try_optimize_cfg.
23927
23928 2008-01-11  Richard Guenther  <rguenther@suse.de>
23929
23930         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
23931         (struct vn_unary_op_s): Likewise.
23932         (vn_reference_insert): Free old reference on hash collision.
23933
23934 2008-01-10  Raksit Ashok  <raksit@google.com>
23935
23936         PR rtl-optimization/27971
23937         * combine.c (find_split_point): Split PLUS expressions which are
23938         inside a MEM rtx, and whose first operand is complex.
23939
23940 2008-01-10  DJ Delorie  <dj@redhat.com>
23941
23942         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
23943         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
23944         (m32c_hard_regno_ok): Call the underlying function.
23945
23946 2008-01-10  Richard Guenther  <rguenther@suse.de>
23947
23948         PR middle-end/34683
23949         * tree-cfg.c (tree_merge_blocks): Do not go through the
23950         full-blown folding and stmt updating path if we just deal
23951         with virtual operands.
23952         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
23953         test for abnormal SSA_NAMEs.
23954
23955 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
23956
23957         PR middle-end/34641
23958         * reload.c (push_reload): Add assertions.  All constants from
23959         reg_equiv_constant should have been used for replacing the respective
23960         pseudo earlier.
23961         (find_reloads_address): Invoke find_reloads_address_part for
23962         constant taken from the reg_equiv_constant array.
23963
23964 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
23965
23966         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
23967         field (valnum) the first in the struct.  Replace bools with
23968         unit bit fields.
23969
23970 2008-01-10  Richard Guenther  <rguenther@suse.de>
23971
23972         PR tree-optimization/34651
23973         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
23974         types and ordering for masking and converting.
23975
23976 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
23977
23978         PR tree-optimization/34017
23979         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
23980         also for PHI_NODE expressions.
23981
23982 2008-01-09  Jan Hubicka  <jh@suse.cz>
23983
23984         PR tree-optimization/34708
23985         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
23986         based on number of case labels.
23987         (init_inline_once): Remove switch_cost.
23988         * tree-inline.h (eni_weights_d): Remove switch_cost.
23989
23990 2008-01-09  Richard Guenther  <rguenther@suse.de>
23991         Andrew Pinski  <andrew_pinski@playstation.sony.com>
23992
23993         PR middle-end/30132
23994         * gimplify.c (gimplify_cond_expr): Do not create an addressable
23995         temporary if an rvalue is ok or an lvalue is not required.
23996
23997 2008-01-09  Richard Guenther  <rguenther@suse.de>
23998
23999         PR middle-end/34458
24000         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
24001         adjust return type.
24002
24003 2008-01-09  Richard Guenther  <rguenther@suse.de>
24004
24005         PR middle-end/34679
24006         * tree.c (host_integerp): Check for sizetype only if the
24007         type is an integer type.
24008
24009 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
24010
24011         PR debug/26364
24012         * opts.c (decode_options): Disable inlining of functions called
24013         once if not in unit-at-a-time mode.
24014
24015 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
24016
24017         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
24018
24019 2008-01-08  Richard Guenther  <rguenther@suse.de>
24020
24021         PR middle-end/31863
24022         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
24023         out early if the result will be unused.
24024
24025 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
24026
24027         PR target/34709
24028         Revert:
24029
24030         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
24031         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
24032         for TARGET_RECIP.
24033
24034 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
24035
24036         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
24037         for vectorization tuned.
24038
24039 2008-01-08  Richard Guenther  <rguenther@suse.de>
24040
24041         PR tree-optimization/34683
24042         * tree-ssa-operands.c (operand_build_cmp): Export.
24043         * tree-ssa-operands.h (operand_build_cmp): Declare.
24044         * tree-vn.c (vuses_compare): Remove.
24045         (sort_vuses): Use operand_build_cmp.
24046         (sort_vuses_heap): Likewise.
24047         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
24048         to re-use old VEC if available.  Do not sort already sorted VUSEs.
24049         (vdefs_to_vec): Do not sort already sorted VDEFs.
24050
24051 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
24052
24053         PR middle-end/34694
24054         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
24055
24056 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
24057
24058         PR target/34702
24059         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
24060         limitations of reciprocal sequences on x86 targets.
24061
24062 2008-01-08  Richard Guenther  <rguenther@suse.de>
24063
24064         PR tree-optimization/34683
24065         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
24066
24067 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
24068
24069         PR target/34622
24070         * config/darwin.c (darwin_mergeable_string_section): Don't use
24071         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
24072
24073 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
24074
24075         PR target/34682
24076         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
24077         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
24078         predicates of op0 and op1 to register_operand.
24079         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
24080         expander using X87MODEF mode iterator.  Change predicates of
24081         op0 and op1 to register_operand.
24082         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
24083         corresponding patterns and macroize using MODEF macro.  Change
24084         predicates of op0 and op1 to register_operand and remove
24085         "m" constraint. Disparage "r" alternative with "!".
24086         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
24087         macroize using X87MODEF macro.  Change predicates of op0 and op1
24088         to register_operand and remove "m" constraint.  Disparage "r"
24089         alternative with "!".
24090         (absneg splitter with memory operands): Remove.
24091         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
24092         patterns and macroize using X87MODEF mode iterator.
24093         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
24094         Change predicate of op1 to register_operand.
24095         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
24096         for memory operands.
24097
24098 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
24099
24100         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
24101
24102 2008-01-07  Richard Guenther  <rguenther@suse.de>
24103
24104         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
24105         fields.
24106
24107 2008-01-07  Richard Guenther  <rguenther@suse.de>
24108
24109         PR tree-optimization/34683
24110         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
24111         VOPs of the needed size to save memory.  Use VEC_quick_push
24112         to save compile-time.
24113         (vdefs_to_vec): Likewise.
24114
24115 2008-01-07  Sa Liu  <saliu@de.ibm.com>
24116
24117         * config/spu/spu.md (divdf3): Genetate inline code for double
24118         division.  The implementation doesn't handle INF or NAN, therefore it
24119         only applies when -ffinite-math-only is given.
24120
24121 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
24122
24123         PR libstdc++/34680
24124         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
24125         * doc/cpp.texi ([Common Predefined Macros]): Document.
24126
24127 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
24128
24129         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
24130         order to use commutative addition instead of subtraction.
24131
24132 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24133             Mircea Namolaru  <namolaru@il.ibm.com>
24134             Vladimir Yanovsky  <yanov@il.ibm.com>
24135             Revital Eres  <eres@il.ibm.com>
24136
24137         PR tree-optimization/34263
24138         * tree-outof-ssa.c (process_single_block_loop_latch,
24139         contains_tree_r): New functions.
24140         (analyze_edges_for_bb): Call process_single_block_loop_latch
24141         function to empty single-basic-block latch block if possible.
24142
24143 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
24144
24145         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
24146         for TARGET_RECIP.
24147         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
24148
24149 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
24150
24151         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
24152
24153 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
24154
24155         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
24156
24157 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
24158
24159         PR tree-optimization/34618
24160         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
24161         flag from T.
24162
24163 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
24164
24165         PR target/34673
24166         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
24167         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
24168         Update copyright year.
24169
24170         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
24171         Update copyright year.
24172         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
24173         using NR fixup.
24174
24175 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
24176
24177         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
24178         edge does not point to current bb before changing need_assert.
24179
24180 2008-01-04  Richard Guenther  <rguenther@suse.de>
24181
24182         PR middle-end/34029
24183         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
24184         for verifying purposes if they are is_gimple_min_invariant.
24185
24186 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
24187
24188         PR tree-optimization/34448
24189         PR tree-optimization/34465
24190         * gimplify.c (gimplify_init_constructor): Add new parameter
24191         notify_temp_creation.  Use it.
24192         (gimplify_modify_expr_rhs): Take volatiles into account when
24193         optimizing constructors.
24194         Do not optimize constructors if gimplify_init_constructor will dump to
24195         memory.
24196         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
24197         * gcc.c-torture/compile/pr34448.c: New.
24198
24199 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
24200
24201         PR gcov-profile/34609
24202         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
24203         return_slot if result is TREE_ADDRESSABLE.
24204
24205 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
24206
24207         * config/mips/mips.md (sqrt_condition): Tweak comment.
24208         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
24209
24210 2008-01-03  Tom Tromey  <tromey@redhat.com>
24211
24212         PR c/34457
24213         * c-common.c (c_type_hash): Handle VLAs.
24214
24215 2008-01-03  Jan Hubicka  <jh@suse.cz>
24216
24217         PR tree-optimization/31081
24218         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
24219         0 when inlining and not inlining to first basic block.
24220         (remap_decl): When var is initialized to 0, don't set default_def.
24221         (expand_call_inline): Set entry_bb.
24222         * tree-inline.h (copy_body_data): Add entry_bb.
24223
24224 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
24225
24226         PR c++/34619
24227         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
24228         before returning.
24229
24230         PR tree-optimization/29484
24231         * tree-inline.c (inline_forbidden_p_2): New function.
24232         (inline_forbidden_p): Disallow inlining if some static var
24233         has an address of a local LABEL_DECL in its initializer.
24234         * doc/extend.texi (Labels as Values): Document &&foo behaviour
24235         vs. inlining.
24236
24237 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
24238
24239         PR tree-optimization/34635
24240         * tree-data-ref.c (add_other_self_distances): Make sure that the
24241         evolution step is constant.
24242
24243 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
24244
24245         PR middle-end/34608
24246         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
24247
24248 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
24249
24250         * tree-sra.c (scalarize_init): Insert the generate_element_init
24251         statements after the generate_element_zero statements.
24252
24253 2008-01-02  Richard Guenther  <rguenther@suse.de>
24254
24255         PR middle-end/34093
24256         PR middle-end/31976
24257         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
24258         for very large number of operands instead of ICEing.
24259
24260 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
24261
24262         PR target/34013
24263         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
24264         while stack probing.
24265
24266 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
24267
24268         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
24269         in C++0x mode.
24270
24271 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
24272
24273         PR libmudflap/26442
24274         * tree-mudflap.c (mx_register_decls): Guard warning by
24275         !DECL_ARTIFICIAL check.
24276
24277 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
24278
24279         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
24280         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
24281         sse5_perm<mode>): Fix constraints.