OSDN Git Service

2008-08-22 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-08-22  Richard Guenther  <rguenther@suse.de>
2
3         PR tree-optimization/37078
4         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
5         [+INF, +INF] ranges.
6
7 2008-08-22  Richard Guenther  <rguenther@suse.de>
8
9         PR tree-optimization/37143
10         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
11         a conversion statement instead of a copy.
12
13 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
14
15         PR target/37184
16         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
17         CCCmode, CCOmode and CCSmode destination modes.
18
19         PR target/37191
20         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
21         from different units in a single alternative.
22         (*vec_extractv2sf_1): Ditto.
23         (*vec_extractv2si_0): Ditto.
24         (*vec_extractv2si_1): Ditto.
25         * config/i386/sse.md (sse2_storehpd): Ditto.
26         (sse2_storelpd): Ditto.
27         (sse2_loadhpd): Ditto.
28         (sse2_loadlpd): Ditto.
29
30         PR target/37197
31         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
32         (popcountsi2): Ditto.
33         (clzdi2_abm): Ditto.
34         (popcountdi2): Ditto.
35         (clzhi2_abm): Ditto.
36         (popcounthi2): Ditto.
37
38 2008-08-22  Richard Guenther  <rguenther@suse.de>
39
40         PR middle-end/36548
41         PR middle-end/37125
42         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
43         if the multiplication does not overflow.
44
45 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
46
47         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
48
49 2008-08-21  Richard Henderson  <rth@redhat.com>
50
51         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
52         spurrious comma from test.
53         * configure: Rebuild.
54
55 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
56
57         PR 30457
58         * builtins.c (fold_builtin_next_arg): Add warning about undefined
59         behaviour.
60         
61 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
62
63         * c-tree.h (grokfield): New argument.
64         * c-decl.c (grokfield): Handle new location argument.
65         * c-parser.c (c_parser_struct_declaration): Pass location to
66         grokfield.
67
68 2008-08-21  Richard Guenther  <rguenther@suse.de>
69
70         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
71
72 2008-08-21  Jan Hubicka  <jh@suse.cz>
73
74         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
75         (cgraph_add_function_insertion_hook,
76         cgraph_remove_function_insertion_hook,
77         cgraph_call_function_insertion_hooks): New functions.
78         * cgraph.h (cgraph_add_function_insertion_hook,
79         cgraph_remove_function_insertion_hook,
80         cgraph_call_function_insertion_hooks): Declare.
81         * ipa-reference.c (function_insertion_hook_holder): New variable.
82         (check_operand, look_for_address_of): When checking late, do not care
83         about module bitmaps.
84         (add_new_function): New function.
85         (generate_summary): Register hooks; zero module bitmaps.
86         (propagate): Unregister hooks.
87         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
88         (add_new_function): New function.
89         (generate_summary): Register hook.
90         (propagate): Remove hook.
91
92         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
93
94         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
95         * ipa-cp.c (ipcp_update_cloned_node): New function.
96         (build_const_val): Handle functions correctly; bring type logic
97         into sync with tree-inline.c
98         (ipcp_init_stage):  Take care of computing stuff needed by
99         indirect inlining; update clones.
100         (ipcp_generate_summary): Break out of ipcp_driver.
101         (ipcp_driver): Do only execution and transformation.
102         (pass_ipa_cp): Make IPA_PASS.
103         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
104         offset to address.
105         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
106         ipcp, some info is already available.
107         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
108         * tree-inline.c (remap_ssa_name): Unshare expression.
109
110 2008-08-21  Richard Guenther  <rguenther@suse.de>
111
112         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
113         a PHI ask VN if it is already available.
114         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
115         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
116
117 2008-08-21  Richard Guenther  <rguenther@suse.de>
118
119         PR middle-end/36817
120         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
121         makes sure to produce a result of the correct type.
122
123 2008-08-21  Jan Hubicka  <jh@suse.cz>
124         Backport from LTO branch:
125
126         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
127                     Jan Hubicka  <jh@suse.cz>
128         
129         * ipa-pure-const.c
130         (init_state, finish_state, set_function_state, generate_summary):
131         New functions.
132         (scan_stmt): Renamed from scan_function.  Changed to keep state in
133         local static vars rather than cgraph aux field.
134         (propagate): Renamed from static_execute. Changed to keep state in
135         local static vars rather than cgraph aux field.
136         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
137         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
138
139         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
140
141         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
142         * ipa-reference.c (init_function_info, generate_summary, 
143         propagate): New functions.
144         (analyze_function):  Call init_function_info.
145         (static_execute): Stripped into generate_summary and propagate.
146         (pass_ipa_reference): Made into ipa_opt_pass.
147
148 2008-08-21  Richard Guenther  <rguenther@suse.de>
149
150         PR tree-optimization/37181
151         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
152         folding result.
153         (extract_range_from_unary_expr): Likewise.
154
155 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
156
157         * diagnostic.c (pedwarn_at): Rename as pedwarn.
158         (pedwarn): Delete.
159         * toplev.h (pedwarn_at): Likewise.
160         * builtins.c: Update all calls to pedwarn.
161         * c-lex.c: Likewise.
162         * toplev.c: Likewise.
163         * c-tree.h: Likewise.
164         * c-decl.c: Likewise.
165         * c-errors.c: Likewise.
166         * c-typeck.c: Likewise.
167         * c-common.c: Likewise.
168         * c-parser.c: Likewise.
169
170 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
171
172         PR target/31070
173         * config/sparc/sparc.c (function_arg_slotno): Handle structure
174         with MODE_VECTOR_INT mode.
175
176 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
177
178         PR middle-end/179
179         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
180         initialized outside the current module.
181         (warn_uninitialized_var): Ignore left-hand side when walking the
182         trees. Ignore address expressions. Examine VUSE operands in gimple
183         statements with a variable declaration on the right-hand side.
184
185 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
186
187         PR bootstrap/37155
188         * rtlanal.c (subreg_offset_representable_p): Revert last change.
189
190 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
191
192         PR 35701
193         * c-common.c (conversion_warning): Do not warn if applying bit-and
194         operator to unsigned constant that fits in the target type.
195
196 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
197
198         PR c++/35602
199         * c-common.c (conversion_warning): Do not warn for artificial
200         expressions.
201
202 2008-08-20  Richard Guenther  <rguenther@suse.de>
203
204         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
205         (extract_range_from_binary_expr): Fall back to constant propagation.
206         (extract_range_from_unary_expr): Likewise.
207
208 2008-08-20  Richard Guenther  <rguenther@suse.de>
209
210         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
211         with TREE_THIS_VOLATILE on shared nodes.
212         (fold_stmt_r): Likewise.
213
214 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
215
216         PR c/37171
217         * c-parser.c (c_parser_attributes): For keywords use canonical
218         spelling for attr_name.
219
220 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
221
222         * value-prof.c (check_counter): Revert wrong call to error.
223         
224 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
225
226         * profile.c: Update calls to inform.
227         * value-prof.c: Update calls to inform.
228         
229 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
230
231         * diagnostic.c (inform): Add an explicit location_t parameter.
232         * toplev.h (inform): Update declaration.
233         * builtins.c: Update all calls to inform.
234         * c-common.c: Likewise.
235         * c-decl.c: Likewise.
236         * c-opts.c: Likewise.
237         * c-pch.c: Likewise.
238         * c-pragma.c: Likewise.
239         * c-typeck.c: Likewise.
240         * coverage.c: Likewise.
241         * opts.c: Likewise.
242         * toplev.c: Likewise.
243         * tree-cfg.c: Likewise.
244         * tree-ssa.c: Likewise.
245
246 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
247
248         PR target/37169
249         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
250         V2DI mode, for SSE4.1, use movq instead of vector set if the
251         second element is zero and inter-unit moves are OK.
252
253 2008-08-20  Richard Guenther  <rguenther@suse.de>
254
255         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
256         properly handle conversion/copy chains after tuplification.
257
258 2008-08-20  Richard Guenther  <rguenther@suse.de>
259
260         * passes.c (init_optimization_passes): Move the second
261         forwprop pass before alias computation.  Remove the second
262         DCE pass.  Remove the first dominator and phi copy/const
263         prop passes.
264
265 2008-08-20  Nick Clifton  <nickc@redhat.com>
266
267         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
268         support of this feature.  Do not assume that a sufficiently new
269         assembler will support the feature regardless of the target type.
270         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
271         * configure: Regenerate.
272
273 2008-08-20  Richard Guenther  <rguenther@suse.de>
274
275         * tree-vrp.c (found_in_subgraph): Remove.
276         (live): New global static.
277         (live_on_edge): New function.
278         (blocks_visited): Remove.
279         (register_edge_assert_for_2): Use live_on_edge.
280         (find_conditional_asserts): Remove code dealing with
281         found_in_subgraph.  Do not walk the CFG.
282         (find_switch_asserts): Likewise.
283         (find_assert_locations_1): Renamed from find_assert_locations.
284         Move finding assert locations for conditional and switch
285         statements first.  Update live bitmap.  Do not walk the CFG.
286         (find_assert_locations): New function.
287         (insert_range_assertions): Remove entry of CFG walk.
288         Adjust call to find_assert_locations.
289         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
290         that only can appear because of fake exit edges but assert we
291         never try to insert on those.
292         (fini_pre): Do not remove fake exit edges here...
293         (execute_pre): ...but here, before committing edge inserts.
294
295 2008-08-19  Richard Guenther  <rguenther@suse.de>
296
297         * passes.c (init_optimization_passes): Exchange store-ccp
298         with a ccp pass.
299
300 2008-08-19  Rafael Espindola  <espindola@google.com>
301
302         * varasm.c (weak_decls): Move earlier in the file.
303         (assemble_external): Add weak decls to the weak_decls list.
304         (declare_weak): Don't add decls to the weak_decls list.
305
306 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
307
308         PR target/37157
309         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
310         before (sse2_shufpd_<mode>).
311
312 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
313
314         PR debug/37156
315         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
316         * tree.c (block_nonartificial_location): Likewise.
317
318 2008-08-19  Richard Guenther  <rguenther@suse.de>
319
320         PR tree-optimization/35972
321         PR tree-optimization/23094
322         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
323         parameter.
324         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
325         handle MISALIGNED_INDIRECT_REF.
326         (get_ref_from_reference_ops): New helper.
327         (vn_reference_lookup_pieces): Walk the use-def chain using the
328         alias-oracle if requested.
329         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
330         walking the use-def chain.
331         (compute_avail): But not here.
332         (create_component_ref_by_pieces_1): Properly handle
333         MISALIGNED_INDIRECT_REF.
334         (do_regular_insertion): Handle fully redundant
335         expressions after PHI-translation also for SSA_NAME values, not
336         only constants.  Correctly use edoubleprime for that.
337
338 2008-08-19  Ira Rosen  <irar@il.ibm.com>
339
340         * tree-vectorizer.c (supportable_widening_operation): Support
341         multi-step conversion, return the number of steps in such conversion
342         and the required intermediate types.
343         (supportable_narrowing_operation): Likewise.
344         * tree-vectorizer.h (vect_pow2): New function.
345         (supportable_widening_operation): Change argument types.
346         (supportable_narrowing_operation): Likewise.
347         (vectorizable_type_promotion): Add an argument.
348         (vectorizable_type_demotion): Likewise.
349         * tree-vect-analyze.c (vect_analyze_operations): Call 
350         vectorizable_type_promotion and vectorizable_type_demotion with
351         additional argument.
352         (vect_get_and_check_slp_defs): Detect patterns.
353         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
354         types. 
355         (vect_analyze_slp_instance): Don't fail in case of multiple types. Call
356         vect_build_slp_tree with correct arguments. Calculate unrolling factor
357         according to the smallest type in the loop.
358         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
359         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call 
360         supportable_widening_operation with correct arguments. 
361         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector 
362         operands lists according to the number of vector statements in left
363         or right node, if exists.
364         (vect_gen_widened_results_half): Remove unused argument.
365         (vectorizable_conversion): Call supportable_widening_operation, 
366         supportable_narrowing_operation, and vect_gen_widened_results_half
367         with correct arguments. 
368         (vectorizable_assignment): Change documentation, support multiple
369         types in SLP. 
370         (vectorizable_operation): Likewise.
371         (vect_get_loop_based_defs): New function.
372         (vect_create_vectorized_demotion_stmts): Likewise.
373         (vectorizable_type_demotion): Support loop-aware SLP and general
374         multi-step conversion. Call vect_get_loop_based_defs and
375         vect_create_vectorized_demotion_stmts for transformation.
376         (vect_create_vectorized_promotion_stmts): New function.
377         (vectorizable_type_promotion): Support loop-aware SLP and general
378         multi-step conversion. Call vect_create_vectorized_promotion_stmts
379         for transformation.     
380         (vectorizable_store): Change documentation, support multiple
381         types in SLP. 
382         (vectorizable_load): Likewise.
383         (vect_transform_stmt): Pass SLP_NODE to 
384         vectorizable_type_promotion and vectorizable_type_demotion.
385         (vect_schedule_slp_instance): Move here the calculation of number
386         of vectorized statements for each node from...
387         (vect_schedule_slp): ... here.
388         (vect_transform_loop): Call vect_schedule_slp without the last
389         argument.
390
391 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
392
393         PR bootstrap/37152
394         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = 
395         to == in assert statement.
396         (vectorizable_reduction): Fix typo.
397
398 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
399
400         PR bootstrap/37153
401         * value-prof.c (check_counter): Dereference pointer to overall
402         count when printing it.
403
404 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
405
406         * profile.h: Really add it.
407
408 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
409
410         * mcf.c: Really add it.
411
412 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
413             Vinodha Ramasamy  <vinodha@google.com>
414
415         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
416         count_scale.
417         * value-prof.c (check_counter): Fix the counter if
418         flag_profile_correction is true.
419         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
420         tree_mod_subtract_transform):
421         Follow check_counter parameter change.
422         * common.opt (fprofile-correction): New option.
423         * mcf.c: New file.
424         * profile.h: Likewise.
425         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
426         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
427         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
428         functions.
429         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
430         flag_profile_correction is set.
431
432 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
433
434         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
435
436 2008-08-18  Tomas Bily  <tbily@suse.cz>
437
438         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
439         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
440         CONVERT_EXPR_P.
441         * tree-data-ref.c (split_constant_offset_1): Likewise.
442         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
443         * tree-sra.c (sra_walk_expr): Likewise.
444         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
445         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
446         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
447         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
448         Likewise.
449         * gimple.c (gimple_assign_unary_nop_p): Likewise.
450         * tree-vect-transform.c (vectorizable_type_demotion)
451         (vectorizable_type_promotion): Likewise.
452         * tree-inline.c (expand_call_inline): 
453         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
454         (forward_propagate_addr_expr_1, forward_propagate_comparison)
455         (tree_ssa_forward_propagate_single_use_vars): Likewise.
456         * expr.c (expand_expr_real_1): Likewise.
457         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
458         (gimple_assign_unary_useless_conversion_p): Likewise.
459         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
460         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
461         * fold-const.c (fold_unary): Likewise.
462         * tree.h (CONVERT_EXPR_P): Likewise.
463         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
464         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
465         * tree-vrp.c: 
466         (register_edge_assert_for_2, extract_range_from_unary_expr)
467         (register_edge_assert_for_1): Likewise.
468         
469 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
470
471         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
472         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
473         (enum real_value_const): Delete.
474         (get_real_const): Delete.
475         * real.c (get_real_const): Delete.
476         (dconst_e_ptr): Define.
477         (dconst_third_ptr): Define.
478         (dconst_sqrt2_ptr): Define.
479         * builtins.c: Update all callers.
480
481 2008-08-18  Richard Guenther  <rguenther@suse.de>
482
483         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
484         statement iterator after statement removal.
485
486 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
487
488         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
489         (detect_processor_freebsd): Likewise.
490         (host_detect_local_cpu): Call newly added functions for FreeBSD.
491
492 2008-08-18  Richard Guenther  <rguenther@suse.de>
493
494         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
495         and loads have the correct types.
496
497 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
498
499         PR cpp/7263
500         * c-opts.c (cpp_opts): Remove static.
501         * c-parser.c (cpp_opts): Declare it extern.
502         (disable_extension_diagnostics): Handle cpp options.
503         (enable_extension_diagnostics): Likewise.
504
505 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
506
507         * diagnostics.c (permerror_at): Rename as permerror.
508         (permerror): Delete.
509         * toplev.h: Likewise.
510
511 2008-08-18  Richard Guenther  <rguenther@suse.de>
512
513         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
514         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
515         Move call_cdce before build_alias.  Move copyrename2,
516         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
517         right after final inlining.
518         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
519         (pass_build_cfg): But instead via TODO_dump_func.
520
521 2008-08-18  Richard Guenther  <rguenther@suse.de>
522
523         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
524         element index.
525         (scalarize_init): If we failed to generate some initializers
526         do not generate zeros for not instantiated members.  Instead
527         rely on the copy out.
528         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
529         about missing flow-sensitive alias info only if we have
530         aliases computed.
531
532 2008-08-17  Nick Clifton  <nickc@redhat.com>
533
534         * doc/extend.texi (Function Attributes): Fix typo in description
535         if hot function attribute.
536
537 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
538             Richard Sandiford  <rdsandiford@googlemail.com>
539
540         * doc/install.texi (--with-mips-plt): Document.
541         * doc/invoke.texi (-mplt, -mno-plt): Document.
542         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
543         and handle ${with_mips_plt}.
544         * config/mips/mips.opt (mplt): New option.
545         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
546         (TARGET_ABICALLS_PIC2): Likewise.
547         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
548         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
549         (ASM_SPEC): Use !mabi=* instead of !mabi*.
550         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
551         to decide whether to output ".option picX" directives.
552         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
553         Pass -call_nonpic rather than -KPIC for -mplt.
554         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
555         on the command line.  Also remove it when -mabi=64 is used without
556         -msym32.
557         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
558         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
559         TARGET_ABICALLS_PIC0.
560         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
561         TARGET_ABICALLS.
562         (mips16_build_function_stub): Only output ".option pic" directives
563         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
564         (mips16_build_call_stub): Fix comment and remove redundant
565         ".set at"/"set .noat" directives.
566         (mips_function_rodata_section): Use the default behaviour for
567         TARGET_ABSOLUTE_ABICALLS.
568         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
569         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
570         (mips_restore_gp): Do nothing if the current function doesn't use
571         a global pointer.
572         (mips_expand_prologue): Only save $gp if the current function uses it.
573         Use a normal move for TARGET_ABICALLS_PIC0.
574         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
575
576 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
577
578         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
579         of function when handling GLOBAL_POINTER_REGNUM.
580
581 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
582
583         PR ada/20548
584         * common.opt (-fstack-check): Do not declare the variable here.
585         (-fstack-check=): New option variant.
586         * doc/invoke.texi (Code Gen Options): Document it.
587         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
588         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
589         (STACK_CHECK_STATIC_BUILTIN): New macro.
590         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
591         * opts.c: Include expr.h.
592         (common_handle_option) <OPT_fold_stack_check_>: New case.
593         <OPT_fstack_check>: Likewise.
594         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
595         consistently in the test for variable-sized types.  Adjust for
596         new behaviour of flag_stack_check.
597         * explow.c: Include except.h.
598         (allocate_dynamic_stack_space): Do not take into account
599         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
600         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
601         for variable-sized parameters.  Treat all parameters whose size is
602         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
603         stack checking is enabled.
604         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
605         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
606         if generic stack checking is enabled.
607         (expand_function_end): Adjust for new behaviour of flag_stack_check.
608         * reload1.c (reload): Likewise.
609         * stmt.c (expand_decl): Assert that all automatic variables have
610         fixed size at this point and remove dead code.
611         * flags.h (stack_check_type): New enumeration type.
612         (flag_stack_check): Declare.
613         * toplev.c (flag_stack_check): New global variable.
614         * Makefile.in (opts.o): Add dependency on EXPR_H.
615         (explow.o): Add dependency on except.h.
616
617 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
618
619         * config/avr/avr.c (avr_override_options): Reduce value of 
620         PARAM_INLINE_CALL_COST.
621
622 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
623
624         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
625         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
626         lieu of TYPE_MODE (type) throughout.
627
628 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
629
630         * config/arm/arm.c (add_minipool_backward_ref): Check for
631         8-byte-aligned entries in second case of forcing insertion after a
632         particular entry.  Change third case to avoid inserting
633         non-8-byte-aligned entries before 8-byte-aligned ones.
634
635 2008-08-15  Richard Guenther  <rguenther@suse.de>
636
637         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
638         strip components for unknown size accesses.
639
640 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
641
642         * config/s390/2097.md New file.
643         * config/s390/s390.md ("z10prop" attribute): Define none,
644         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
645         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
646         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
647         possible values and apply them to insns as appropriate.
648         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
649         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
650         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
651         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible
652         values.
653         ("bfp" mode attribute): Removed.  Every occurence replaced
654         with <mode>.
655         * config/s390/s390.c (struct "z10_cost"): Updated entries.
656         * config/s390/2084.md (insn_reservation "x_itof"): Updated
657           type attribute.
658
659 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
660
661         PR c/28152
662         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
663         for keywords.
664         
665 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
666
667         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
668         additional argument. Support reduction when duplication is needed due
669         to data-types of different sizes in the loop.
670         (get_initial_def_for_induction): Fix printout.
671         (vect_get_vec_def_for_stmt_copy): Support case where the
672         vec_stmt_for_operand is a phi node.
673         (vectorizable_reduction): Support reduction when duplication is needed 
674         due to data-types of different sizes in the loop.
675         (vectorizable_call): Remove restriction to not vectorize in case we 
676         have data-types of different sizes in the loop.
677         (vectorizable_conversion): Likewise.
678         (vectorizable_operation): Likewise.
679         (vectorizable_type_demotion): Likewise.
680         (vectorizable_type_promotion): Likewise.
681         (vectorizable_induction): Add restriction to not vectorize in case 
682         we have data-types of different sizes in the loop.
683
684 2008-08-14  Christophe Saout  <christophe@saout.de>
685             Uros Bizjak  <ubizjak@gmail.com>
686
687         PR target/37101
688         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
689         (*vec_concatv2di_rex64_sse4_1): Ditto.
690         (*vec_concatv2di_rex64_sse): Ditto.
691
692 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
693
694         PR middle-end/37103
695         * fold-const.c (fold_widened_comparison): Do not allow
696         sign changes that change the result even if shorter type
697         is wider than arg1_unw's type.
698
699 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
700
701         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
702         Skip if the multilib testing specifies -march that does not
703         agree with the one specified in the testcase.
704
705 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
706
707         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
708         zero extend SImode values being converted to TFmode before passing
709         to libcalls.
710
711 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
712
713         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
714         __PPU__ when targeting the Cell/B.E. PPU processor.
715
716 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
717
718         * gimple.h (gimple_call_set_chain): Accept SSA variables.
719         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
720         Rematerialize the static chain, if any.
721         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
722         static chain.
723
724 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
725
726         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
727         (new_loc_descr): Likewise.
728         (add_loc_descr): Likewise.
729         (size_of_loc_descr): Likewise.
730         (size_of_locs): Likewise.
731         (output_loc_operands): Likewise.
732         (output_loc_sequence): Likewise.
733         (new_reg_loc_descr): New.
734         (build_cfa_loc): Use it.
735         (build_cfa_aligned_loc): Likewise.
736         (one_reg_loc_descriptor): Likewise.
737         (based_loc_descr): Likewise.
738
739 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
740
741         PR 30551
742         * doc/invoke.texi (Wmain): Update.
743         * c-decl.c (start_decl): warn_main is only 0 or 1.
744         (start_function): Likewise. Fix formatting.
745         (finish_function): Delete redundant warning.
746         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
747         * c-opts (c_common_handle_option): -Wall only has effect if
748         warn_main is uninitialized. OPT_Wmain is automatically
749         handled. -pedantic also enables Wmain.
750         (c_common_post_options): Handle all logic for Wmain here.
751         * c-common.c (warn_main): Delete.
752         (check_main_parameter_types): Make pedwarns conditional on
753         OPT_Wmain.
754         * c-common.h (warn_main): Delete.
755
756 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
757
758         PR middle-end/36701
759         * expr.c (emit_group_store): Allocate stack temp with the
760         largest alignment when copying from register to stack.
761
762 2008-08-13  Richard Guenther  <rguenther@suse.de>
763
764         * tree.h (maybe_fold_offset_to_address): Declare.
765         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
766         (ccp_fold): Handle pointer conversions the same as fold_stmt.
767         Likewise for POINTER_PLUS_EXPR.
768         (maybe_fold_offset_to_reference): Enable disabled code.
769         (maybe_fold_offset_to_address): New function.
770         (fold_stmt_r): Use it.
771         (fold_gimple_assign): Likewise.
772         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
773         (gimplify_expr): Likewise.
774
775 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
776
777         * toplev.h (pedwarn_at): Fix declaration.
778         
779 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
780
781         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
782         LINK_SPEC): Use %R in -Y P argument.
783
784 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
785
786         PR c/15236
787         * diagnostic.c (pedwarn_at): New.
788         * toplev.h (pedwarn_at): Declare.
789         * c-tree.h (build_enumerator): Update declaration.
790         * c-decl.c (finish_enum): Update comment.
791         (build_enumerator): Take a location parameter. Give a pedwarn but do
792         not perform any conversion.
793         * c-parser.c (c_parser_enum_specifier): Set correct location for
794         enumerator.
795
796 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
797
798         PR 35635
799         * c-common.c (conversion_warning): Use a switch. Ignore boolean
800         expressions except for conversions to signed:1 bitfields. Handle
801         COND_EXPR with constant operands.
802         
803 2008-08-13  Richard Guenther  <rguenther@suse.de>
804
805         PR tree-optimization/15255
806         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
807         (struct oecount_s): New struct and VEC types.
808         (cvec): New global.
809         (oecount_hash): New function.
810         (oecount_eq): Likewise.
811         (oecount_cmp): Likewise.
812         (zero_one_operation): New function.
813         (build_and_add_sum): Likewise.
814         (undistribute_ops_list): Perform un-distribution of multiplication
815         and division on the chain of summands.
816         (should_break_up_subtract): Also break up subtracts for factors.
817         (reassociate_bb): Delete dead visited statements.
818         Call undistribute_ops_list.  Re-sort and optimize if it did something.
819         * passes.c (init_optimization_passes): Move DSE before
820         reassociation.
821         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
822         PHI nodes.
823
824 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
825
826         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
827
828         * doc/invoke.texi: Revert unintended checkin.
829
830 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
831
832         PR libgomp/26165
833         * gcc.c (include_spec_function): Tweak call to find_a_file.
834
835 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
836
837         PR middle-end/37014
838         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
839         and TRUTH_ORIF_EXPR.
840         * dojump.c (do_jump): Likewise.
841
842         PR tree-optimization/37084
843         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
844         if id->regimplify, don't assume stmt is a cast assignment.
845
846 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
847
848         * final.c (final_scan_insn): Use app_enable/app_disable functions.
849
850 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
851
852         PR bootstrap/37097
853         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
854         by last change.
855
856 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
857
858         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
859         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
860
861         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
862         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
863         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
864         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
865         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
866
867         * doc/tm.texi (Storage Layout): Remove documentation for
868         TARGET_FLOAT_FORMAT.
869
870         * simplify-rtx.c (simplify_binary_operation_1): Replace
871         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
872
873 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
874
875         * real.h (struct real_format): New member has_sign_dependent_rounding.
876         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
877         spu_single_format, ieee_double_format, mips_double_format,
878         motorola_double_format, ieee_extended_motorola_format,
879         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
880         ieee_extended_intel_96_round_53_format, ibm_extended_format,
881         mips_extended_format, ieee_quad_format, mips_quad_format,
882         vax_f_format, vax_d_format, vax_g_format): Initialize it.
883         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
884
885         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
886         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
887         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
888         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
889         (ROUND_TOWARDS_ZERO): Likewise.
890
891         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
892         (FLOAT_MODE_FORMAT): New macro.
893         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
894         (MODE_COMPOSITE_P): ... this new macro.
895         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
896         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
897         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
898
899         * flags.h: Include "real.h".
900
901         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
902         REAL_MODE_FORMAT_COMPOSITE_P.
903         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
904
905         * doc/tm.texi (Storage Layout): Remove documentation of
906         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
907         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
908         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
909         they only apply to libgcc2.a.
910
911 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
912
913         * config/spu/float_disf.c: New file.
914         * config/spu/float_unsdisf.c: New file.
915         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
916         (LIB2FUNCS_EXCLUDE): Define.
917
918 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
919             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
920
921         * real.h (struct real_format): New member round_towards_zero.
922         * real.c (round_for_format): Respect fmt->round_towards_zero.
923         (ieee_single_format, mips_single_format, motorola_single_format,
924         spu_single_format, ieee_double_format, mips_double_format,
925         motorola_double_format, ieee_extended_motorola_format,
926         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
927         ieee_extended_intel_96_round_53_format, ibm_extended_format,
928         mips_extended_format, ieee_quad_format, mips_quad_format,
929         vax_f_format, vax_d_format, vax_g_format): Initialize it.
930         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
931
932         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
933         real_format to choose rounding mode when calling MPFR functions.
934         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
935         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
936
937         * real.h (real_to_decimal_for_mode): Add prototype.
938         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
939         Respect target rounding mode when generating decimal representation.
940         (real_to_decimal): New stub for backwards compatibility.
941         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
942         real_to_decimal_for_mode instead of real_to_decimal.
943
944         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
945
946 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
947             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
948
949         * real.c (spu_single_format): New variable.
950         * real.h (spu_single_format): Declare.
951
952         * config/spu/spu.c (spu_override_options): Install SFmode format.
953         (spu_split_immediate): Use integer mode to operate on pieces of
954         floating-point values in all cases.
955
956         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
957         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
958         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
959
960 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
961
962         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
963
964 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
965
966         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
967
968 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
969
970         PR c++/36688
971         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
972         on the VAR_DECL instead of TYPE_READONLY on its type.
973
974 2008-08-12  Ira Rosen  <irar@il.ibm.com>
975
976         * tree-vectorizer.c: Depend on langhooks.h.
977         (supportable_widening_operation): Add two arguments. Support double
978         type conversions.
979         (supportable_narrowing_operation): Likewise.
980         * tree-vectorizer.h (supportable_widening_operation): Add two 
981         arguments.
982         (supportable_narrowing_operation): Likewise.
983         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
984         supportable_widening_operation with correct arguments.
985         * tree-vect-transform.c (vectorizable_conversion): Likewise.
986         (vectorizable_type_demotion): Support double type conversions.
987         (vectorizable_type_promotion): Likewise.
988         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
989
990 2008-08-11  Michael Matz  <matz@suse.de>
991
992         * i386/i386.c (override_options): Move initialisation from
993         flag_schedule_insns_after_reload to here from ...
994         (optimization_options): ... here.
995
996 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
997
998         PR rtl-optimization/36998
999         * dwarf2out.c (compute_barrier_args_size_1,
1000         compute_barrier_args_size): Temporarily remove assertions.
1001
1002 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1003
1004         PR middle-end/20644
1005         * tree-ssa.c (struct walk_data): Add new flag
1006         warn_possibly_uninitialized.
1007         (warn_uninitialized_var): Use it.
1008         (warn_uninitialized_vars): New.
1009         (execute_early_warn_uninitialized): Call it.
1010         (execute_late_warn_uninitialized): Likewise.
1011
1012 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1013
1014         PR middle-end/36238
1015         * reload1.c (gen_reload): Guard calls to get_secondary_mem
1016         for memory subregs.
1017
1018 2008-08-09  Jan Hubicka  <jh@suse.cz>
1019
1020         PR target/37055
1021         * optabs.c (maybe_emit_unop_insn): Remove produced code if
1022         expansion failed.
1023         (expand_fix): Be prepared for expansion to fail.
1024         (expand_sfix_optab): Remove instructions if expansion failed.
1025
1026 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
1027
1028         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
1029         avr31 architecture.
1030         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
1031         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1032
1033 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1034
1035         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
1036         mips/t-libgcc-mips16 to tmake_file.
1037         * config/mips/mips-protos.h (mips_call_type): New enum.
1038         (mips_pic_base_register, mips_got_load): Declare.
1039         (mips_restore_gp): Take an rtx argument.
1040         (mips_use_pic_fn_addr_reg_p): Declare.
1041         (mips_expand_call): Replace the sibcall_p argument with
1042         a mips_call_type argument.  Add a lazy_p parameter.
1043         (mips_split_call): Declare.
1044         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
1045         (MIPS16_PIC_TEMP): Likewise.
1046         (reg_class): Delete M16_NA_REGS.
1047         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
1048         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
1049         (mips_split_hi_p): Declare.
1050         * config/mips/mips.c (mips_split_hi_p): New array.
1051         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
1052         (mips_got_symbol_type_p): New function.
1053         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
1054         (mips16_stub_function_p): New function.
1055         (mips16_local_function_p): Likewise.
1056         (mips_use_pic_fn_addr_reg_p): Likewise.
1057         (mips_cannot_force_const_mem): Return false for HIGHs.
1058         Extend CONST_INT and symbolic handling to MIPS16, using
1059         mips_symbol_insns to check that the base symbol type is a
1060         legitimate constant.  Reject GOT-based constants if
1061         TARGET_MIPS16_PCREL_LOADS.
1062         (mips_const_insns): Check targetm.cannot_force_const_mem when
1063         decomposing a symbolic base and a large offset.
1064         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
1065         When calling a function that needs $25 from MIPS16 code,
1066         move the target address into $25 separately and add a USE
1067         to the call insn.
1068         (mips16_gp_pseudo_reg): Insert the initializer immediately
1069         before the first real insn.
1070         (mips_pic_base_register, mips_got_load): New functions.
1071         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
1072         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
1073         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
1074         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
1075         (mips_call_tls_get_addr): Update the call to mips_expand_call,
1076         also passing NULL_RTX rather than const0_rtx as the aux argument.
1077         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
1078         instead of TARGET_EXPLICIT_RELOCS.
1079         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
1080         (mips_load_call_address): Replace the sibcall_p argument with
1081         a mips_call_type argument.  Use mips_got_load.
1082         (mips16_local_alias): New structure.
1083         (mips16_local_aliases): New variable.
1084         (mips16_local_aliases_hash): New function.
1085         (mips16_local_aliases_eq): Likewise.
1086         (mips16_local_alias): Likewise.
1087         (mips16_stub_function): Likewise.
1088         (mips16_build_function_stub): Create a local alias for the target
1089         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
1090         .cpload directive and an R_MIPS_NONE relocation for the target
1091         function, then load the alias rather than the function itself.
1092         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
1093         (mips16_copy_fpr_return_value): Use mips16_stub_function and
1094         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
1095         (mips16_build_call_stub): Replace the FN parameter with an
1096         FN_PTR parameter.  Force the address into a register if it
1097         isn't a call_insn_operand; don't rely on the caller to do this.
1098         If a call to a locally-defined and locally-binding MIPS16
1099         function must be made indirectly, redirect the call to the
1100         function's local alias.  Use mips16_stub_function_p,
1101         mips16_stub_function, mips_expand_call and use_reg.
1102         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
1103         Use explicit %hi and %lo accesses where possible.
1104         Use MIPS_CALL to generate the correct code form of a
1105         jal instruction.  Add clobbers of $18 instead of uses.
1106         Update the call to mips_emit_call_insn.
1107         (mips_expand_call): Replace the SIBCALL_P argument with a
1108         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
1109         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
1110         allowing it to modify the call address.  Update the calls to
1111         mips_load_call_address and mips_emit_call_insn.
1112         (mips_split_call): New function.
1113         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
1114         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
1115         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
1116         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
1117         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
1118         if TARGET_MIPS16.
1119         (mips_cprestore_slot): New function.
1120         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
1121         and use mips_cprestore_slot.
1122         (mips_output_function_prologue): Handle TARGET_MIPS16 for
1123         LOADGP_OLDABI.
1124         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
1125         then use a copygp_mips16 instruction to set up $28.
1126         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
1127         (mips16_lay_out_constants): Call split_all_insns_noflow.
1128         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
1129         false if TARGET_MIPS16.
1130         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
1131         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
1132         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
1133         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
1134         MIPS16 code.  Allow MIPS16 o32 PIC.
1135         (mips_override_options): Allow MIPS16 o32 PIC.
1136         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
1137         after reload if TARGET_USE_GOT.
1138         (UNSPEC_COPYGP): New constant.
1139         (length): Use a default length of 8 for MIPS16 GOT loads.
1140         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
1141         (*got_page<mode>): Check mips_split_hi_p.
1142         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
1143         (unspec_got<mode>, unspec_call<mode>): New expanders.
1144         (load_got<mode>, load_call<mode>): Remove the length attributes.
1145         Use a got attribute instead of a type attribute.
1146         (copygp_mips16): New insn.
1147         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
1148         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
1149         (sibcall, sibcall_value, call, call_value): Update the calls
1150         to mips_expand_call.
1151         (call_internal, call_value_internal): Use mips_split_call.
1152         (call_value_multiple_internal): Likewise.
1153         (call_split): Move after call_internal (the insn it is split from).
1154         (call_internal_direct, call_value_internal_direct): Turn into
1155         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
1156         (call_direct_split, call_value_direct_split): New patterns.
1157         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
1158         and use M16_REGS instead of M16_NA_REGS.
1159         * config/mips/predicates.md (const_call_insn_operand): Replace
1160         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
1161         mips_use_pic_fn_addr_reg_p check.
1162         (move_operand): Reject HIGHs if mips_split_hi_p.
1163         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
1164         (__mips16_floatunsisf): Inline __mips16_floatsisf.
1165         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
1166         * config/mips/libgcc-mips16.ver: New file.
1167         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
1168         $(srcdir)/config/mips/libgcc-mips16.ver.
1169
1170 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1171
1172         * config/mips/mips.c (mips_unspec_address_offset): Move earlier in file.
1173         (mips_unspec_address, mips_unspec_offset_high): Likewise.
1174         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
1175         (mips16_cfun_returns_in_fpr_p): Likewise.
1176
1177 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1178
1179         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
1180         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
1181         rather than 4 to PC.
1182
1183 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1184
1185         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
1186         (FUNCTION_PROFILER): Save the static chain pointer into $2
1187         beforehand and restore it aftewards.
1188         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
1189         address directly into $25 and call the function through $25;
1190         do not clobber $3.  Pad the DImode version to cover the space
1191         left by the deleted $25 <- $3 move.
1192         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
1193         the removal of the $25 <- $3 move.
1194         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
1195         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
1196
1197 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
1198             Daniel Jacobowitz  <dan@codesourcery.com>
1199
1200         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
1201         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
1202         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
1203         * config/mips/mips.c (mips_start_function_definition): New function.
1204         (mips_end_function_definition): Likewise.
1205         (mips_output_function_prologue): Use mips_start_function_definition.
1206         (mips_output_function_epilogue): Use mips_end_function_definition.
1207         (build_mips16_function_stub): Use mips_start_function_definition
1208         and mips_end_function_definition.
1209         (build_mips16_call_stub): Likewise.
1210
1211 2008-08-09  Richard Guenther  <rguenther@suse.de>
1212
1213         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
1214         * gimple.h (gimple_call_fn): Adjust comment.
1215         (gimple_call_set_fndecl): New function.
1216         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
1217         longer having bare FUNCTION_DECL operand.
1218         (gimple_call_return_type): Likewise.
1219         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
1220
1221         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
1222         (gimple_mod_pow2): Likewise.
1223         (gimple_mod_subtract): Likewise.
1224         (gimple_ic): Likewise.
1225         (gimple_stringop_fixed_value): Likewise.
1226         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
1227         longer having bare FUNCTION_DECL operand.
1228         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
1229         * omp-low.c (optimize_omp_library_calls): Likewise.
1230         * cgraphunit.c (update_call_expr): Likewise.
1231         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
1232         (execute_convert_to_rsqrt): Likewise.
1233         * cfgexpand.c (gimple_to_tree): Simplify.
1234         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
1235         bare FUNCTION_DECL operand.
1236         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
1237         (convert_gimple_call): Use gimple_call_fndecl.
1238         * c-common.c (c_warn_unused_result): Likewise.
1239
1240 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1241
1242         PR c/17880
1243         * c-typeck.c (digest_init): Call verify_sequence_points from here.
1244         (c_finish_return): Likewise.
1245         (c_start_case): Likewise.
1246         * c-common.c (warn_for_collisions_1): Use explicit location in
1247         warning.
1248         * c-parser.c (c_parser_condition): New. Call
1249         verify_sequence_points.
1250         (c_parser_paren_condition): Call c_parser_condition.
1251         (c_parser_for_statement): Call c_parser_condition.
1252
1253 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1254
1255         PR 36901
1256         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.  
1257         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
1258         Moved from diagnostic.h
1259         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
1260         DK_PERMERROR.
1261         (emit_diagnostic): New.
1262         (warning0, pedwarn0): Delete.
1263         (warning, warning_at, pedwarn, permerror): Return bool.  
1264         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
1265         Moved to diagnostic.c.
1266         (struct diagnostic_context): Use correct type for
1267         classify_diagnostic.
1268         (diagnostic_report_diagnostic): Update declaration.
1269         (emit_diagnostic): Declare.
1270         * errors.c (warning): Return bool.  
1271         * errors.h (warning): Update declaration.
1272         * toplev.h (warning0, pedwarn0): Delete.
1273         (warning, warning_at, pedwarn, permerror): Return bool.
1274         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
1275         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
1276         inform. Update all calls.
1277         (diagnose_mismatched_decls): Check return value of warning/pedwarn
1278         before giving informative note.
1279         (implicit_decl_warning): Likewise.  
1280         * c-typeck.c (build_function_call): Likewise.  
1281         * tree-sssa.c (warn_uninit): Likewise.  
1282         * builtins.c (gimplify_va_arg_expr): Likewise.
1283
1284 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1285
1286         PR 7651
1287         * doc/invoke.texi (-Wextra): Move warning from here...
1288         (-Wuninitialized): ... to here.
1289         
1290 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1291
1292         PR 28875
1293         * flags.h (set_Wunused): Delete
1294         * toplev.c (process_options): Handle Wunused flags here.
1295         * opts.c (maybe_warn_unused_parameter): Delete.
1296         (common_handle_option): Replace set_Wunused by warn_unused.
1297         (set_Wextra): Do not handle Wunused-parameter here.
1298         (set_Wunused): Delete.
1299         * c-opts.c (c_common_handle_option): Replace set_Wunused by
1300         warn_unused.
1301         * common.opt (Wunused): Add Var and Init.
1302         (Wunused-function): Likewise.
1303         (Wunused-label): Likewise.
1304         (Wunused-parameter): Likewise.
1305         (Wunused-value): Likewise.
1306         (Wunused-variable): Likewise.
1307         
1308 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
1309
1310         * doc/invoke.texi: Add cpu_type power7.
1311         * config.in (HAVE_AS_VSX): New.
1312         * config.gcc: Add cpu_type power7.
1313         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
1314         VSX instructions.
1315         * configure: Regenerate.
1316         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
1317         power5.
1318         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
1319         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
1320         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
1321
1322 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
1323
1324         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
1325         type to vectorize.builtin_conversion.
1326         (vectorizable_conversion): Likewise.
1327         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
1328         integral type as input.
1329         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
1330         FIX_TRUNC_EXPR.
1331         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
1332         and ALTIVEC_BUILTIN_VCTSXS.
1333         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
1334         formatting. 
1335
1336 2008-08-08  Richard Guenther  <rguenther@suse.de>
1337
1338         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
1339         (surely_varying_stmt_p): Calls are varying only if they are
1340         non-builtin and not indirect or have no result.
1341         (ccp_fold): Re-instantiate code before the tuples merge.
1342
1343 2008-08-08  Richard Guenther  <rguenther@suse.de>
1344
1345         PR tree-optimization/37056
1346         * gimple.h (gimple_assign_rhs_class): New helper function.
1347         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
1348         unary operations properly.
1349
1350 2008-08-07  Jan Hubicka  <jh@suse.cz>
1351
1352         * i386.h (ix86_size_cost): Declare.
1353         (ix86_cur_cost): New function macro.
1354         * i386.md (peepholes expanding size and splitters): Predicate by
1355         optimize_insn_for_speed_p.
1356         (peepholes reduce size and splitters): Predicate by
1357         optimize_insn_for_size_p.
1358         * i386.c (ix86_size_cost): Rename from ...
1359         (size_cost): This one.
1360         (override_options): Update.
1361         (decide_alg): Likewise.
1362         (ix86_expand_clear): Use RTL profile.
1363         (ix86_pad_returns): Use RTL profile.
1364
1365 2008-08-07  Jan Hubicka  <jh@suse.cz>
1366
1367         * recog.c (split_all_insns): Set RTL profile
1368         (peephole2_optimize): Likewise.
1369         * function.c (thread_prologue_and_epilogue_insns): Likewise.
1370         * combine.c (combine_instructions): Likewise.
1371
1372 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1373
1374         * c-common.c (c_common_reswords): Also warn about keyword "bool".
1375
1376 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
1377         
1378         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
1379         value in a6 after the set_frame_ptr insn.
1380         
1381 2008-08-07  Richard Henderson  <rth@redhat.com>
1382
1383         PR debug/37033
1384         * gcc.c (cpp_options): Pass along -g*.
1385
1386 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
1387
1388         * config/arm/arm.c (output_move_neon): Update comment describing
1389         big-endian vector layout.
1390         (arm_assemble_integer): Do not handle big-endian NEON vectors
1391         specially.
1392         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
1393         neon_vget_lane<mode>_sext_internal,
1394         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
1395         element indices for big-endian.
1396
1397 2008-08-07  Richard Henderson  <rth@redhat.com>
1398
1399         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
1400         * configure, config.in: Rebuild.
1401         * debug.h (dwarf2out_do_cfi_asm): Declare.
1402         * c-cppbuiltin.c (c_cpp_builtins): Use it.
1403         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
1404         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
1405         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
1406
1407 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
1408
1409         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
1410         movv2si_internal): Combine into mov<mode>_internal.
1411         (movv2si_internal_2): Remove.
1412
1413 2008-08-07  Jan Hubicka  <jh@suse.cz>
1414
1415         PR target/37048
1416         * i386.md (single stringop patterns): Enable unconditionally. 
1417
1418 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
1419
1420         PR target/36992
1421         * config/i386/emmintrin.h (_mm_move_epi64): Use
1422         __builtin_ia32_movq128.
1423
1424         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
1425         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
1426
1427         * config/i386/sse.md (sse2_movq128): New.
1428
1429         * doc/extend.texi: Document __builtin_ia32_movq128.
1430
1431 2008-08-07  Richard Guenther  <rguenther@suse.de>
1432
1433         PR middle-end/37042
1434         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
1435         pointers can access anything.
1436
1437 2008-08-06  Jan Hubicka  <jh@suse.cz>
1438
1439         * optabs.c (emit_unop_insn): Break out to ...
1440         (maybe_emit_unop_insn): ... this one.
1441         (expand_sfix_optab): Use maybe variant.
1442         * optabs.h (maybe_emit_unop_insn): Declare.
1443
1444         * i386.md (mov0 patterns): Enable by default.
1445         (FP conversion expanders): Disable expansion of code expanding
1446         sequences when instruction should be optimized for size.
1447         (single strinop patterns): Enable when optimizing for size.
1448         (string expanders): Disable expanding of code expanding sequences
1449         when optimizning instruction for size.
1450         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
1451         per BB basis.
1452         (ix86_fp_comparison_sahf_cost): Likewise.
1453         (ix86_expand_branch): Likewise.
1454         (ix86_expand_ashl_const): Likewise.
1455         (ix86_split_ashl): Likewise.
1456         (ix86_expand_strlen): Likewise.
1457         (ix86_emit_fp_unordered_jump): Likewie.
1458
1459 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1460
1461         * c-common.c: Fix typo.
1462         (c_common_reswords): Activate more C++ keyword warnings.
1463
1464         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
1465
1466 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1467
1468         PR 26785
1469         * diagnostic.c (permerror_at): New.
1470         * toplev.h (permerror_at): Declare.
1471         
1472 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
1473             Ira Rosen  <irar@il.ibm.com>
1474
1475         * tree-vect-transform.c (vect_model_simple_cost): Return
1476         immediately if stmt is pure SLP.
1477         (vect_model_store_cost): Ditto.
1478         (vect_model_load_cost): Ditto.
1479         (vectorizable_store): Remove PURE_SLP check before call
1480         to vect_model_store_cost.
1481         (vect_model_store_cost): When checking whether stmt describe
1482         strided access, add a check that it is not slp_node.
1483
1484 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1485
1486         PR 8715
1487         * c-common.c (warn_for_sign_compare): New. Handle separately the
1488         case that 'constant' is zero.
1489         * c-typeck.c (build_binary_op): Move code to c-common.c
1490         
1491 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1492
1493         * config/alpha/alpha.c (alpha_preferred_reload_class,
1494         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
1495         alpha_output_mi_thunk_osf): Avoid C++ keywords.
1496         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
1497         * config/arm/arm.md: Likewise.
1498         * config/avr/avr-protos.h (preferred_reload_class,
1499         test_hard_reg_class, avr_simplify_comparison_p,
1500         out_shift_with_cnt, class_max_nregs): Likewise.
1501         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
1502         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
1503         preferred_reload_class, test_hard_reg_class): Likewise.
1504         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
1505         bfin_memory_move_cost, bfin_secondary_reload,
1506         bfin_output_mi_thunk): Likewise.
1507         * config/crx/crx.c (crx_secondary_reload_class,
1508         crx_memory_move_cost): Likewise.
1509         * config/frv/frv-protos.h (frv_secondary_reload_class,
1510         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
1511         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
1512         frv_secondary_reload_class, frv_class_likely_spilled_p,
1513         frv_class_max_nregs): Likewise.
1514         * config/h8300/h8300.c (h8300_classify_operand,
1515         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
1516         Likewise.
1517         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
1518         * config/ia64/ia64.c (ia64_preferred_reload_class,
1519         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
1520         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
1521         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
1522         Likewise.
1523         * config/m68hc11/m68hc11.c (preferred_reload_class,
1524         m68hc11_memory_move_cost): Likewise.
1525         * config/mcore/mcore.c (mcore_secondary_reload_class,
1526         mcore_reload_class): Likewise.
1527         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
1528         mips_class_max_nregs, mips_cannot_change_mode_class,
1529         mips_preferred_reload_class, mips_secondary_reload_class,
1530         mips_output_mi_thunk): Likewise.
1531         * config/mmix/mmix.c (mmix_preferred_reload_class,
1532         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
1533         Likewise.
1534         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
1535         Likewise.
1536         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
1537         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
1538         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
1539         * config/rs6000/rs6000.c (paired_expand_vector_init,
1540         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
1541         compare_section_name, rs6000_memory_move_cost): Likewise.
1542         * config/s390/s390.c (s390_emit_compare_and_swap,
1543         s390_preferred_reload_class, s390_secondary_reload,
1544         legitimize_pic_address, legitimize_tls_address,
1545         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
1546         s390_class_max_nregs): Likewise.
1547         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
1548         * config/s390/s390.md: Likewise.
1549         * config/score/score-protos.h (score_secondary_reload_class,
1550         score_preferred_reload_class): Likewise.
1551         * config/score/score.c (score_preferred_reload_class,
1552         score_secondary_reload_class): Likewise.
1553         * config/score/score3.c (score3_output_mi_thunk,
1554         score3_preferred_reload_class, score3_secondary_reload_class,
1555         score3_hard_regno_mode_ok): Likewise.
1556         * config/score/score3.h (score3_preferred_reload_class,
1557         score3_secondary_reload_class): Likewise.
1558         * config/score/score7.c (score7_output_mi_thunk,
1559         score7_preferred_reload_class, score7_secondary_reload_class,
1560         score7_hard_regno_mode_ok): Likewise.
1561         * config/score/score7.h (score7_preferred_reload_class,
1562         score7_secondary_reload_class): Likewise.
1563         * config/sh/sh.c (prepare_move_operands, output_far_jump,
1564         output_branchy_insn, add_constant, gen_block_redirect,
1565         sh_insn_length_adjustment, sh_cannot_change_mode_class,
1566         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload):
1567         Likewise.
1568         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
1569         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
1570         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
1571         xstormy16_preferred_reload_class): Likewise.
1572         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
1573         xtensa_expand_atomic, override_options,
1574         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
1575         Likewise.
1576         * reorg.c (try_merge_delay_insns): Likewise.
1577         * tree.c (merge_dllimport_decl_attributes): Likewise.
1578
1579         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
1580
1581 2008-08-06  Michael Matz  <matz@suse.de>
1582
1583         * Makefile.in (write_entries_to_file): Quote words.
1584         * gengtype.c: (read_input_line): Skip over leading white-space.
1585
1586 2008-08-06  Marc Gauthier  <marc@tensilica.com>
1587
1588         * config.gcc: Match more processor names for Xtensa.
1589         * configure.ac: Likewise.
1590         * doc/install.texi (Specific): Likewise.
1591         * configure: Regenerate.
1592
1593 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1594
1595         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
1596         * calls.c (avoid_likely_spilled_reg): Likewise.
1597         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
1598         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
1599         * config/i386/i386.c (ix86_expand_special_args_builtin,
1600         ix86_secondary_reload): Likewise.
1601         * except.c (struct eh_region, gen_eh_region_catch,
1602         remove_unreachable_regions, duplicate_eh_regions,
1603         assign_filter_values, build_post_landing_pads,
1604         sjlj_find_directly_reachable_regions, remove_eh_handler,
1605         reachable_next_level, foreach_reachable_handler,
1606         can_throw_internal_1, can_throw_external_1,
1607         collect_one_action_chain): Likewise.
1608         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
1609         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
1610         * function.c (update_temp_slot_address, instantiate_new_reg,
1611         instantiate_virtual_regs_in_rtx,
1612         instantiate_virtual_regs_in_insn): Likewise.
1613         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
1614         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
1615         gimplify_cleanup_point_expr): Likewise.
1616         * ipa-cp.c (ipcp_lattice_changed): Likewise.
1617         * passes.c (next_pass_1): Likewise.
1618         * print-tree.c (print_node_brief, print_node): Likewise.
1619         * profile.c (branch_prob): Likewise.
1620         * tree-dump.c (dump_register): Likewise.
1621         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
1622         Likewise.
1623         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
1624         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
1625         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
1626         copy_arguments_for_versioning, copy_static_chain): Likewise.
1627         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
1628         add_new_name_mapping, register_new_name_mapping): Likewise.
1629         * tree-mudflap.c (mf_xform_derefs): Likewise.
1630         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
1631         get_init_expr, combine_chains): Likewise.
1632         * tree-pretty-print.c (dump_generic_node): Likewise.
1633         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
1634         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
1635         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
1636         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
1637
1638 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1639
1640         PR middle-end/37010
1641         * calls.c (expand_call): Use the biggest preferred stack
1642         boundary.
1643
1644 2008-08-06  Michael Matz  <matz@suse.de>
1645
1646         PR target/36613
1647         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
1648         for reused reload, instead of overwriting them.
1649
1650 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
1651
1652         PR middle-end/37009
1653         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
1654         for incoming stack boundary.
1655
1656         * function.c (assign_parm_find_entry_rtl): Update
1657         parm_stack_boundary.
1658
1659         * function.h (rtl_data): Add parm_stack_boundary.
1660
1661         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
1662         parm_stack_boundary for incoming stack boundary.
1663
1664 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
1665
1666         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
1667         for unrepresentable subregs or treat them as equal to other regs
1668         or subregs with the same register number.
1669
1670 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
1671
1672         PR middle-end/35432
1673         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
1674         if want_value.
1675
1676 2008-08-06  Jan Hubicka  <jh@suse.cz>
1677
1678         * predict.c (maybe_hot_frequency_p): When profile is absent, all
1679         frequencies might be hot.
1680
1681 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
1682
1683         * reload.c (find_reloads): Force constants into literal pool
1684         also if they are wrapped in a SUBREG.
1685
1686 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1687
1688         PR target/35659
1689         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
1690         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
1691         Don't allow predicated instructions for data speculation.
1692         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
1693         declaration.
1694
1695 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1696
1697         * haifa-sched.c (extend_global): Split to extend_global_data and
1698         extend_region_data.  Update all uses.
1699         (extend_all): Rename to extend_block_data.
1700
1701 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1702
1703         * sched-rgn.c (new_ready): Check if instruction can be
1704         speculatively scheduled before attempting speculation.
1705         (debug_rgn_dependencies): Remove wrongful assert.
1706
1707 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
1708
1709         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
1710         
1711 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
1712         
1713         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
1714         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
1715         va_size, and type_size.
1716         
1717 2008-08-04  Jason Merrill  <jason@redhat.com>
1718
1719         PR c++/37016
1720         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
1721         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
1722
1723 2008-08-05  Richard Henderson  <rth@redhat.com>
1724
1725         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
1726         * configure: Rebuild.
1727
1728 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1729
1730         PR tree-opt/37024
1731         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
1732         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
1733         is a conversion.
1734
1735 2008-08-05  Richard Henderson  <rth@redhat.com>
1736
1737         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
1738         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
1739         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
1740         * common.opt (fdwarf2-cfi-asm): New.
1741         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
1742         * config.in, configure: Rebuild.
1743         * dwarf2asm.c (dw2_asm_output_data_raw): New.
1744         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
1745         (dw2_force_const_mem): Externalize.
1746         * dwarf2asm.h: Update.
1747         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
1748         generate a real label.
1749         (output_cfi_directive): New.
1750         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
1751         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
1752         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
1753         and .cfi_lsda.
1754         (dwarf2out_end_epilogue): Emit .cfi_endproc.
1755         (output_loc_operands_raw, output_loc_sequence_raw): New.
1756         (output_cfa_loc_raw): New.
1757         
1758 2008-08-05  Paul Brook  <paul@codesourcery.com>
1759
1760         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
1761         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
1762         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
1763         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
1764         * config/arm/arm.h (TARGET_VFPD32): Define.
1765         (TARGET_VFP3): Use TARGET_VFPD32.
1766         (fputype): Add FPUTYPE_VFP3D16.
1767         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
1768         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
1769         * config/arm/arm-cores.def: Add cortex-r4f.
1770         * config/arm/arm-tune.md: Regenerate.
1771
1772 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1773
1774         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
1775         Reword some comments throughout the file.
1776
1777         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
1778         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
1779         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of MFC_MIN_DMA_LIST_ELEMENTS.
1780         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of MFC_MAX_DMA_LIST_ELEMENTS.
1781
1782         (MFC_START_ENABLE): Remove PPU-only define.
1783         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
1784         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
1785
1786         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
1787         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
1788         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
1789         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
1790         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
1791         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
1792         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
1793
1794         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
1795         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
1796         (mfc_sdcrt, mfc_sdcrtst): Likewise.
1797         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
1798
1799         (spu_read_machine_status): Fix typo.
1800
1801 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1802
1803         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
1804         SUBREG of multi-word hard register.
1805         * config/spu/spu.c (valid_subreg): Likewise.
1806         (adjust_operand): Handle SUBREGs of multi-word hard registers.
1807
1808 2008-08-04  Richard Guenther  <rguenther@suse.de>
1809
1810         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
1811         the candidate with the stripped base if that base is different
1812         from the original base even for offset zero.
1813
1814 2008-08-04  Richard Guenther  <rguenther@suse.de>
1815
1816         PR middle-end/36691
1817         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
1818         check for no_overflow.
1819
1820 2008-08-04  Richard Guenther  <rguenther@suse.de>
1821
1822         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
1823
1824 2008-08-04  Paul Brook  <paul@codesourcery.com>
1825
1826         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
1827         (arm_order_regs_for_local_alloc): New function.
1828         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
1829         prototype.
1830         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
1831
1832 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
1833
1834         PR target/37012
1835         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
1836         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
1837         (ix86_expand_epilogue): Likewise.
1838
1839 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
1840
1841         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
1842         in comments.
1843
1844 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
1845
1846         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
1847         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
1848         (*movv2sf_internal_rex64): Ditto.
1849
1850 2008-08-03  Jan Hubicka  <jh@suse.cz>
1851
1852         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
1853         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
1854         * expmed.c (expand_smod_pow2): Likewise.
1855
1856 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
1857
1858         PR target/36992
1859         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
1860         alternative 0 of operand 1.
1861         (*vec_concatv2di_rex64_sse): Ditto.
1862         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
1863         of operand 1.
1864         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
1865         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
1866         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
1867         (*movv2sf_internal_rex64): Ditto.
1868
1869 2008-08-02  Richard Guenther  <rguenther@suse.de>
1870
1871         PR target/35252
1872         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
1873         (ssedoublesizemode): New mode attribute.
1874         (sse_shufps): Call gen_sse_shufps_v4sf.
1875         (sse_shufps_1): Macroize.
1876         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
1877         (sse2_shufpd_1): Macroize.
1878         (vec_extract_odd, vec_extract_even): New expanders.
1879         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
1880         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
1881         * i386.c (ix86_expand_vector_init_one_nonzero): Call
1882         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
1883         (ix86_expand_vector_set): Likewise.
1884         (ix86_expand_reduc_v4sf): Likewise.
1885
1886 2008-08-01  Doug Kwan  <dougkwan@google.com>
1887
1888         * matrix-reorg.c: Re-enable all code.
1889         (struct malloc_call_data): Change CALL_STMT to gimple type.
1890         (collect_data_for_malloc_call): Tuplify.
1891         (struct access_site_info): Change STMT to gimple type.
1892         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
1893         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
1894         (struct free_info): Change STMT to gimple type.
1895         (struct matrix_access_phi_node):  Change PHI to gimple type.
1896         (get_inner_of_cast_expr): Remove.
1897         (may_flatten_matrices_1): Tuplify.
1898         (may_flatten_matrices): Ditto.
1899         (mark_min_matrix_escape_level): Ditto.
1900         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
1901         (ssa_accessed_in_call_rhs): New
1902         (ssa_accessed_in_assign_rhs): New
1903         (record_access_alloc_site_info): Tuplify.
1904         (add_allocation_site): Ditto.
1905         (analyze_matrix_allocation_site): Ditto.
1906         (analyze_transpose): Ditto.
1907         (get_index_from_offset): Ditto.
1908         (update_type_size): Ditto.
1909         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
1910         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
1911         (analyze_accesses_for_phi_node): Tuplify.
1912         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
1913         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
1914         (analyze_matrix_accesses): Tuplify.
1915         (check_var_data): New call-back type for check_var_notmodified_p.
1916         (check_var_notmodified_p): Tuplify and use call-back struct to
1917         return statement found.
1918         (can_calculate_expr_before_stmt): Factor out statement related code
1919         into ...
1920         (can_calculate_stmt_before_stmt): New.
1921         (check_allocation_function): Tuplify.
1922         (find_sites_in_func): Ditto.
1923         (record_all_accesses_in_func): Ditto.
1924         (transform_access_sites): Ditto.
1925         (transform_allocation_sites): Ditto.
1926         (matrix_reorg): Re-enable.
1927         (gate_matrix_reorg): Re-enable.
1928
1929 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
1930
1931         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
1932         for labels for which it hasn't been set yet.  If it has been set,
1933         stop walking insns and continue with next worklist item.
1934         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
1935         if the only BARRIER is at the very end of a function.
1936
1937 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
1938
1939         * cfgexpand.c (expand_stack_alignment): Assert that
1940         stack_realign_drap and drap_rtx must match.
1941
1942         * function.c (instantiate_new_reg): If DRAP is used to realign
1943         stack, replace virtual_incoming_args_rtx with internal arg
1944         pointer.
1945
1946 2008-08-01  Richard Guenther  <rguenther@suse.de>
1947
1948         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
1949         loop information only if we initialized it.
1950         (execute_pre): Call fini_pre with in_fre.
1951         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
1952         if we do not unroll because we hit max-completely-peeled-insns.
1953         Use our estimation for consistency, do allow shrinking.
1954
1955 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
1956
1957         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
1958         with MIN_STACK_BOUNDARY.
1959         (ix86_update_stack_boundary): Likewise.
1960         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
1961         STACK_BOUNDARY.
1962
1963         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
1964         (MIN_STACK_BOUNDARY): This.
1965
1966 2008-08-01  Richard Guenther  <rguenther@suse.de>
1967
1968         PR middle-end/36997
1969         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
1970
1971 2008-08-01  Richard Guenther  <rguenther@suse.de>
1972
1973         PR tree-optimization/36988
1974         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
1975         do not matter if that doesn't change volatile qualification.
1976
1977 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
1978
1979         * configure.ac: Do not generate libada-mk.  Do not subst
1980         host_cc_for_libada.
1981         * libada-mk.in: Remove.
1982         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
1983         * configure: Regenerate.
1984
1985 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
1986
1987         * tree-pass.h: Added comment about not dumping passes with name
1988         starting with star in struct opt_pass.
1989         * passes.c (register_dump_files_1): Don't do dump for a pass with
1990         name starting with star.
1991         * doc/passes.texi (Pass manager): Mention pass names and special
1992         meaning of star prefix to avoid dump.
1993
1994 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
1995
1996         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
1997         to MIPS64r2.
1998         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
1999         (ISA_MIPS64R2): New macro.
2000         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
2001         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
2002         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
2003         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
2004         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
2005         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
2006         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
2007         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
2008         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
2009         Move up to keep list alphabetically sorted.
2010         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
2011         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
2012         processor.
2013         * doc/invoke.texi (MIPS Options): Add -mips64r2.
2014         (-march=@var{arch}): Add mips64r2.
2015
2016 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
2017
2018         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
2019
2020 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
2021
2022         * expr.c (expand_assignment): Check for complete type.
2023
2024 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
2025
2026         PR debug/36977
2027         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
2028
2029         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
2030         for stack alignment.
2031
2032         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
2033
2034 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
2035
2036         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
2037         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
2038
2039 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
2040
2041         PR rtl-optimization/36419
2042         * dwarf2out.c (barrier_args_size): New variable.
2043         (compute_barrier_args_size, compute_barrier_args_size_1): New
2044         functions.
2045         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
2046         if not called yet in the current function, use barrier_args_size
2047         array to find the new args_size value.
2048         (dwarf2out_frame_debug): Free and clear barrier_args_size.
2049
2050 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
2051
2052         PR debug/36980
2053         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
2054         rule 19.
2055
2056 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
2057
2058         PR debug/36976
2059         * dwarf2out.c (dwarf2out_args_size_adjust): New.
2060         (dwarf2out_stack_adjust): Use it.
2061         (dwarf2out_frame_debug_expr): Likewise.
2062
2063 2008-07-31  Richard Guenther  <rguenther@suse.de>
2064
2065         PR tree-optimization/36978
2066         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
2067         the generated condition.
2068
2069 2008-07-31  Richard Guenther  <rguenther@suse.de>
2070
2071         * passes.c (init_optimization_passes): Always call
2072         pass_early_warn_uninitialized.
2073         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
2074         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
2075         * doc/passes.texi (Warn for uninitialized variables): Adjust.
2076
2077 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
2078
2079         PR c/36970
2080         * builtins.c (maybe_emit_free_warning): New function.
2081         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
2082         maybe_emit_free_warning for BUILT_IN_FREE.
2083
2084         PR debug/36278
2085         * dwarf2out.c (get_context_die): New function.
2086         (force_decl_die, force_type_die): Use it.
2087         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
2088         returns NULL, force generation of DW_TAG_typedef and put that into
2089         DW_AT_import.
2090
2091         PR preprocessor/36649
2092         * c-pch.c (c_common_read_pch): Save and restore
2093         line_table->trace_includes across PCH restore.
2094
2095 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
2096
2097         PR ada/36554
2098         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
2099
2100 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
2101
2102         PR 36974
2103         * final.c (call_from_call_insn): Handle COND_EXEC.
2104
2105 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
2106
2107         * builtins.c (std_gimplify_va_arg_expr): Replace
2108         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
2109         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
2110
2111 2008-07-30  Joey Ye  <joey.ye@intel.com>
2112             H.J. Lu  <hongjiu.lu@intel.com>
2113
2114         * builtins.c (expand_builtin_setjmp_receiver): Replace
2115         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
2116         (expand_builtin_apply_args_1): Likewise.
2117         (expand_builtin_longjmp): Need DRAP for stack alignment.
2118         (expand_builtin_apply): Likewise.
2119
2120         * caller-save.c (setup_save_areas): Call assign_stack_local_1
2121         instead of assign_stack_local to allow alignment reduction.
2122
2123         * calls.c (emit_call_1): Need DRAP for stack alignment if
2124         return pops.
2125         (expand_call): Replace virtual_incoming_args_rtx with
2126         crtl->args.internal_arg_pointer.
2127         * stmt.c (expand_nl_goto_receiver): Likewise.
2128
2129         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
2130         alignment and store to stack_alignment_estimated and
2131         max_used_stack_slot_alignment.
2132         (expand_one_var): Likewise.
2133         (expand_stack_alignment): New function.
2134         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
2135         and stack_alignment_estimated fields in rtl_data.  Call
2136         expand_stack_alignment at end.
2137
2138         * defaults.h (INCOMING_STACK_BOUNDARY): New.
2139         (MAX_STACK_ALIGNMENT): Likewise.
2140         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
2141         (SUPPORTS_STACK_ALIGNMENT): Likewise.
2142
2143         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
2144         stack alignment when generating virtual registers.
2145
2146         * function.c (assign_stack_local): Renamed to ...
2147         (assign_stack_local_1): This.  Add a parameter to indicate
2148         if it is OK to reduce alignment.
2149         (assign_stack_local): Use it.
2150         (instantiate_new_reg): Instantiate virtual incoming args rtx
2151         to vDRAP if stack realignment and DRAP is needed.
2152         (assign_parms): Collect parameter/return type alignment and
2153         contribute to stack_alignment_estimated.
2154         (locate_and_pad_parm): Likewise.
2155         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
2156         with crtl->args.internal_arg_pointer.
2157
2158         * function.h (rtl_data): Add new field drap_reg,
2159         max_used_stack_slot_alignment, stack_alignment_estimated,
2160         stack_realign_needed, need_drap, stack_realign_processed and
2161         stack_realign_finalized.
2162         (stack_realign_fp): New macro.
2163         (stack_realign_drap): Likewise.
2164
2165         * global.c (compute_regsets): Frame pointer is needed when
2166         stack is realigned.  Can eliminate frame pointer when stack is
2167         realigned and dynamic realigned argument pointer isn't used.
2168
2169         * reload1.c (update_eliminables):  Frame pointer is needed
2170         when stack is realigned.
2171         (init_elim_table): Can eliminate frame pointer when stack is
2172         realigned and dynamic realigned argument pointer isn't used.
2173
2174         * rtl.h (assign_stack_local_1): Declare new funtion.
2175
2176         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
2177         (TARGET_GET_DRAP_RTX): Likewise.
2178         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
2179         TARGET_GET_DRAP_RTX.
2180
2181         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
2182
2183         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
2184         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
2185
2186 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
2187             H.J. Lu  <hongjiu.lu@intel.com>
2188
2189         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
2190         vdrap_reg, stack_realign and drap_reg_saved.
2191         (add_cfi): Don't allow redefining CFA when DRAP is used.
2192         (reg_save): Handle stack alignment.
2193         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
2194         alignment.  Don't generate DWARF information for (set fp sp)
2195         when DRAP is used.
2196         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
2197         to INVALID_REGNUM.
2198         (int_loc_descriptor): Move prototype forward.  Also define if
2199         DWARF2_UNWIND_INFO is true.
2200         (output_cfa_loc): Handle DW_CFA_expression.
2201         (build_cfa_aligned_loc): New.
2202         (based_loc_descr): Update assert for stack realign.  For local
2203         variables, use sp+offset when stack is aligned without drap and
2204         fp+offset when stack is aligned with drap.  For arguments, use
2205         cfa+offset when drap is used to align stack.
2206
2207 2008-07-30  Joey Ye  <joey.ye@intel.com>
2208             H.J. Lu  <hongjiu.lu@intel.com>
2209
2210         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
2211         Break long line.
2212         (ix86_gen_andsp): New.
2213         (ix86_user_incoming_stack_boundary): Likewise.
2214         (ix86_default_incoming_stack_boundary): Likewise.
2215         (ix86_incoming_stack_boundary): Likewise.
2216         (ix86_can_eliminate): Likewise.
2217         (find_drap_reg): Likewise.
2218         (ix86_update_stack_boundary): Likewise.
2219         (ix86_get_drap_rtx): Likewise.
2220         (ix86_finalize_stack_realign_flags): Likewise.
2221         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
2222         (TARGET_GET_DRAP_RTX): Likewise.
2223         (override_options): Overide option value for new options.
2224         (ix86_function_ok_for_sibcall): Remove check for
2225         force_align_arg_pointer.
2226         (ix86_handle_cconv_attribute): Likewise.
2227         (ix86_function_regparm): Likewise.
2228         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
2229         (ix86_va_start): Replace virtual_incoming_args_rtx with
2230         crtl->args.internal_arg_pointer.
2231         (ix86_select_alt_pic_regnum): Check DRAP register.
2232         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
2233         (ix86_compute_frame_layout): Compute frame layout wrt stack
2234         realignment.
2235         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
2236         (ix86_expand_prologue): Decide if stack realignment is needed
2237         and generate prologue code accordingly.
2238         (ix86_expand_epilogue): Generate epilogue code wrt stack
2239         realignment is really needed or not.
2240         
2241         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
2242         (ABI_STACK_BOUNDARY): Likewise.
2243         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
2244         (STACK_REALIGN_DEFAULT): Likewise.
2245         (INCOMING_STACK_BOUNDARY): Likewise.
2246         (MAX_STACK_ALIGNMENT): Likewise.
2247         (ix86_incoming_stack_boundary): Likewise.
2248         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
2249         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
2250         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
2251         (machine_function): Remove force_align_arg_pointer.
2252
2253         * config/i386/i386.md (BX_REG): New.
2254         (R13_REG): Likewise.
2255
2256         * config/i386/i386.opt (mforce_drap): New.
2257         (mincoming-stack-boundary): Likewise.
2258         (mstackrealign): Add Init(-1).
2259
2260         * config/i386/i386-protos.h (ix86_can_eliminate): New
2261
2262 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
2263
2264         * doc/extend.texi: Update force_align_arg_pointer.
2265
2266         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
2267         -mstackrealign.
2268
2269         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
2270         (INCOMING_STACK_BOUNDARY): Likewise.
2271         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
2272         (TARGET_GET_DRAP_RTX): Likewise.
2273
2274 2008-07-30  Andreas Schwab  <schwab@suse.de>
2275
2276         PR rtl-optimization/36929
2277         * dse.c (replace_inc_dec): Use emit_insn_before instead of
2278         add_insn_before and fix argument order.
2279         (replace_inc_dec_mem): Handle NULL rtx.
2280
2281 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
2282
2283         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
2284         function.
2285         (arm_compute_initial_elimination_offset): Use it.
2286         (arm_compute_save_reg_mask): Include static chain save slot when
2287         calculating alignment.
2288         (arm_get_frame_offsets): Ditto.
2289         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
2290         that we can use to decrement the stack when the stack decrement
2291         could be too big for an immediate value in a single insn.
2292         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
2293
2294 2008-07-30  Richard Guenther  <rguenther@suse.de>
2295
2296         PR tree-optimization/36967
2297         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
2298         Release defs of statements we remove.
2299
2300 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
2301
2302         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
2303         instead of NULL_RTVEC.
2304
2305 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
2306
2307         PR target/35866
2308
2309         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
2310         vector modes.
2311
2312 2008-07-30  Rafael Avila de Espindola  <espindola@google.com>
2313
2314         * final.c (call_from_call_insn): New.
2315         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
2316
2317 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
2318
2319         * configure.ac: Substitute ADA_CFLAGS.
2320         * configure: Regenerate.
2321         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
2322         * Makefile.in: Remove mention of X_* variables.
2323         * config/pa/x-ada-hpux10: Remove.
2324         * config/pa/x-ada: Remove.
2325
2326         * doc/fragments.texi: Update.
2327
2328 2008-07-30  Olivier Hainque  <hainque@adacore.com>
2329
2330         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
2331         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
2332         __dso_handle explicitly here.
2333
2334 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2335
2336         PR 34389
2337         * c-typeck.c (build_binary_op): Encapsulate code into...
2338         * c-common.c (shorten_binary_op): ...this new function.
2339         (conversion_warning): Use the new function. Handle non-negative
2340         constant in bitwise-and.
2341         * c-common.h (shorten_binary_op): Declare.
2342
2343 2008-07-30  Olivier Hainque  <hainque@adacore.com>
2344
2345         * scan.c (make_sstring_space): Add explicit conversions of
2346         allocator's return value.
2347         * fix-header.c (recognized_function): Likewise.
2348
2349 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2350
2351         * doc/cpp.texi: Update to GFDL 1.2.
2352         * doc/gcc.texi: Do not list GPL as Invariant Section.
2353         * doc/gccint.texi: Likewise.  Update copyright years.
2354         * doc/install.texi: Update copyright years.
2355
2356 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
2357
2358         PR target/36955
2359         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
2360         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
2361
2362 2008-07-29  Jan Hubicka  <jh@suse.cz>
2363
2364         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
2365         (grokdeclarator): Likewise.
2366         * langhooks.c (lhd_warn_unused_global_decl): Use
2367         DECL_DECLARED_INLINE_P.
2368         * print-tree.c (print_node): Remove DECL_INLINE check.
2369
2370 2008-07-29  Richard Guenther  <rguenther@suse.de>
2371
2372         PR tree-optimization/36945
2373         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
2374         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
2375         Record invariant addresses un-decomposed.
2376         (copy_reference_ops_from_call): Record reference call
2377         arguments properly.  Simplify.
2378         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
2379         helper split out from ...
2380         (create_component_ref_by_pieces): ... here.  Simplify.
2381         Prepare for recursive invocation for call arguments.
2382         (create_expression_by_pieces): Adjust call to
2383         create_component_ref_by_pieces.
2384         (compute_avail): Process operand 2 of reference ops.
2385
2386 2008-07-29  Richard Guenther  <rguenther@suse.de>
2387
2388         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
2389
2390 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
2391
2392         * c-format.c (check_format_types): Revert unwanted checkin.
2393
2394 2008-07-29  Jan Hubicka  <jh@suse.cz>
2395
2396         * flags.h (flag_really_no_inline): Remove.
2397         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
2398         * toplev.c (flag_really_no_inline): Remove.
2399         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
2400         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
2401         (cgraph_decide_inlining_incrementally): Likewise.
2402         (compute_inline_parameters): Likewise.
2403         * opts.c (decode_options): Simplify.
2404         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
2405         * common.opt (finline): Initialize to 1.
2406         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
2407
2408 2008-07-29  Jan Hubicka  <jh@suse.cz>
2409
2410         * predict.c (always_optimize_for_size_p): New function.
2411         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
2412         optimize_edge_for_size_p, optimize_edge_for_speed_p,
2413         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
2414         functions.
2415         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
2416         * function.c (prepare_function_start): Set default profile.
2417         * function.h (rtl_data): Add maybe_hot_insn_p.
2418         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
2419         (construct_exit_block): Likewise.
2420         (tree_expand_cfg): Likewise.
2421         * basic-block.h
2422         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
2423         optimize_edge_for_size_p, optimize_edge_for_speed_p,
2424         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
2425         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
2426         Declare.
2427
2428 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2429
2430         PR 34985
2431         * c-decl.c (merge_decls): Merge USED flags.
2432
2433 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
2434
2435         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
2436         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
2437         next_stack, lab_false and lab_over trees.
2438
2439 2008-07-28  Richard Guenther  <rguenther@suse.de>
2440
2441         PR tree-optimization/36957
2442         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
2443         (useless_type_conversion_p): Remove.
2444         (types_compatible_p): Remove.
2445         * gimple.h (tree_ssa_useless_type_conversion): Declare.
2446         (useless_type_conversion_p): Declare.
2447         (types_compatible_p): Declare.
2448         (gimple_expr_type): Return the base type only if it is
2449         trivially convertible to the subtype.
2450
2451 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
2452
2453         * configure.ac: Use the m4_do macro to concatenate the warnings into
2454         one string in ACX_PROG_CC_WARNING_OPTS,
2455         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
2456         * configure: Regenerate.
2457
2458 2008-07-28  Richard Guenther  <rguenther@suse.de>
2459
2460         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
2461         (insert_fake_stores): Remove.
2462         (realify_fake_stores): Likewise.
2463         (execute_pre): Remove dead code.
2464         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
2465         (find_func_aliases): Deal with it here instead.
2466         Re-enable gcc_unreachable call.
2467
2468 2008-07-28  Richard Guenther  <rguenther@suse.de>
2469
2470         Merge from gimple-tuples-branch.
2471
2472         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
2473         * gimple.def: New file.
2474         * gsstruct.def: Likewise.
2475         * gimple-iterator.c: Likewise.
2476         * gimple-pretty-print.c: Likewise.
2477         * tree-gimple.c: Removed.  Merged into ...
2478         * gimple.c: ... here.  New file.
2479         * tree-gimple.h: Removed.  Merged into ...
2480         * gimple.h: ... here.  New file.
2481
2482         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
2483         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
2484         --enable-checking=gimple flag.
2485         * config.in: Likewise.
2486         * configure: Regenerated.
2487
2488         * tree-ssa-operands.h: Tuplified.
2489         * tree-vrp.c: Likewise.
2490         * tree-loop-linear.c: Likewise.
2491         * tree-into-ssa.c: Likewise.
2492         * tree-ssa-loop-im.c: Likewise.
2493         * tree-dump.c: Likewise.
2494         * tree-complex.c: Likewise.
2495         * cgraphbuild.c: Likewise.
2496         * tree-ssa-threadupdate.c: Likewise.
2497         * tree-ssa-loop-niter.c: Likewise.
2498         * tree-pretty-print.c: Likewise.
2499         * tracer.c: Likewise.
2500         * gengtype.c: Likewise.
2501         * tree-loop-distribution.c: Likewise.
2502         * tree-ssa-loop-unswitch.c: Likewise.
2503         * cgraph.c: Likewise.
2504         * cgraph.h: Likewise.
2505         * tree-ssa-loop-manip.c: Likewise.
2506         * value-prof.c: Likewise.
2507         * tree-ssa-loop-ch.c: Likewise.
2508         * tree-tailcall.c: Likewise.
2509         * value-prof.h: Likewise.
2510         * tree.c: Likewise.
2511         * tree.h: Likewise.
2512         * tree-pass.h: Likewise.
2513         * ipa-cp.c: Likewise.
2514         * tree-scalar-evolution.c: Likewise.
2515         * tree-scalar-evolution.h: Likewise.
2516         * target.h: Likewise.
2517         * lambda-mat.c: Likewise.
2518         * tree-phinodes.c: Likewise.
2519         * diagnostic.h: Likewise.
2520         * builtins.c: Likewise.
2521         * tree-ssa-alias-warnings.c: Likewise.
2522         * cfghooks.c: Likewise.
2523         * fold-const.c: Likewise.
2524         * cfghooks.h: Likewise.
2525         * omp-low.c: Likewise.
2526         * tree-ssa-dse.c: Likewise.
2527         * ipa-reference.c: Likewise.
2528         * tree-ssa-uncprop.c: Likewise.
2529         * toplev.c: Likewise.
2530         * tree-gimple.c: Likewise.
2531         * tree-gimple.h: Likewise.
2532         * tree-chrec.c: Likewise.
2533         * tree-chrec.h: Likewise.
2534         * tree-ssa-sccvn.c: Likewise.
2535         * tree-ssa-sccvn.h: Likewise.
2536         * cgraphunit.c: Likewise.
2537         * tree-ssa-copyrename.c: Likewise.
2538         * tree-ssa-ccp.c: Likewise.
2539         * tree-ssa-loop-ivopts.c: Likewise.
2540         * tree-nomudflap.c: Likewise.
2541         * tree-call-cdce.c: Likewise.
2542         * ipa-pure-const.c: Likewise.
2543         * c-format.c: Likewise.
2544         * tree-stdarg.c: Likewise.
2545         * tree-ssa-math-opts.c: Likewise.
2546         * tree-ssa-dom.c: Likewise.
2547         * tree-nrv.c: Likewise.
2548         * tree-ssa-propagate.c: Likewise.
2549         * ipa-utils.c: Likewise.
2550         * tree-ssa-propagate.h: Likewise.
2551         * tree-ssa-alias.c: Likewise.
2552         * gimple-low.c: Likewise.
2553         * tree-ssa-sink.c: Likewise.
2554         * ipa-inline.c: Likewise.
2555         * c-semantics.c: Likewise.
2556         * dwarf2out.c: Likewise.
2557         * expr.c: Likewise.
2558         * tree-ssa-loop-ivcanon.c: Likewise.
2559         * predict.c: Likewise.
2560         * tree-ssa-loop.c: Likewise.
2561         * tree-parloops.c: Likewise.
2562         * tree-ssa-address.c: Likewise.
2563         * tree-ssa-ifcombine.c: Likewise.
2564         * matrix-reorg.c: Likewise.
2565         * c-decl.c: Likewise.
2566         * tree-eh.c: Likewise.
2567         * c-pretty-print.c: Likewise.
2568         * lambda-trans.c: Likewise.
2569         * function.c: Likewise.
2570         * langhooks.c: Likewise.
2571         * ebitmap.h: Likewise.
2572         * tree-vectorizer.c: Likewise.
2573         * function.h: Likewise.
2574         * langhooks.h: Likewise.
2575         * tree-vectorizer.h: Likewise.
2576         * ipa-type-escape.c: Likewise.
2577         * ipa-type-escape.h: Likewise.
2578         * domwalk.c: Likewise.
2579         * tree-if-conv.c: Likewise.
2580         * profile.c: Likewise.
2581         * domwalk.h: Likewise.
2582         * tree-data-ref.c: Likewise.
2583         * tree-data-ref.h: Likewise.
2584         * tree-flow-inline.h: Likewise.
2585         * tree-affine.c: Likewise.
2586         * tree-vect-analyze.c: Likewise.
2587         * c-typeck.c: Likewise.
2588         * gimplify.c: Likewise.
2589         * coretypes.h: Likewise.
2590         * tree-ssa-phiopt.c: Likewise.
2591         * calls.c: Likewise.
2592         * tree-ssa-coalesce.c: Likewise.
2593         * tree.def: Likewise.
2594         * tree-dfa.c: Likewise.
2595         * except.c: Likewise.
2596         * except.h: Likewise.
2597         * cfgexpand.c: Likewise.
2598         * tree-cfgcleanup.c: Likewise.
2599         * tree-ssa-pre.c: Likewise.
2600         * tree-ssa-live.c: Likewise.
2601         * tree-sra.c: Likewise.
2602         * tree-ssa-live.h: Likewise.
2603         * tree-predcom.c: Likewise.
2604         * lambda.h: Likewise.
2605         * tree-mudflap.c: Likewise.
2606         * ipa-prop.c: Likewise.
2607         * print-tree.c: Likewise.
2608         * tree-ssa-copy.c: Likewise.
2609         * ipa-prop.h: Likewise.
2610         * tree-ssa-forwprop.c: Likewise.
2611         * ggc-page.c: Likewise.
2612         * c-omp.c: Likewise.
2613         * tree-ssa-dce.c: Likewise.
2614         * tree-vect-patterns.c: Likewise.
2615         * tree-ssa-ter.c: Likewise.
2616         * tree-nested.c: Likewise.
2617         * tree-ssa.c: Likewise.
2618         * lambda-code.c: Likewise.
2619         * tree-ssa-loop-prefetch.c: Likewise.
2620         * tree-inline.c: Likewise.
2621         * tree-inline.h: Likewise.
2622         * tree-iterator.c: Likewise.
2623         * tree-optimize.c: Likewise.
2624         * tree-ssa-phiprop.c: Likewise.
2625         * tree-vect-transform.c: Likewise.
2626         * tree-object-size.c: Likewise.
2627         * tree-outof-ssa.c: Likewise.
2628         * cfgloop.c: Likewise.
2629         * system.h: Likewise.
2630         * tree-profile.c: Likewise.
2631         * cfgloop.h: Likewise.
2632         * c-gimplify.c: Likewise.
2633         * c-common.c: Likewise.
2634         * tree-vect-generic.c: Likewise.
2635         * tree-flow.h: Likewise.
2636         * c-common.h: Likewise.
2637         * basic-block.h: Likewise.
2638         * tree-ssa-structalias.c: Likewise.
2639         * tree-switch-conversion.c: Likewise.
2640         * tree-ssa-structalias.h: Likewise.
2641         * tree-cfg.c: Likewise.
2642         * passes.c: Likewise.
2643         * ipa-struct-reorg.c: Likewise.
2644         * ipa-struct-reorg.h: Likewise.
2645         * tree-ssa-reassoc.c: Likewise.
2646         * cfgrtl.c: Likewise.
2647         * varpool.c: Likewise.
2648         * stmt.c: Likewise.
2649         * tree-ssanames.c: Likewise.
2650         * tree-ssa-threadedge.c: Likewise.
2651         * langhooks-def.h: Likewise.
2652         * tree-ssa-operands.c: Likewise.
2653         * config/alpha/alpha.c: Likewise.
2654         * config/frv/frv.c: Likewise.
2655         * config/s390/s390.c: Likewise.
2656         * config/m32c/m32c.c: Likewise.
2657         * config/m32c/m32c-protos.h: Likewise.
2658         * config/spu/spu.c: Likewise.
2659         * config/sparc/sparc.c: Likewise.
2660         * config/i386/i386.c: Likewise.
2661         * config/sh/sh.c: Likewise.
2662         * config/xtensa/xtensa.c: Likewise.
2663         * config/stormy16/stormy16.c: Likewise.
2664         * config/ia64/ia64.c: Likewise.
2665         * config/rs6000/rs6000.c: Likewise.
2666         * config/pa/pa.c: Likewise.
2667         * config/mips/mips.c: Likewise.
2668
2669 2008-07-28  Simon Baldwin  <simonb@google.com>
2670
2671         * c-pragma.c (handle_pragma_message): New function.
2672         (init_pragma): Register handle_pragma_message.
2673         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
2674         documentation.
2675
2676 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
2677
2678         PR tree-optimization/35252
2679         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
2680         REALPART_EXPR to be considered as same load operation.
2681
2682 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
2683
2684         PR tree-optimization/36830
2685         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
2686         (expressions_equal_p): Return false if only one operand is null.
2687
2688 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
2689
2690         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
2691         version requirements.
2692
2693 2008-07-26  Olivier Hainque  <hainque@adacore.com>
2694
2695         * collect2.c (symkind): New enum.  Symbol kinds we care about.
2696         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
2697         code and head comment accordingly.
2698         (scan_prog_file): Use symkind names instead of bare integers.
2699
2700 2008-07-25  Jan Hubicka  <jh@suse.cz>
2701
2702         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
2703         DECL_INLINE.
2704         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
2705         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
2706         * dojump.c (clear_pending_stack_adjust): Likewise.
2707         * print-tree.c (print_node): Ignore DECL_INLINE.
2708         * tree-inline.c (inlinable_function_p): Likewise.
2709
2710 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
2711
2712         * doc/extend.texi (hot attribute): Document that the hot attribute
2713         turns on -O3 for some ports.
2714         (cold attribute): Document that the cold attribute turns on -Os
2715         for some ports
2716
2717         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
2718         reflect function specific option support.
2719
2720         * target.h (struct target_option_hooks): Add fields to say whether
2721         the cold attribute implies -Os and the hot attribute implies -O3.
2722
2723         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
2724         By default, do not turn on -Os for cold functions.
2725         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
2726         not turn on -O3 for hot functions.
2727
2728         * c-common.c (handle_hot_attribute): Use target hook to determine
2729         if hot functions should enable -O3.
2730         (handle_cold_attribute): Use target hook to determine if cold
2731         functions should enable -Os.
2732
2733         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
2734         (override_options): Move disable scheduling to
2735         optimization_options.
2736         (optimization_options): Disable scheduling here, not
2737         override_options.
2738         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2739         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2740
2741         * config/ia64/ia64.c (ia64_override_options): Move setting
2742         scheduling flags to ia64_optimization_options.
2743         (ia64_optimization_options): Disable scheduling options here, and
2744         not in ia64_override_options.
2745         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2746         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
2747
2748 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
2749
2750         PR target/36936
2751         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
2752
2753 2008-07-25  Martin Jambor  <mjambor@suse.cz>
2754
2755         PR tree-optimization/36926
2756         * ipa-prop.c (ipa_analyze_call_uses): Call
2757         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
2758
2759 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
2760
2761         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
2762         movv2si_internal): Add mem = reg alternative.
2763
2764 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
2765
2766         PR bootstrap/36918
2767         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
2768         DEFAULT_PCC_STRUCT_RETURN to 127.
2769
2770 2008-07-24  Jan Hubicka  <jh@suse.cz>
2771
2772         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
2773         (build_cgraph_edges): Likewise.
2774         * cgraph.c (cgraph_node): Do not update assembler hash.
2775         (cgraph_remove_node): Drop non-unit-at-a-time code.
2776         * tree-pass.h (pass_O0_always_inline): Remove.
2777         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
2778         * toplev.c (process_options): Flag unit-at-a-time does not imply
2779         no section anchors.
2780         * cgraphunit.c: Update comments.
2781         (decide_is_function_needed): Drop non-unit-at-a-time mode.
2782         (cgraph_assemble_pending_functions): Remove.
2783         (cgraph_reset_node): Drop non-unit-at-a-time code.
2784         (cgraph_finalize_function): Likewise.
2785         (cgraph_analyze_function): Likewise.
2786         (cgraph_finalize_compilation_unit): Likewise.
2787         (cgraph_expand_function): Likewise.
2788         (cgraph_optimize): Likesise.
2789         (save_inline_function_body): Likewise.
2790         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
2791         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
2792         * ipa-inline.c: Update comments.
2793         (enum inlining_mode): remove INLINE_SPEED.
2794         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
2795         (cgraph_mark_inline_edge): Likewise.
2796         (try_inline): Likewise.
2797         (cgraph_decide_inlining_incrementally): Likewise.
2798         (cgraph_gate_inlining): Remove.
2799         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
2800         (cgraph_gate_early_inlining): Likewise.
2801         (gate_inline_passes): Remove.
2802         (pass_inline_parameters, pass_ipa_inline): Remove gates.
2803         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
2804         pass_O0_always_inline): Remove.
2805         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
2806         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
2807         * opts.c (no_unit_at_a_time_default): Remove.
2808         (decode_options): Remove flag_unit_at_a_time reset and warning.
2809         * opts.h (no_unit_at_a_time_default): Remove.
2810         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
2811         early in GNU dialect.
2812         (merge_decls): Update comment; drop unit-at-a-time check.
2813         (finish_decl): Likewise.
2814         (grok_declaration): Remove flag_inline_trees code.
2815         (finish_functions): Return on function returning non-void on all
2816         statics.
2817         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
2818         * cfgexpand.c (expand_one_static_var): Remove.
2819         (expand_one_var): Remove expand_one_static_var call.
2820         (expand_used_vars_for_block): Remove flag_unit_a_time check.
2821         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
2822         and flag_unit_at_a-time compatibility checks.
2823         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
2824         * tree-inline.c (flag_inline_trees): Remove.
2825         (inlinable_function_p): Don't check it.
2826         (expand_call_inline): Remove non-unit-at-a-time code.
2827         * tree-inline.h (flag_inline_trees): Remove.
2828         * tree-optimize.c (execute_early_local_optimizations): Remove
2829         unit-at-a-time checks.
2830         (tree_rest_of_compilation): Likewise.
2831         * combine.c (setup_incoming_promotions): Likewise.
2832         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
2833         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
2834         * passes.c (pass_inline_parameters): Update comments; remove
2835         O0_alwaysinline pass.
2836         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
2837         (execute_one_pass): Likewise.
2838         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
2839         (ix86_function_sseregparm): Likewise.
2840         * arm.c (arm_function_in_section_p): Likewise.
2841         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
2842         * varpool.c: Update comments.
2843         (decide_is_variable_needed): Remove unit-at-a-time checks.
2844         (varpool_finalize_decl): Likewise.
2845
2846 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2847
2848         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
2849         to 2 instead of -1.
2850         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
2851
2852 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
2853
2854         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
2855         imp symbol extension.
2856
2857         2008-07-23  Ian Lance Taylor  <iant@google.com>
2858
2859         * tree-vrp.c (infer_value_range): Ignore asm statements when
2860         looking for memory accesses for -fdelete-null-pointer-checks.
2861
2862 2008-07-24  Ben Elliston  <bje@au.ibm.com>
2863
2864         * config/spu/spu-c.c (__vector_keyword): New variable.
2865         (vector_keyword): Likewise.
2866         (spu_categorize_keyword): New function.
2867         (spu_macro_to_expand): Likewise.
2868         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
2869         compiling an ISO C dialect.
2870
2871 2008-07-24  Ben Elliston  <bje@au.ibm.com>
2872
2873         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
2874         conventional usage.
2875
2876 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
2877
2878         * configure: Regenerate.
2879         * configure.ac: Require texinfo 4.7.
2880         * doc/install.texi: Document texinfo 4.7 requirement.
2881
2882 2008-07-23  Martin Jambor  <mjambor@suse.cz>
2883
2884         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
2885         rather than for DECL_SAVED_TREE.
2886         * ipa-prop.c: Include diagnostic.h.
2887         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
2888         thoroughly.
2889         (ipa_detect_param_modifications): Function rewritten from scratch.
2890         (ipa_compute_jump_functions): Changed accesses to modification flags.
2891         (ipa_free_node_params_substructures): Update flags destruction.
2892         (ipa_node_duplication_hook): Update flags duplication.
2893         (ipa_print_all_params_modified): Updated flag access.
2894         * ipa-prop.h (struct ipa_param_flags): New structure.
2895         (struct ipa_node_params): New field modification_analysis_done,
2896         modified_flags changed into param_flags.
2897         (ipa_is_ith_param_modified): Changed to use new flags.
2898         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
2899
2900         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
2901         ipa-cp.c and split into two functions.
2902         (ipa_print_node_jump_functions): New function.
2903         (compute_scalar_jump_functions): New function.
2904         (type_like_member_ptr_p): New function.
2905         (compute_pass_through_member_ptrs): New function.
2906         (fill_member_ptr_cst_jump_function): New function.
2907         (determine_cst_member_ptr): New function.
2908         (compute_cst_member_ptr_arguments): New function.
2909         (ipa_compute_jump_functions): Complete rewrite.
2910         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
2911         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
2912         (struct ipa_member_ptr_cst): New structure.
2913         (union jump_func_value): New field member_cst.
2914         * ipa-cp.c (ipcp_lat_is_insertable): New function.
2915         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
2916         jump function types.
2917         (ipcp_print_all_lattices): Slight fprintf rearrangement.
2918         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
2919         instead of ipcp_print_all_jump_functions.
2920         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
2921         only for replacable scalars.
2922
2923         * doc/invoke.texi (Optimize options): Add description of
2924         -findirect-inlining.
2925         * common.opt (flag_indirect_inlining): New flag.
2926         * opts.c (decode_options): Set flag_indirect_inlining when
2927         optimize >= 3.
2928
2929         * ipa-inline.c: Include ipa-prop.h.
2930         (inline_indirect_intraprocedural_analysis): New function.
2931         (inline_generate_summary): Allocate parameter and argument info
2932         structures, call inline_indirect_intraprocedural_analysis on each
2933         node when doing indirect inlining and deallocate indirect inlining
2934         data structures in the end.
2935         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
2936         (free_all_ipa_structures_after_iinln): New function.
2937         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
2938         done.
2939         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
2940
2941         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
2942         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
2943         of computing the frequency separately.
2944         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
2945         of computing the frequency separately.
2946         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
2947         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
2948         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
2949         (ipa_get_stmt_member_ptr_load_param): New function.
2950         (ipa_is_ssa_with_stmt_def): New function.
2951         (ipa_note_param_call): New function.
2952         (ipa_analyze_call_uses): New function.
2953         (ipa_analyze_stmt_uses): New function.
2954         (ipa_analyze_params_uses): New function.
2955         (ipa_free_node_params_substructures): Also free the param_calls linked
2956         list.
2957         (ipa_node_duplication_hook): Also duplicate the param_calls linked list.
2958         (ipa_print_node_param_flags): New function.
2959         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
2960         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
2961         * ipa-prop.h (struct ipa_param_flags): New field called.
2962         (struct ipa_param_call_note): New structure.
2963         (struct ipa_node_params): New fields param_calls and
2964         uses_analysis_done.
2965         (ipa_is_ith_param_called): New function.
2966         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
2967         ipa_analyze_params_uses and dump parameter flags.
2968
2969         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
2970         ipa_propagate_indirect_call_infos if performing indirect inlining,
2971         pass a new parameter new_edges to it.
2972         (add_new_edges_to_heap): New fucntion.
2973         (cgraph_decide_inlining_of_small_functions): New vector
2974         new_indirect_edges for newly found indirect edges , call
2975         ipa_propagate_indirect_call_infos after inlining.
2976         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
2977         inlining if performing indirect inlining.  Call
2978         free_all_ipa_structures_after_iinln when doing so too.
2979         (inline_generate_summary): Do not call
2980         free_all_ipa_structures_after_iinln here.
2981         * ipa-prop.c (update_jump_functions_after_inlining): New function.
2982         (print_edge_addition_message): New function.
2983         (update_call_notes_after_inlining): New function.
2984         (propagate_info_to_inlined_callees): New function.
2985         (ipa_propagate_indirect_call_infos): New function.
2986         * ipa-prop.h: Include cgraph.h
2987         (struct ipa_param_call_note): Fields reordered, new field processed.
2988         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
2989         flag indirect_call.
2990         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
2991         rediscovered call statements.
2992         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
2993         (dump_cgraph_node): Dump also the indirect_call flag.
2994         (cgraph_clone_edge): Copy also the indirect_call flag.
2995         * tree-inline.c (copy_bb): Do not check for fndecls from call
2996         expressions, check for edge availability when moving clones.
2997         (get_indirect_callee_fndecl): New function.
2998         (expand_call_inline): If callee declaration is not apprent from
2999         the statement, try calling get_indirect_callee_fndecl.  Do not
3000         issue warnings or call sorry when not inlinings an indirect edge.
3001         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
3002
3003         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
3004         bit more frandly to matching.
3005         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
3006         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
3007         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
3008
3009 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
3010
3011         PR 36907
3012         * opth-gen.awk: Suppress function specific features when building
3013         target libraries.
3014         * optc-gen.awk: Ditto.
3015
3016 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3017
3018         PR 35058
3019         * diagnostic.c (pedwarn): Add opt parameter.
3020         (pedwarn0): New.
3021         * c-tree.h (pedwarn_init): Add opt parameter.
3022         (pedwarn_c90): Likewise.
3023         (pedwarn_c99): Likewise.
3024         * c-errors.c (pedwarn_c99): Likewise.
3025         (pedwarn_c90): Likewise.
3026         * toplev.h (pedwarn): Update declaration.
3027         (pedwarn0): Declare.
3028         * c-lex.c: All calls to pedwarn changed.
3029         * builtins.c: All calls to pedwarn changed.
3030         * toplev.c: All calls to pedwarn changed.
3031         * c-decl.c: All calls to pedwarn changed.
3032         * c-typeck.c: All calls to pedwarn changed.
3033         * c-common.c: All calls to pedwarn changed.
3034         * c-parser.c: All calls to pedwarn changed.
3035
3036 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
3037             Karthik Kumar  <karthikkumar@gmail.com>
3038
3039         * attribs.c (file scope): Include c-common.h.
3040         (decl_attributes): Add support for #pragma GCC optimize and
3041         #pragma GCC option.
3042
3043         * targhooks.c (default_can_inline_p): New function that is the
3044         default for the TARGET_CAN_INLINE_P target hook.
3045
3046         * targhooks.h (default_can_inline_p): Add declaration.
3047
3048         * tree.c (cl_optimization_node): New static tree for building
3049         OPTIMIZATION_NODE tree.
3050         (cl_target_option_node): New static tree for building
3051         TARGET_OPTION_NODE tree.
3052         (cl_option_hash_table): New hash table for hashing
3053         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3054         (cl_option_hash_hash): New function to provide the hash value for
3055         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3056         (cl_option_hash_eq): New function to provide an equality test for
3057         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
3058         (tree_code_size): Add support for OPTIMIZATION_NODE and
3059         TARGET_OPTION_NODE trees.
3060         (tree_code_structure): Add support for OPTIMIZATION_NODE and
3061         TARGET_OPTION_NODE trees.
3062         (build_optimization_node): Build a tree that has all of the
3063         current optimization options.
3064         (build_target_option_node): Build a tree that has the target
3065         options that might be changed on a per function basis.
3066
3067         * tree.h (file scope): Include options.h.
3068         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
3069         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
3070         (TREE_OPTIMIZATION): Ditto.
3071         (TREE_TARGET_SPECIFIC): Ditto.
3072         (struct tree_function_decl): Add fields for remembering the
3073         current optimization options and target specific options.
3074         (struct tree_optimization_option): New tree variant that remembers
3075         the optimization options.
3076         (struct tree_target_option): New tree variant that remembers the
3077         target specific flags that might change for compiling a particular
3078         function.
3079         (union tree_node): Include tree_optimization_option and
3080         tree_target_option fields.
3081         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
3082         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
3083         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
3084         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
3085         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
3086         optimization and target options.
3087         (optimization_default_node): New macro to refer to global_trees
3088         field.
3089         (optimization_current_node): Ditto.
3090         (optimization_cold_node): Ditto.
3091         (optimization_hot_node): Ditto.
3092         (target_option_default_node): Ditto.
3093         (target_option_current_node): Ditto.
3094         (current_option_pragma): Ditto.
3095         (current_optimize_pragma): Ditto.
3096
3097         * target.h (struct gcc_target): Add valid_option_attribute_p,
3098         target_option_save, target_option_restore, target_option_print,
3099         target_option_pragma_parse, and can_inline_p hooks.
3100
3101         * toplev.h (parse_optimize_options): Add declaration.
3102         (fast_math_flags_struct_set_p): Ditto.
3103
3104         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
3105         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
3106         optimize is used.
3107
3108         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
3109         tree_can_inline_p hook to see if one function can inline another.
3110         (cgraph_decide_inlining): Ditto.
3111         (cgraph_decide_inlining_incrementally): Ditto.
3112
3113         * opts.c (decode_options): Add support for running multiple times
3114         to allow functions with different target or optimization options
3115         than was specified on the command line.
3116         (fast_math_flags_struct_set_p): New function that is similar to
3117         fast_math_flags_set_p, except it uses the values in the
3118         cl_optimization structure instead of global variables.
3119
3120         * optc-gen.awk: Add support for TargetSave to allow a back end to
3121         declare new fields that need to be saved when using function
3122         specific options.  Include flags.h and target.h in the options.c
3123         source.  Add support for Save to indicate which options can be set
3124         for individual functions.  Generate cl_optimize_save,
3125         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
3126         cl_target_option_restore, cl_target_option_print functions to
3127         allow functions to use different optimization or target options.
3128
3129         * opt-functions.awk (var_type_struct): Return the type used for
3130         storing the field in a structure.
3131
3132         * opth-gen.awk: Add support for TargetSave to allow a back end to
3133         declare new fields that need to be saved when using function
3134         specific options.  Add support for Save to indicate which options
3135         can be set for individual functions.  Only generate one extern for
3136         Mask fields.  Generate cl_optimization and cl_target_option
3137         structures to remember optimization and target options.
3138
3139         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
3140         collecting new tree nodes.
3141         (TS_TARGET_OPTION): Ditto.
3142
3143         * c-decl.c (merge_decls): Merge function specific target and
3144         optimization options.
3145
3146         * function.c (invoke_set_current_function_hook): If the function
3147         uses different optimization options, change the global variables
3148         to reflect this.
3149
3150         * coretypes.h (struct cl_optimization): Add forward reference.
3151         (struct cl_target_option): Ditto.
3152
3153         * c-pragma.c (option_stack): New static vector to remember the
3154         current #pragma GCC option stack.
3155         (handle_pragma_option): New function to support #pragma GCC option
3156         to change target options.
3157         (optimize_stack): New static vector to remember the current
3158         #pragma GCC optimize stack.
3159         (handle_pragma_optimize): New function to support #pragma GCC
3160         optimize to change optimization options.
3161         (init_pragma): Add support for #pragma GCC optimize and #pragma
3162         GCC option.
3163
3164         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
3165         optimization options.
3166         (TARGET_OPTION_NODE): New tree code for remembering certain target
3167         options.
3168
3169         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
3170         TARGET_OPTION_NODE trees.
3171
3172         * common.opt (-O): Add Optimization flag.
3173         (-Os): Ditto.
3174         (-fmath-errno): Ditto.
3175         (-falign-functions): Add UInteger flag to make sure flag gets full
3176         int in cl_optimization structure.
3177         (-falign-jumps): Ditto.
3178         (-falign-labels): Ditto.
3179         (-falign-loops): Ditto.
3180         (-fsched-stalled-insns): Ditto.
3181         (-fsched-stalled-insns-dep): Ditto.
3182
3183         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
3184         definition.
3185         (TARGET_OPTION_SAVE): Ditto.
3186         (TARGET_OPTION_RESTORE): Ditto.
3187         (TARGET_OPTION_PRINT): Ditto.
3188         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
3189         (TARGET_CAN_INLINE_P): Ditto.
3190         (TARGET_INITIALIZER): Add new hooks.
3191
3192         * tree-inline.c (tree_can_inline_p): New function to determine
3193         whether one function can inline another.  Check if the functions
3194         use compatible optimization options, and also call the backend
3195         can_inline_p hook.
3196
3197         * tree-inline.h (tree_can_inline_p): Add declaration.
3198
3199         * c-common.c (c_common_attribute): Add support for option and
3200         optimize attributes.
3201         (handle_option_attribute): Add support for the option attribute to
3202         allow the user to specify different target options for compiling a
3203         specific function.
3204         (handle_optimize_attribute): Add support for the optimize
3205         attribute to allow the user to specify different optimization
3206         options for compiling a specific function.
3207         (handle_hot_attribute): Turn on -O3 optimization for this one
3208         function if it isn't the default optimization level.
3209         (handle_cold_attribute): Turn on -Os optimization for this one
3210         function if it insn't the default optimization.
3211         (const_char_p): New const char * typedef.
3212         (optimize_args): New static vector to remember the optimization
3213         arguments.
3214         (parse_optimize_options): New function to set up the optimization
3215         arguments from either the optimize attribute or #pragma GCC optimize.
3216
3217         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
3218         (builtin_define_std): Ditto.
3219
3220         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
3221         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
3222         (x86_64-*-*): Ditto.
3223
3224         * Makefile.in (TREE_H): Add options.h.
3225         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
3226
3227         * doc/extend.texi (option attribute): Document new attribute.
3228         (optimize attribute): Ditto.
3229         (hot attribute): Document hot attribute sets -O3.
3230         (cold attribute): Document cold attribute sets -Os.
3231         (#pragma GCC option): Document new pragma.
3232         (#pragma GCC optimize): Ditto.
3233
3234         * doc/options.texi (TargetSave): Document TargetSave syntax.
3235         (UInteger): Document UInteger must be used for certain flags.
3236         (Save): Document Save option to create target specific options
3237         that can be saved/restored on a function specific context.
3238
3239         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
3240         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
3241
3242         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
3243         (TARGET_OPTION_SAVE): Ditto.
3244         (TARGET_OPTION_RESTORE): Ditto.
3245         (TARGET_OPTION_PRINT): Ditto.
3246         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
3247         (TARGET_CAN_INLINE_P): Ditto.
3248
3249         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
3250         -mfpmath=sse,387.
3251         (-mfpmath=both): Ditto.
3252
3253 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
3254             Karthik Kumar  <karthikkumar@gmail.com>
3255
3256         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
3257         (TARGET_POPCNT): Ditto.
3258         (TARGET_SAHF): Ditto.
3259         (TARGET_AES): Ditto.
3260         (TARGET_PCLMUL): Ditto.
3261         (TARGET_CMPXCHG16B): Ditto.
3262         (TARGET_RECIP): Move switch into target_flags.
3263         (TARGET_FUSED_MADD): Ditto.
3264         (ix86_arch_features): Make an unsigned char type.
3265         (ix86_tune_features): Ditto.
3266         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
3267         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
3268         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
3269
3270         * config/i386/i386.opt (arch): New TargetSave field to define
3271         fields that need to be saved for function specific option support.
3272         (tune): Ditto.
3273         (fpmath): Ditto.
3274         (branch_cost): Ditto.
3275         (ix86_isa_flags_explicit): Ditto.
3276         (tune_defaulted): Ditto.
3277         (arch_specified): Ditto.
3278         (-m128-long-double): Add Save flag to save option for target
3279         specific option support.
3280         (-m80387): Ditto.
3281         (-maccumulate-outgoing-args): Ditto.
3282         (-malign-double): Ditto.
3283         (-malign-stringops): Ditto.
3284         (-mfancy-math-387): Ditto.
3285         (-mhard-float): Ditto.
3286         (-mieee-fp): Ditto.
3287         (-minline-all-stringops): Ditto.
3288         (-minline-stringops-dynamically): Ditto.
3289         (-mms-bitfields): Ditto.
3290         (-mno-align-stringops): Ditto.
3291         (-mno-fancy-math-387): Ditto.
3292         (-mno-push-args): Ditto.
3293         (-mno-red-zone): Ditto.
3294         (-mpush-args): Ditto.
3295         (-mred-zone): Ditto.
3296         (-mrtd): Ditto.
3297         (-msseregparm): Ditto.
3298         (-mstack-arg-probe): Ditto.
3299         (-m32): Ditto.
3300         (-m64): Ditto.
3301         (-mmmx): Ditto.
3302         (-m3dnow): Ditto.
3303         (-m3dnowa): Ditto.
3304         (-msse): Ditto.
3305         (-msse2): Ditto.
3306         (-msse3): Ditto.
3307         (-msse4.1): Ditto.
3308         (-msse4.2): Ditto.
3309         (-msse4): Ditto.
3310         (-mno-sse4): Ditto.
3311         (-msse4a): Ditto.
3312         (-msse5): Ditto.
3313         (-mrecip): Move flag into target_flags.
3314         (-mcld): Ditto.
3315         (-mno-fused-madd): Ditto.
3316         (-mfused-madd): Ditto.
3317         (-mabm): Move flag into ix86_isa_flags.
3318         (-mcx16): Ditto.
3319         (-mpopcnt): Ditto.
3320         (-msahf): Ditto.
3321         (-maes): Ditto.
3322         (-mpclmul): Ditto.
3323
3324         * config/i386/i386-c.c: New file for #pragma support.
3325         (ix86_target_macros_internal): New function to #define or #undef
3326         target macros based when the user uses the #pragma GCC option to
3327         change target options.
3328         (ix86_pragma_option_parse): New function to add #pragma GCC option
3329         support.
3330         (ix86_target_macros): Move defining the target macros here from
3331         TARGET_CPU_CPP_BUILTINS in i386.h.
3332         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
3333         defined, initialize any subtarget #pragmas.
3334
3335         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
3336         REGISTER_TARGET_PRAGMAS.
3337
3338         * config/i386/t-i386: New file for x86 dependencies.
3339         (i386.o): Make dependencies mirror the include files used.
3340         (i386-c.o): New file, add dependencies.
3341
3342         * config/i386/i386-protos.h (override_options): Add bool argument.
3343         (ix86_valid_option_attribute_tree): Add declaration.
3344         (ix86_target_macros): Ditto.
3345         (ix86_register_macros): Ditto.
3346
3347         * config/i386/i386.c (ix86_tune_features): Move initialization of
3348         the target masks to initial_ix86_tune_features to allow functions
3349         to have different target options.  Make type unsigned char,
3350         instead of unsigned int.
3351         (initial_ix86_tune_features): New static vector to hold processor
3352         masks for the tune variables.
3353         (ix86_arch_features): Move initialization of the target masks to
3354         initial_ix86_arch_features to allow functions to have different
3355         target options.  Make type unsigned char, instead of unsigned int.
3356         (initial_ix86_arch_features): New static vector to hold processor
3357         masks for the arch variables.
3358         (enum ix86_function_specific_strings): New enum to describe the
3359         string options used for attribute((option(...))).
3360         (ix86_target_string): New function to return a string that
3361         describes the target options.
3362         (ix86_debug_options): New function to print the current options in
3363         the debugger.
3364         (ix86_function_specific_save): New function hook to save the
3365         function specific global variables in the cl_target_option structure.
3366         (ix86_function_specific_restore): New function hook to restore the
3367         function specific variables from the cl_target_option structure to
3368         the global variables.
3369         (ix86_function_specific_print): New function hook to print the
3370         target specific options in the cl_target_option structure.
3371         (ix86_valid_option_attribute_p): New function hook to validate
3372         attribute((option(...))) arguments.
3373         (ix86_valid_option_attribute_tree): New function that is common
3374         code between attribute((option(...))) and #pragma GCC option
3375         support that parses the options and returns a tree holding the options.
3376         (ix86_valid_option_attribute_inner_p): New helper function for
3377         ix86_valid_option_attribute_tree.
3378         (ix86_can_inline_p): New function hook to decide if one function
3379         can inline another on a target specific basis.
3380         (ix86_set_current_function); New function hook to switch target
3381         options if the user used attribute((option(...))) or #pragma GCC
3382         option.
3383         (ix86_tune_defaulted): Move to static file scope from
3384         override_options.
3385         (ix86_arch_specified): Ditto.
3386         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
3387         ix86_isa_flags.
3388         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
3389         (OPTION_MASK_ISA_ABM_SET): Ditto.
3390         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
3391         (OPTION_MASK_ISA_CX16_SET): Ditto.
3392         (OPTION_MASK_ISA_SAHF_SET): Ditto.
3393         (OPTION_MASK_ISA_AES_UNSET): Ditto.
3394         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
3395         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
3396         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
3397         (OPTION_MASK_ISA_CX16_UNSET): Ditto.