OSDN Git Service

fb72b46c8b11a1123740c4f17aabe2c6dac0a1b5
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-24  Michael Matz  <matz@suse.de>
2
3         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
4
5 2009-11-24  David Binderman  <dcb314@hotmail.com>
6
7         * expr.c (store_field): Remove set but not used local variable
8         width_mask.
9         (expand_expr_real_2): Remove treeop2.
10         * gcse.c (update_ld_motion_stores): Remove new_rtx.
11         * haifa-sched.c (max_issue): Remove points.
12         (sched_create_recovery_edges): Remove e.
13         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
14
15 2009-11-24  Nick Clifton  <nickc@redhat.com>
16
17         * config/v850/v850.c (function_arg): Fix handling of zero-length
18         function arguments.
19
20 2009-11-24  Michael Matz  <matz@suse.de>
21
22         * tree.h (union tree_ann_d): Don't declare.
23         (tree_base): Remove ann field.
24         (struct var_ann_d): Declare forward.
25         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
26         (DECL_VAR_ANN_PTR): New macro.
27         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
28         accept only VAR, PARM or RESULT decls.
29         (create_tree_common_ann): Remove.
30         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
31         * tree-eh.c (lookup_expr_eh_lp): Remove.
32         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
33         DECL_VAR_ANN_PTR.
34         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
35         * tree-flow.h (enum tree_ann_type): Remove.
36         (struct tree_ann_common_d): Remove.
37         (struct var_ann_d): Remove common field.
38         (union tree_ann_d): Remove.
39         (tree_ann_t, tree_ann_common_t): Remove typedefs.
40         (tree_common_ann, get_tree_common_ann, ann_type,
41         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
42         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
43         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
44         * builtins.c (expand_builtin_memcpy): Use
45         currently_expanding_gimple_stmt instead of tree annotation.
46         (expand_builtin_memset_args): Ditto.
47         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
48         (expand_call_stmt): Don't set tree annotation.
49         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
50         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
51         * gimple.h (currently_expanding_gimple_stmt): Declare.
52
53 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
54
55         * dwarf2out.c (add_location_or_const_value_attribute): Remove
56         useless NOTE_VAR_LOCATION_STATUS call.
57         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
58
59 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
60
61         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
62         being called recursively.
63
64 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
65
66         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
67         $(MD5_H) params.def params.h prefix.h tree-inline.h.
68
69 2009-11-24  Paul Brook  <paul@codesourcery.com>
70
71         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
72         typo.
73
74 2009-11-24  Julian Brown  <julian@codesourcery.com>
75             Paul Brook  <paul@codesourcery.com>
76
77         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
78         (arm_dwarf_register_span): New function.
79         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
80
81 2009-11-24  David Binderman  <dcb314@hotmail.com>
82
83         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
84         local variable bb_note.
85         * dominance.c (get_dominated_by): Likewise local var n.
86         (output_file_names): Likewise local var idx.
87         (add_location_or_const_value_attribute): Likewise local var status.
88         * dwarf2out.c (gen_variable_die): Likewise local var field.
89         * emit-rtl.c (no_line_numbers): Remove.
90         (init_emit_once): Remove line_numbers parameter.
91         * rtl.h (init_emit_once): Adjust prototype.
92         * toplev.c (backend_init): Adjust init_emit_once call.
93
94 2009-11-24  Richard Guenther  <rguenther@suse.de>
95
96         PR tree-optimization/42142
97         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
98         Handle iv-dependent (non-)kills properly.
99         (mark_aliased_reaching_defs_necessary): Pass the basic-block
100         of the reference statement to mark_aliased_reaching_defs_necessary_1.
101
102 2009-11-24  Martin Jambor  <mjambor@suse.cz>
103
104         PR tree-optimization/42154
105         * tree-sra.c (struct access): Added comments.
106         (sra_modify_expr): Build references to the old aggregate with
107         build_ref_for_offset instead of reusing access->expr.
108         (load_assign_lhs_subreplacements): Likewise.
109
110 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
111
112         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
113         to expander.
114         (sub<mode>3_carry): Ditto.
115         (x86_mov<mode>cc_0_m1): Ditto.
116         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
117         for ix86_carry_flag_operator operator predicate.
118         (*sub<mode>3_carry): Ditto.
119         (*x86_mov<mode>cc_0_m1): Ditto.
120         (*addsi3_carry_zext): Use VOIDmode match_operator for
121         ix86_carry_flag_operator operator predicate.
122         (*subsi3_carry_zext): Ditto.
123         (*x86_mov<mode>cc_0_m1_s): Ditto.
124         (*x86_mov<mode>cc_0_m1_neg): Ditto.
125         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
126         check operator sub-expressions for FLAGS_REG and const0_rtx.
127         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
128         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
129         (ix86_expand_int_addcc): Update calls to
130         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
131         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
132         Do not set mode of compare operation.
133
134 2009-11-23  Jan Hubicka  <jh@suse.cz>
135
136         PR middle-end/42151
137         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
138         twice.
139
140 2009-11-23  Jan Hubicka  <jh@suse.cz>
141
142         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
143         wrong profile updates.
144         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
145         having largest frequency.
146         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
147         used uninitalized warning.
148         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
149         frequencies.
150
151 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
152
153         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
154         of gen_rtx_REG to generate operand 5.
155         (*cmp_ssub_sidi): Ditto.
156
157 2009-11-23  Richard Henderson  <rth@redhat.com>
158
159         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
160         mismatch.
161
162 2009-11-23  Paul Brook  <paul@codesourcery.com>
163
164         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
165         case for noreturn functions.
166         (arm_compute_save_reg_mask): Remove special noreturn handling.
167
168 2009-11-23  Richard Guenther  <rguenther@suse.de>
169
170         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
171         size for DECL bases.
172
173 2009-11-22  Richard Henderson  <rth@redhat.com>
174
175         * i386.c (avx_vpermilp_parallel): New function.
176         * i386-protos.h: Declare it.
177         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
178         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
179         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
180         (ssescalarnum, ssedoublesizemode): Add AVX modes.
181         (vpermilbits): Remove.
182         (avx_vpermil<mode>): Change insns to expanders.
183         (*avx_vpermil<mode>): New.  Use vec_select.
184
185 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
186
187         * opts.c (decode_options): Don't enable flag_schedule_insns
188         when optimizing for size.
189         * doc/invoke.texi: Document change.
190
191 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
192
193         PR target/42113
194         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
195         of scratch register to SImode.
196         (*cmp_sadd_sidi): Ditto.
197         (*cmp_ssub_si): Ditto.
198         (*cmp_ssub_sidi): Ditto.
199
200 2009-11-21  Ian Lance Taylor  <iant@google.com>
201
202         * Makefile.in (HOST_LIBS): Move higher in file.
203         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
204         is not empty, set to $(CC) and $(CFLAGS).
205
206 2009-11-22  Martin Jambor  <mjambor@suse.cz>
207
208         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
209         V_C_E of an SSA_NAME or an invariant if lvalue is required.
210         (verify_gimple_call): Verify LHS also with with
211         verify_types_in_gimple_reference.
212
213 2009-11-21  Martin Jambor  <mjambor@suse.cz>
214
215         PR middle-end/42025
216         * tree-sra.c (access_precludes_ipa_sra_p): New function.
217         (splice_param_accesses): Check all accesses by calling
218         access_precludes_ipa_sra_p.
219         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
220         not convert types if it is true.
221         (sra_ipa_modify_assign): Convert types in case of mismatch.
222
223 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
224
225         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
226         for operand 1.
227
228 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
229
230         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
231         (mips_mulsidi3_gen_fn): Declare new function.
232         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
233         * config/mips/mips.md (<u>mulsidi3): Change condition to use
234         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
235         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
236         (mulsidi3_64bit_dmul): New define_insn.
237
238 2009-11-21  Ben Elliston  <bje@au.ibm.com>
239
240         * gengtype-lex.l: Enable noinput flex option.
241         (YY_NO_INPUT): Remove define.
242
243 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
244
245         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
246         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
247         (insert_debug_temps_for_defs): Handle PHI nodes.
248         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
249         SSA names.
250
251 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
252
253         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
254         after remove_phi_node.
255
256 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
257
258         PR tree-optimization/42078
259         * gimple.h (gimple_replace_lhs): New declaration.
260         * gimple.c (gimple_replace_lhs): New function.
261         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
262         modifying the call.
263
264 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
265
266         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
267         (xop_mulv2div2di3_low): Same.
268         (*xop_pmacsdqh_mem): Same.
269
270 2009-11-20  Richard Henderson  <rth@redhat.com>
271
272         * config/i386/i386-builtin-types.awk: New file.
273         * config/i386/i386-builtin-types.def: New file.
274         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
275         * config/i386/i386.c: Include it.
276         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
277         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
278         (struct builtin_isa): Remove GTY marker.  Replace tree type with
279         ix86_builtin_func_type; add set_and_not_built_p.
280         (def_builtin): Change type parameter to tcode; use
281         ix86_get_builtin_func_type; update all callers.  Accept zero mask
282         to mean the builtin is unconditionally available.
283         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
284         being set to NULL.
285         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
286         Update some users to rationalized enumeration codes from new include.
287         (enum multi_arg_type): Remove.  Replace all enumeration values
288         with defines to new ix86_builtin_func_type.
289         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
290         all type resolution to def_builtin.
291         (ix86_init_builtin_types): Split out from ...
292         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
293
294 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
295
296         PR target/41787
297         * config/rs6000/rs6000.c (struct machine_function): Revert
298         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
299         (rs6000_expand_to_rtl_hook): Ditto.
300         (rs6000_check_vector_mode): Ditto.
301         (compute_vrsave_mask): Ditto.
302
303 2009-11-20  Paul Brook  <paul@codesourcery.com>
304
305         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
306         * config/arm/arm-cores.def: Add cortex-a5.
307         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
308         * config/arm/arm-tune.md: Regenerate.
309
310 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
311
312         PR middle-end/39960
313         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
314         (ref_pos): New field in structure.
315         (insert_new_var_in_stmt): New function.
316
317
318 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
319
320         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
321         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
322         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
323         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
324         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
325         INT_LEAST64_TYPE): Define.
326         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
327         UINT_LEAST64_TYPE): Define.
328         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
329         INT_FAST64_TYPE): Define.
330         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
331         UINT_FAST64_TYPE): Define.
332         (INTPTR_TYPE, UINTPTR_TYPE): Define.
333
334 2009-11-20  Julian Brown  <julian@codesourcery.com>
335
336         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
337         specially for Thumb-1.
338         (ASM_OUTPUT_REG_POP): Likewise.
339
340 2009-11-19  Jason Merrill  <jason@redhat.com>
341
342         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
343
344 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
345             Rafael Avila de Espindola  <espindola@google.com>
346
347         * doc/plugins.texi (Plugin initialization): Added advices for
348         retrieving the version of GCC at plugin compilation and loading times.
349
350 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
351
352         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
353         (dump_active_plugins): output to file everything. Use
354         internationalized dump & FMT_FOR_PLUGIN_EVENT.
355
356 2009-11-19  Richard Guenther  <rguenther@suse.de>
357
358         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
359         around truth-valued expressions.
360         * tree.c (free_lang_data): Untangle check for LTO frontend.
361
362 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
363
364         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
365         of cgraph_node_for_decl.
366         * cgraph.h (cgraph_node_for_decl): Remove prototype.
367         * cgraph.c (cgraph_node_for_decl): Remove.
368         (cgraph_get_node): Just return NULL if !cgraph_hash.
369
370 2009-11-19  Paul Brook  <paul@codesourcery.com>
371
372         * config.gcc: Add new ARM --with-fpu options.
373         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
374         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
375
376 2009-11-18  Richard Guenther  <rguenther@suse.de>
377
378         * gimple.h (union gimple_statement_d): Add gsmembase member.
379         (gimple_vuse_op): Use gsmembase for access.
380         (gimple_vdef_op): Likewise.
381         (gimple_vuse): Likewise.
382         (gimple_vdef): Likewise.
383         (gimple_vuse_ptr): Likewise.
384         (gimple_vdef_ptr): Likewise.
385         (gimple_set_vuse): Likewise.
386         (gimple_set_vdef): Likewise.
387         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
388
389 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
390
391         * doc/arm-neon-intrinsics.texi: Regenerated.
392
393 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
394
395         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
396
397 2009-11-18  Paul Brook  <paul@codesourcery.com>
398             Daniel Jacobowitz  <dan@codesourcery.com>
399
400         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
401         (arm_arch7em): New variable.
402         (all_architectures): Add armv7e-m.
403         (arm_override_options): Set arm_arch7em.
404         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
405         Include arm_arch7em.
406         (arm_arch7em): Declare.
407
408 2009-11-18  Richard Guenther  <rguenther@suse.de>
409
410         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
411         a valid field decl if checking is enabled.
412
413 2009-11-18  Martin Jambor  <mjambor@suse.cz>
414
415         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
416         (lto_ipa_fixup_call_notes): Declare.
417         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
418         (update_call_notes_after_inlining): Copy call stmt uid to the new
419         edge.
420         (ipa_write_param_call_note): New function.
421         (ipa_read_param_call_note): New function
422         (ipa_write_node_info): Write also param call notes.  Removed a bogus
423         comment, reformatted to fit 80 columns.
424         (ipa_read_node_info): Read also param call notes. Removed a bogus
425         comment.  Remove ipa_edge_args_vector growth.
426         (lto_ipa_fixup_call_notes): New function.
427         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
428         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
429         inlining regardless of flag_wpa.
430         (cgraph_decide_inlining_of_small_functions): Likewise.
431         (cgraph_decide_inlining): Likewise.
432         (inline_read_summary): Likewise.
433
434 2009-11-18  Jan Hubicka  <jh@suse.cz>
435
436         * predict.c (compute_function_frequency): Export.
437         * predict.h (compute_function_frequency): Declare.
438         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
439
440 2009-11-18  Martin Jambor  <mjambor@suse.cz>
441
442         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
443         on all nodes we write summaries for.
444
445 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
446         
447         PR middle-end/22201
448         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
449         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
450         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
451         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
452         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
453         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
454         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
455         description string.
456
457 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
458
459         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
460         unnecessarily.
461         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
462
463         PR c++/3187
464         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
465         fields.
466         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
467         prototypes.
468         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
469         cgraph_materialize_all_clones): Handle same_body aliases.
470         * cgraph.c (cgraph_allocate_node): New function.
471         (cgraph_create_node): Use it.
472         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
473         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
474         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
475         functions.
476         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
477         (input_node): Stream in same_body aliases.
478         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
479         for same_body aliases.
480         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
481
482 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
483
484         PR other/39888
485         * config/darwin.h: Use the extension stub libraries to access
486         current libgcc_s features.
487
488 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
489
490         PR debug/41926
491         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
492         (vect_transform_loop): Call it.
493
494 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
495
496         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
497         released SSA names.
498
499 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
500
501         PR debug/41888
502         PR debug/41886
503         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
504         are ok.
505         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
506         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
507         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
508         (sese_bad_liveouts_use): New.
509         (sese_reset_debug_liveouts_bb): New.
510         (sese_build_liveouts): Use it.
511         (rename_variables_in_stmt): Reset debug stmts rather than creating
512         new vars for them.
513         (expand_scalar_variable_stmt): Likewise.
514
515 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
516
517         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
518         (df_ref_remove): Likewise.
519
520 2009-11-17  Jan Hubicka  <jh@suse.cz>
521
522         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
523         info.
524
525 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
526
527         * toplev.c (process_options): Remove dead code.
528         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
529
530 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
531
532         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
533         nodes.
534
535 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
536
537         PR tree-optimization/41857
538         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
539         TYPE's address space instead of pointer to TYPE.
540
541 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
542
543         * reload.c (find_reloads_address): Fix typo.
544
545 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
546
547         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
548         registers in leaf functions if possible.
549
550 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
551
552         * config/m68k/m68k-devices.def: Add MCF5441x family.
553
554 2009-11-17  Jan Hubicka  <jh@suse.cz>
555
556         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
557         removed node.
558         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
559
560 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
561
562         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
563         nest ior expressions.
564         (x86_64_szext_nonmemory_operand): Ditto.
565         (call_insn_operand): Ditto.
566
567 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
568
569         * stmt.c (expand_asm_stmt): Get locus from stmt.
570
571 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
572
573         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
574         Create the decl label for the new dest block on demand.  Require
575         a fallthrough edge if no asm labels were redirected.
576
577 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
578
579         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
580         operand 1 predicate.
581         (cstoresi4): Ditto for operand 2.
582         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
583         patterns using SDWIM mode iterator.
584         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
585         using SWIM mode iterator.
586         (cmpdi_1): Rename from cmpdi_1_rex64.
587         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
588         SWI48 mode iterator.
589         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn using SWI
590         mode iterator.
591         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
592         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
593         (*cmpqi_ext_3_insn): Make private.
594         (*cmpqi_ext_3_insn_rex64): Make private.
595         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
596         * config/i386/predicates.md (cmpsi_operand): Remove.
597
598 2009-11-16  Paul Brook  <paul@codesourcery.com>
599
600         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
601         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
602
603 2009-11-14  Jan Hubicka  <jh@suse.cz>
604
605         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
606         ENTRY_BLOCK_PTR.
607         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
608         zero out all callees.
609         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
610         frequency and count match.
611         * ipa-inline.c (update_noncloned_frequencies): New function.
612         (cgraph_clone_inlined_nodes): Use it.
613         * tree-inline.c (copy_bb): Fix frequency scaling; output
614         diagnostic on frequency mismatches to dump file.
615         (initialize_cfun): Do not scale frequency; fix count scaling;
616         initialize entry and exit block frequencies; copy profile info.
617         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
618         (copy_body): Use frequency_scale as argument.
619         (expand_call_inline): Compute frequency scale and output diagnostic
620         to dump file.
621         (delete_unreachable_blocks_update_callgrah): Remove checking that
622         has to be done after edge redirection.
623         (tree_function_versioning): Update initialize_cfun and copy_body call.
624
625 2009-11-14  Jan Hubicka  <jh@suse.cz>
626
627         * cgraph.c (cgraph_release_function_body): Update use of
628         ipa_transforms_to_apply.
629         (cgraph_remove_node): Remove ipa_transforms_to_apply.
630         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
631         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
632         copied body.
633         (cgraph_materialize_clone): Remove original if dead.
634         * lto-streamer-in.c (lto_read_body): Remove FIXME and
635         ipa_transforms_to_apply hack.
636         * function.h (struct function): Add ipa_transforms_to_apply.
637         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
638         * tree-inline.c (copy_bb): Update sanity check.
639         (initialize_cfun): Do not copy ipa_transforms_to_apply.
640         (expand_call_inline): remove dead clone originals.
641         (tree_function_versioning): Merge transformation queues.
642         * passes.c (add_ipa_transform_pass): Remove.
643         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
644         tracking.
645         (execute_all_ipa_transforms): Update.
646         (execute_one_pass): Update.
647
648 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
649
650         PR target/21078, 21080
651         * config/avr/avr.c (avr_return_addr_rtx): New function for
652         builtin_return_address.
653         (expand_prologue): Calculate stack usage.
654         (avr_asm_function_end_prologue): Output stack size and offset label.
655         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
656         (machine_function): Add stack_usage.
657         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
658
659 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
660
661         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
662         new 'outgoing' argument.
663         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
664         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
665         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
666         iq2000_function_value_regno_p.
667         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
668         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
669         Declare.
670
671 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
672
673         PR target/42031
674         * arm.md (adddi_sesidi_di): Place tied contraint first.
675         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
676         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
677         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
678         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
679         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
680         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
681         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
682         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
683         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
684
685 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
686
687         * config/i386/predicates.md (call_register_no_elim_operand):
688         New predicate.  Reject stack register as valid call operand
689         for 32bit targets.
690         (call_insn_operand): Use call_register_no_elim_operand.
691
692 2009-11-13  Richard Henderson  <rth@redhat.com>
693
694         * function.c (stack_protect_prologue): Don't bypass expand_expr
695         for stack_protect_guard and guard_decl.
696         (stack_protect_epilogue): Likewise.
697
698 2009-11-13  Jan Hubicka  <jh@suse.cz>
699
700         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
701         when to PUBLIC is set.
702
703 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
704
705         PR middle-end/42029
706         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
707         tmp_load if needed.
708
709 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
710
711         PR target/41900
712         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
713         *call_value_1): Use "lsm" as operand 1 constraint.
714         * config/i386/predicates.md (call_insn_operand): Depend on
715         index_register_operand to avoid %esp register.
716
717 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
718
719         Revert:
720         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
721
722         PR target/41900
723         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
724         (TARGET_CALL_ESP): New define.
725         * config/i386/i386.c (initial_ix86_tune_features): Initialize
726         X86_ARCH_CALL_ESP.
727         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
728         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
729         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
730         TARGET_CALL_ESP.
731         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
732         New patterns, use "lsm" as operand 1 constraint.
733         * config/i386/predicates.md (call_insn_operand): Depend on
734         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
735
736 2009-11-13  Jason Merrill  <jason@redhat.com>
737
738         PR debug/26965
739         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
740         Don't emit a second declaration at any scope.
741
742 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
743
744         PR rtl-optimization/41697
745         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
746         a conditional jump has a single successor.
747
748 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
749
750         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
751         allocate reg_last when in case lazy_reg_last is true.
752         (init_deps_reg_last): New.
753         (free_deps): When max_reg is 0, this context is already freed.
754         * sched-int.h (init_deps_reg_last): Export.
755         (init_deps): Update prototype.
756         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
757         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
758         * ddg.c (build_intra_loop_deps): Likewise.
759         * sel-sched-ir.c (copy_deps_context, create_deps_context,
760         reset_deps_context, deps_init_id): Likewise.
761         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
762         (free_data_for_scheduled_insn): New, break down from ...
763         (free_first_time_insn_data): ... here.
764         (has_dependence_p): Allocate reg_last now, when it is needed.
765         (extend_insn_data): When maximal LUID is big enough, allocate
766         per-insn data in smaller chunks.
767         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
768         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
769         in scheduled insn.
770
771 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
772
773         * config/i386/i386.md (call_value): Fix comment.
774         (sibcall_value): Ditto.
775
776 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
777
778         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
779         (MD_FROB_UPDATE_CONTEXT): Define.
780
781 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
782             Laurent GUERBY  <laurent@guerby.net>
783
784         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
785         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
786         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
787
788 2009-11-12  Jan Hubicka  <jh@suse.cz>
789
790         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
791         and clear DECL_COMMON on localized declarations.
792
793 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
794
795         PR rtl-opt/38582
796         * regrename.c (struct du_head): New structure; some elements moved
797         from...
798         (struct du_chain): ... this one.
799         (open_chains, closed_chains): Now of type struct du_head *.
800         (do_replace): Accept du_head argument, not du_chain.  All callers
801         changed.  Modified code to match new data structures.
802         (build_def_use): Return a list of du_head structures.  Modified code
803         to match new data structures.
804         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
805         callers changed.  Modified code to match new data structures.
806         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
807         callers changed.  Modified code to match new data structures.
808         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
809         Allocate a du_head structure as well as a du_chain when creating a
810         new chain.  Modified other code to match new data structures.
811
812 2009-11-12  Jan Hubicka  <jh@suse.cz>
813
814         * cgraph.h (varpool_node_name): Declare.
815         * cgraphunit.c (process_function_and_variable_attributes): Set
816         force_output flag on used variables.
817         * ipa.c (function_and_variable_visibility): Dump externally visible
818         and needed variables.
819         * varpool.c (varpool_node_name): Export.
820         (decide_is_variable_needed): Check COMDAT for externally visible vars;
821         ignore needed flag.
822
823 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
824
825         PR middle-end/41930
826         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
827         processing if XEXP (x, i) is NULL.
828
829 2009-11-12  Jan Hubicka  <jh@suse.cz>
830
831         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
832         imply PUBLIC || EXTERNAL.
833
834 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
835
836         PR middle-end/41440
837         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
838         single successor block, ending with jump created by RTL expander.
839
840 2009-11-11  Jan Hubicka  <jh@suse.cz>
841
842         PR middle-end/41729
843         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
844         and WEAK variables at -fwhole-program.
845
846         PR middle-end/41735
847         * ipa.c (whole_program_function_and_variable_visility): COMDAT
848         functions/variables are not needed even if they are externally visible.
849
850 2009-11-11  Jan Hubicka  <jh@suse.cz>
851
852         (patch by Richard Guenther)
853         * lto-streamer-out.c (output_function): Output head of argument list
854         earlier.
855         * lto-streamer-in.c (input_function): Re-map arguments into merged
856         declaration.
857
858 2009-11-11  Jan Hubicka  <jh@suse.cz>
859
860         * lto-cgraph.c: Include gcov-io.h
861         (output_profile_summary): New function.
862         (output_cgraph): Use it.
863         (input_profile_summary): New function.
864         (input_cgraph): Use it.
865         * coverage.c (build_ctr_info_value): Use varpool; initalize
866         DECL_ASSEMBLER_NAME.
867         (create_coverage): Likewise.
868         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
869         (tree_init_edge_profiler): Likewise.
870         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
871
872 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
873
874         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
875         * c-pragma.c (def_pragma_macro_value): Likewise.
876         (def_pragma_macro): Likewise.
877         (pushed_macro_table): Likewise.
878         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
879         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
880
881 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
882
883         * doc/plugins.texi (Registering custom attributes): section
884         renamed as (Registering custom attributes or pragmas).
885         Mentions custom attributes & pragmas, and c_register_pragma, with
886         a small example.
887         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
888         pragmas.
889         * doc/extend.texi (Function Attributes): Mentions that plugin can
890         provide their attributes.
891
892 2009-11-11  Jon Beniston  <jon@beniston.com>
893
894         * config.gcc: Add lm32 elf and uclinux targets.
895         * config/lm32: New directory.
896         * config/lm32/lm32.c: New file.
897         * config/lm32/lm32.h: New file.
898         * config/lm32/lm32.md: New file.
899         * config/lm32/lm32.opt: New file.
900         * config/lm32/lm32-protos.h: New file.
901         * config/lm32/constraints.md: New file.
902         * config/lm32/predicates.md: New file.
903         * config/lm32/sfp-machine.h: New file.
904         * config/lm32/t-fprules-softfp: New file.
905         * config/lm32/uclinux-elf.h: New file.
906         * doc/invoke.texi: Document lm32 options.
907         * doc/contrib.texi: Document lm32 porter.
908         * doc/install.texi: Document lm32 targets.
909
910 2009-11-11  Martin Jambor  <mjambor@suse.cz>
911
912         PR lto/41932
913         * ipa-prop.c (ipa_update_after_lto_read): Call
914         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
915         call ipa_initialize_node_params instead of ipa_populate_param_decls.
916
917 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
918
919         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
920         (neon_expand_vector_init): Use them.  Also handle non-constant
921         vectors with identical elements and vectors with only one
922         non-constant element.
923         (arm_print_operand): Handle 'y' modifier.
924         * config/arm/arm-protos.h (neon_make_constant): Declare.
925         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
926         patterns.  Use VX instead of VDQW for the first one.  Allow
927         a VFP alternative and V32 modes for the second one.
928         * config/arm/neon.ml (shape_elt): Add Alternatives.
929         (ops): Use Alternatives for vdup lane instructions.
930         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
931         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
932
933 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
934
935         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
936         operands.
937         (movti, mov<mode>): Call force_reg on one operand if required.
938         * config/arm/vec-common.md (mov<mode>): Likewise.
939
940 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
941
942         * config/arm/arm.c (arm_override_options): Enable scheduling for
943         Thumb-2.
944
945 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
946
947         PR target/10127
948         PR ada/20548
949         * expr.h (anti_adjust_stack_and_probe): Declare.
950         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
951         parameter and rewrite head comment.
952         (allocate_dynamic_stack_space): Adjust call to above function.
953         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
954
955         * tree.h (dwarf2out_args_size): Delete.
956         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
957         (dwarf2out_args_size_adjust): Delete prototype and move around.
958         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
959         ACCUMULATE_OUTGOING_ARGS targets.
960
961 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
962
963         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
964         DECL_SIZE of DECL_RESULT before evaluating it.
965
966 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
967
968         PR tree-optimization/41987
969         * fold-const.c (const_binop): Avoid using fold_buildN().
970
971 2009-11-10  Martin Jambor  <mjambor@suse.cz>
972
973         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
974         (execute_all_ipa_stmt_fixups): Declare.
975         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
976         * ipa-inline.c (pass_ipa_inline): Likewise.
977         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
978         * ipa-reference.c (pass_ipa_reference): Likewise.
979         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
980         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
981         (pass_ipa_lto_finish_out): Likewise.
982         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
983         * passes.c (execute_ipa_stmt_fixups): New function.
984         (execute_all_ipa_stmt_fixups): New function.
985         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
986
987 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
988
989         PR ada/20548
990         * explow.c (probe_stack_range): Fix typo.
991         * config/sparc/sparc.md (probe_stack): New expander.
992
993 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
994
995         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
996
997 2009-11-09  Jason Merrill  <jason@redhat.com>
998
999         * gdbinit.in (pgq): New function for printing gimple sequence.
1000
1001 2009-11-09  Paul Brook  <paul@codesourcery.com>
1002             Daniel Jacobowitz  <dan@codesourcery.com>
1003             Sandra Loosemore  <sandra@codesourcery.com>
1004
1005         * doc/extend.texi (Half-Precision): Update wording to reflect
1006         that there are now multiple -mfpu options that enable fp16
1007         hardware support.
1008         * doc/invoke.texi: Update list of ARM -mfpu= options.
1009         * config.gcc: Update ARM --with-fpu option list.
1010         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
1011         vfpv3xd and vfpv3xd-fp16.
1012         (use_vfp_abi): New function.
1013         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
1014         when undesirable.
1015         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
1016         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
1017         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
1018         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
1019         provides them.
1020         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
1021         NEON.
1022         (arm_print_operand): Handle 'p' modifier.
1023         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
1024         TARGET_FP16.
1025         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
1026         (TARGET_FP16): Define.
1027         * config/arm/vfp.md: Disable double-precision patterns if the FPU
1028         does not provide them.
1029         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
1030         double-precision values on a single-precision FPU.
1031         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
1032         double-precision constants.
1033         (movhf_vfp_neon): New pattern (was movhf_vfp).
1034         (movhf_vfp): Remove NEON instructions.
1035         * config/arm/constraints.md: Add new "Dy" constraint for
1036         double-precision constants.  Update description of "Dv".
1037         * config/arm/arm.md: Disable double-precision patterns if the FPU
1038         does not provide them
1039
1040 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
1041
1042         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
1043         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
1044         diagnostics.
1045
1046 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
1047
1048         * collect2.c (main): Search PLUGIN_LD for plugin linker.
1049
1050         * configure.ac (--with-plugin-ld): New.  Default to ld.
1051         * configure: Regenerated.
1052         * config.in: Likewise.
1053
1054         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
1055         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
1056
1057 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
1058
1059         * config/openbsd-stdint.h: Change to reflect what
1060         c_common_nodes_and_builtins expects.
1061
1062 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
1063
1064         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
1065
1066 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
1067
1068         PR target/41985
1069         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
1070         function contains at least one local dynamic name.
1071         (print_operand) <case '&'>: Instead output operand lossage diagnostics
1072         here if that happens.
1073
1074 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
1075             Joern Rennecke  <amylaar@spamcop.net>
1076
1077         * cfgrtl.c (pass_free_cfg): Add pass name.
1078         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
1079         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
1080         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
1081         * df-core.c (pass_df_initialize_no_opt): Likewise.
1082         * except.c (pass_rtl_eh): Likewise.
1083         * function.c (pass_init_function, pass_leaf_regs): Likewise.
1084         * gcse.c (pass_rtl_pre): Change pass name.
1085         * passes.c (pass_postreload): Add pass name.
1086         (make_pass_instance): Don't use duplicate-tracking logic for
1087         names starting with '*'.
1088         (next_pass_1): Assert that pass has a name.
1089         (register_one_dump_file): If there is an space in the name,
1090         skip past it.
1091         * predict.c (pass_strip_predict_hints): Add pass name.
1092         * reg-stack.c (pass_stack_regs): Likewise.
1093         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
1094         * tree-cfg.c (pass_warn_function_return,
1095         pass_warn_function_noreturn): Add pass name.
1096         * tree-dfa.c (pass_referenced_vars): Likewise.
1097         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
1098         Fix whitespace before comment.
1099         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
1100         (pass_init_datastructures): Add pass name.
1101         * tree-ssa-loop.c (pass_record_bounds): Likewise.
1102         * tree-ssa.c (pass_early_warn_uninitialized,
1103         pass_late_warn_uninitialized): Likewise.
1104         * tree.c (pass_ipa_free_lang_data): Likewise.
1105         * doc/passes.texi (pass manager): Document how to disambiguate
1106         pass names.
1107
1108 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
1109
1110         * df-problems.c: Fix documentation for forward simulation of LR.
1111         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
1112         (df_simulate_finalize_forwards): Remove.
1113         * df.h (df_simulate_finalize_forwards): Remove.
1114
1115 2009-11-08  Richard Guenther  <rguenther@suse.de>
1116
1117         * tree-ssa-structalias.c (build_succ_graph): Properly make
1118         variables escape if they are stored to anything.
1119
1120 2009-11-08  Richard Guenther  <rguenther@suse.de>
1121
1122         PR rtl-optimization/41928
1123         * loop-invariant.c (free_loop_data): If we didn't allocate
1124         loop data do not try to free it.
1125
1126 2009-11-07  Jason Merrill  <jason@redhat.com>
1127
1128         * tree.c (reconstruct_complex_type): Preserve attributes.
1129
1130 2009-11-07  Richard Guenther  <rguenther@suse.de>
1131
1132         * tree-ssa-structalias.c (build_succ_graph): Feed stores
1133         to anything only to variables that can take pointers.
1134         (get_constraint_for_ssa_var): Properly exclude full
1135         variables from expanding.
1136         (first_vi_for_offset): Avoid overflow in arithmetic.
1137         (first_or_preceding_vi_for_offset): Likewise.
1138         (count_num_arguments): Fix implementation.
1139         (gate_ipa_pta): Do not run when not optimizing.
1140
1141 2009-11-07  David Binderman <dcb314@hotmail.com>
1142
1143         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
1144         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
1145         set but not used variables.
1146         (apply_args_reg_offset): Comment out as unused.
1147         * calls.c (flags_from_decl_or_type): Likewise.
1148         * genautomata.c (check_regexp_units_distribution): Likewise.
1149
1150 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
1151
1152         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
1153         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
1154         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
1155         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
1156         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
1157         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
1158         operand alternatives.
1159
1160 2009-11-06  Michael Matz  <matz@suse.de>
1161
1162         PR middle-end/41963
1163         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
1164         of a potential reciprocal to really be reciprocals.
1165
1166 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
1167
1168         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
1169         lwpintrin.h after immintrin.h.
1170         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
1171         typedefs.
1172
1173         PR middle-end/41935
1174         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
1175         or non-constant index, allow index one past the last element and
1176         allow exceeding array bound in arrays that might be used as flexible
1177         array members.
1178
1179 2009-11-05  Richard Henderson  <rth@redhat.com>
1180
1181         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
1182
1183 2009-11-05  Paul Brook  <paul@codesourcery.com>
1184
1185         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
1186         (arm_fpu_desc): New.
1187         (all_fpus): Add FPU details.
1188         (fp_model_for_fpu): Remove.
1189         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
1190         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
1191         (arm_file_start): Use arm_fpu_desc.
1192         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
1193         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
1194         arm_fpu_desc.
1195         (TARGET_FPA_EMU2): Define.
1196         (arm_fp_model, fputype, arm_fpu_tune): Remove.
1197         (vfp_reg_type, arm_fpu_desc): New.
1198         * config/arm/arm.md (attr fpu): Simplify.
1199         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
1200         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
1201         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
1202         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
1203         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
1204
1205 2009-11-05  Michael Matz  <matz@suse.de>
1206
1207         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
1208         on TARGET_RECIP.
1209         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
1210         for 1/sqrtf.
1211
1212 2009-11-04  Jason Merrill  <jason@redhat.com>
1213
1214         PR c++/36912
1215         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
1216         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
1217         (output_constant): Avoid crash after error.
1218
1219 2009-11-05  Martin Jambor  <mjambor@suse.cz>
1220
1221         * tree-sra.c (struct access): Changed comment of next_sibling field.
1222         (analyze_modified_params): Loop over accesses of a group rather than
1223         over all with the ame base, pass a common bitmap to
1224         walk_aliased_vdefs.
1225         (unmodified_by_ref_scalar_representative): Build link lists of
1226         accesses of a group.
1227         (splice_param_accesses): Likewise.
1228
1229 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
1230
1231         * df-scan.c (df-uses-record): Add case zero_extract of mem.
1232
1233 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
1234
1235         PR target/10127
1236         PR ada/20548
1237         * config/i386/i386.md (probe_stack): New expander.
1238         (logical operation peepholes): Do not split stack checking probes.
1239
1240 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1241             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1242
1243         * doc/invoke.texi (-mlwp): Add documentation.
1244         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
1245         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
1246         (x86_64-*-*): Ditto.
1247         * config/i386/lwpintrin.h: New file, provide x86 compiler
1248         intrinisics for LWP.
1249         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
1250         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
1251         * config/i386/i386-c.c (ix86_target_macros_internal): Check
1252         ISA_FLAG for LWP.
1253         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
1254         * config/i386/i386.opt (-mlwp): New switch for LWP support.
1255         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
1256         (OPTION_MASK_ISA_LWP_UNSET): New.
1257         (ix86_handle_option): Handle -mlwp.
1258         (isa_opts): Handle -mlwp.
1259         (enum pta_flags): Add PTA_LWP.
1260         (override_options): Add LWP support.
1261         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
1262         (IX86_BUILTIN_LLWPCB32): Ditto.
1263         (IX86_BUILTIN_LLWPCB64): Ditto.
1264         (IX86_BUILTIN_SLWPCB16): Ditto.
1265         (IX86_BUILTIN_SLWPCB32): Ditto.
1266         (IX86_BUILTIN_SLWPCB64): Ditto.
1267         (IX86_BUILTIN_LWPVAL16): Ditto.
1268         (IX86_BUILTIN_LWPVAL32): Ditto.
1269         (IX86_BUILTIN_LWPVAL64): Ditto.
1270         (IX86_BUILTIN_LWPINS16): Ditto.
1271         (IX86_BUILTIN_LWPINS32): Ditto.
1272         (IX86_BUILTIN_LWPINS64): Ditto.
1273         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
1274         (builtin_description): Ditto.
1275         (ix86_init_mmx_sse_builtins): Ditto.
1276         (ix86_expand_special_args_builtin): Ditto.
1277         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
1278         LWP support.
1279         (UNSPEC_SLWP_INTRINSIC): Ditto.
1280         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
1281         (UNSPECV_LWPINS_INTRINSIC): Ditto.
1282         (lwp_llwpcbhi1): New lwp pattern.
1283         (lwp_llwpcbsi1): Ditto.
1284         (lwp_llwpcbdi1): Ditto.
1285         (lwp_slwpcbhi1): Ditto.
1286         (lwp_slwpcbsi1): Ditto.
1287         (lwp_slwpcbdi1): Ditto.
1288         (lwp_lwpvalhi3): Ditto.
1289         (lwp_lwpvalsi3): Ditto.
1290         (lwp_lwpvaldi3): Ditto.
1291         (lwp_lwpinshi3): Ditto.
1292         (lwp_lwpinssi3): Ditto.
1293         (lwp_lwpinsdi3): Ditto.
1294
1295 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1296             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1297
1298         PR rtl-opt/41833
1299         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
1300         a vec_duplicate.
1301
1302 2009-11-04  Richard Guenther  <rguenther@suse.de>
1303             Rafael Avila de Espindola  <espindola@google.com>
1304
1305         * gcc.c (process_command): Handle arguments name@offset.
1306
1307 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
1308             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1309
1310         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
1311         (x86_64-*-*): Ditto.
1312         * config/i386/xopintrin.h: New file, provide common x86 compiler
1313         intrinisics for XOP.
1314         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
1315         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
1316         * config/i386/i386-c.c(ix86_target_macros_internal): Check
1317         ISA_FLAG for XOP.
1318         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
1319         * config/i386/i386.opt (-mxop): New switch for XOP support.
1320         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
1321         (UNSPEC_XOP_TRUEFALSE)
1322         (UNSPEC_XOP_PERMUTE)
1323         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
1324         (PPERM_*): New constants for vpperm instruction.
1325         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
1326         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
1327         (OPTION_MASK_ISA_XOP_UNSET): New.
1328         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
1329         (ix86_handle_option): Handle -mxop.
1330         (isa_opts): Handle -mxop.
1331         (enum pta_flags): Add PTA_XOP.
1332         (override_options): Add XOP support.
1333         (print_operand): Add code for XOP compare instructions.
1334         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
1335         (ix86_expand_int_vcond): Extend for XOP compare instruction.
1336
1337         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
1338         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
1339         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
1340         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
1341         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
1342         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
1343         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
1344
1345         (IX86_BUILTIN_VPCMOV256): Ditto.
1346         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
1347         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
1348         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
1349         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
1350         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
1351         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
1352
1353         (IX86_BUILTIN_VPPERM): Ditto.
1354
1355         (IX86_BUILTIN_VPMACSSWW): Ditto.
1356         (IX86_BUILTIN_VPMACSWW): Ditto.
1357         (IX86_BUILTIN_VPMACSSWD): Ditto.
1358         (IX86_BUILTIN_VPMACSWD): Ditto.
1359         (IX86_BUILTIN_VPMACSSDD): Ditto.
1360         (IX86_BUILTIN_VPMACSDD): Ditto.
1361         (IX86_BUILTIN_VPMACSSDQL): Ditto.
1362         (IX86_BUILTIN_VPMACSSDQH): Ditto.
1363         (IX86_BUILTIN_VPMACSDQL): Ditto.
1364         (IX86_BUILTIN_VPMACSDQH): Ditto.
1365         (IX86_BUILTIN_VPMADCSSWD): Ditto.
1366         (IX86_BUILTIN_VPMADCSWD): Ditto.
1367
1368         (IX86_BUILTIN_VPHADDBW): Ditto.
1369         (IX86_BUILTIN_VPHADDBD): Ditto.
1370         (IX86_BUILTIN_VPHADDBQ): Ditto.
1371         (IX86_BUILTIN_VPHADDWD): Ditto.
1372         (IX86_BUILTIN_VPHADDWQ): Ditto.
1373         (IX86_BUILTIN_VPHADDDQ): Ditto.
1374         (IX86_BUILTIN_VPHADDUBW): Ditto.
1375         (IX86_BUILTIN_VPHADDUBD): Ditto.
1376         (IX86_BUILTIN_VPHADDUBQ): Ditto.
1377         (IX86_BUILTIN_VPHADDUWD): Ditto.
1378         (IX86_BUILTIN_VPHADDUWQ): Ditto.
1379         (IX86_BUILTIN_VPHADDUDQ): Ditto.
1380         (IX86_BUILTIN_VPHSUBBW): Ditto.
1381         (IX86_BUILTIN_VPHSUBWD): Ditto.
1382         (IX86_BUILTIN_VPHSUBDQ): Ditto.
1383
1384         (IX86_BUILTIN_VPROTB): Ditto.
1385         (IX86_BUILTIN_VPROTW): Ditto.
1386         (IX86_BUILTIN_VPROTD): Ditto.
1387         (IX86_BUILTIN_VPROTQ): Ditto.
1388         (IX86_BUILTIN_VPROTB_IMM): Ditto.
1389         (IX86_BUILTIN_VPROTW_IMM): Ditto.
1390         (IX86_BUILTIN_VPROTD_IMM): Ditto.
1391         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
1392
1393         (IX86_BUILTIN_VPSHLB): Ditto.
1394         (IX86_BUILTIN_VPSHLW): Ditto.
1395         (IX86_BUILTIN_VPSHLD): Ditto.
1396         (IX86_BUILTIN_VPSHLQ): Ditto.
1397         (IX86_BUILTIN_VPSHAB): Ditto.
1398         (IX86_BUILTIN_VPSHAW): Ditto.
1399         (IX86_BUILTIN_VPSHAD): Ditto.
1400         (IX86_BUILTIN_VPSHAQ): Ditto.
1401
1402         (IX86_BUILTIN_VFRCZSS): Ditto.
1403         (IX86_BUILTIN_VFRCZSD): Ditto.
1404         (IX86_BUILTIN_VFRCZPS): Ditto.
1405         (IX86_BUILTIN_VFRCZPD): Ditto.
1406         (IX86_BUILTIN_VFRCZPS256): Ditto.
1407         (IX86_BUILTIN_VFRCZPD256): Ditto.
1408
1409         (IX86_BUILTIN_VPCOMEQUB): Ditto.
1410         (IX86_BUILTIN_VPCOMNEUB): Ditto.
1411         (IX86_BUILTIN_VPCOMLTUB): Ditto.
1412         (IX86_BUILTIN_VPCOMLEUB): Ditto.
1413         (IX86_BUILTIN_VPCOMGTUB): Ditto.
1414         (IX86_BUILTIN_VPCOMGEUB): Ditto.
1415         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
1416         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
1417
1418         (IX86_BUILTIN_VPCOMEQUW): Ditto.
1419         (IX86_BUILTIN_VPCOMNEUW): Ditto.
1420         (IX86_BUILTIN_VPCOMLTUW): Ditto.
1421         (IX86_BUILTIN_VPCOMLEUW): Ditto.
1422         (IX86_BUILTIN_VPCOMGTUW): Ditto.
1423         (IX86_BUILTIN_VPCOMGEUW): Ditto.
1424         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
1425         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
1426
1427         (IX86_BUILTIN_VPCOMEQUD): Ditto.
1428         (IX86_BUILTIN_VPCOMNEUD): Ditto.
1429         (IX86_BUILTIN_VPCOMLTUD): Ditto.
1430         (IX86_BUILTIN_VPCOMLEUD): Ditto.
1431         (IX86_BUILTIN_VPCOMGTUD): Ditto.
1432         (IX86_BUILTIN_VPCOMGEUD): Ditto.
1433         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
1434         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
1435
1436         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
1437         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
1438         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
1439         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
1440         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
1441         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
1442         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
1443         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
1444
1445         (IX86_BUILTIN_VPCOMEQB): Ditto.
1446         (IX86_BUILTIN_VPCOMNEB): Ditto.
1447         (IX86_BUILTIN_VPCOMLTB): Ditto.
1448         (IX86_BUILTIN_VPCOMLEB): Ditto.
1449         (IX86_BUILTIN_VPCOMGTB): Ditto.
1450         (IX86_BUILTIN_VPCOMGEB): Ditto.
1451         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
1452         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
1453
1454         (IX86_BUILTIN_VPCOMEQW): Ditto.
1455         (IX86_BUILTIN_VPCOMNEW): Ditto.
1456         (IX86_BUILTIN_VPCOMLTW): Ditto.
1457         (IX86_BUILTIN_VPCOMLEW): Ditto.
1458         (IX86_BUILTIN_VPCOMGTW): Ditto.
1459         (IX86_BUILTIN_VPCOMGEW): Ditto.
1460         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
1461         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
1462
1463         (IX86_BUILTIN_VPCOMEQD): Ditto.
1464         (IX86_BUILTIN_VPCOMNED): Ditto.
1465         (IX86_BUILTIN_VPCOMLTD): Ditto.
1466         (IX86_BUILTIN_VPCOMLED): Ditto.
1467         (IX86_BUILTIN_VPCOMGTD): Ditto.
1468         (IX86_BUILTIN_VPCOMGED): Ditto.
1469         (IX86_BUILTIN_VPCOMFALSED): Ditto.
1470         (IX86_BUILTIN_VPCOMTRUED): Ditto.
1471
1472         (IX86_BUILTIN_VPCOMEQQ): Ditto.
1473         (IX86_BUILTIN_VPCOMNEQ): Ditto.
1474         (IX86_BUILTIN_VPCOMLTQ): Ditto.
1475         (IX86_BUILTIN_VPCOMLEQ): Ditto.
1476         (IX86_BUILTIN_VPCOMGTQ): Ditto.
1477         (IX86_BUILTIN_VPCOMGEQ): Ditto.
1478         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
1479         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
1480
1481         (enum multi_arg_type): New enum for describing the various XOP
1482         intrinsic argument types.
1483         (bdesc_multi_arg): New table for XOP intrinsics.
1484         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
1485         (ix86_expand_multi_arg_builtin): New function for creating XOP
1486         intrinsics.
1487
1488         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
1489         (xop_pmacsww): Ditto.
1490         (xop_pmacssww): Ditto.
1491         (xop_pmacsdd): Ditto.
1492         (xop_pmacssdd): Ditto.
1493         (xop_pmacssdql): Ditto.
1494         (xop_pmacssdqh): Ditto.
1495         (xop_pmacsdql): Ditto.
1496         (xop_pmacsdql_mem): Ditto.
1497         (xop_mulv2div2di3_low): Ditto.
1498         (xop_pmacsdqh): Ditto.
1499         (xop_pmacsdqh_mem): Ditto.
1500         (xop_mulv2div2di3_high): Ditto.
1501         (xop_pmacsswd): Ditto.
1502         (xop_pmacswd): Ditto.
1503         (xop_pmadcsswd): Ditto.
1504         (xop_pmadcswd): Ditto.
1505         (xop_pcmov_<mode>): Ditto.
1506         (xop_pcmov_<mode>256): Ditto.
1507         (xop_phaddbw): Ditto.
1508         (xop_phaddbd): Ditto.
1509         (xop_phaddbq): Ditto.
1510         (xop_phaddwd): Ditto.
1511         (xop_phaddwq): Ditto.
1512         (xop_phadddq): Ditto.
1513         (xop_phaddubw): Ditto.
1514         (xop_phaddubd): Ditto.
1515         (xop_phaddubq): Ditto.
1516         (xop_phadduwd): Ditto.
1517         (xop_phadduwq): Ditto.
1518         (xop_phaddudq): Ditto.
1519         (xop_phsubbw): Ditto.
1520         (xop_phsubwd): Ditto.
1521         (xop_phsubdq): Ditto.
1522         (xop_pperm): Ditto.
1523         (rotl<mode>3): Ditto.
1524         (rotr<mode>3): Ditto.
1525         (xop_rotl<mode>3): Ditto.
1526         (xop_rotr<mode>3): Ditto.
1527         (vrotr<mode>3): Ditto.
1528         (vrotl<mode>3): Ditto.
1529         (xop_vrotl<mode>3): Ditto.
1530         (vlshr<mode>3): Ditto.
1531         (vashr<mode>3): Ditto.
1532         (vashl<mode>3
1533         (xop_ashl<mode>3): Ditto.
1534         (xop_lshl<mode>3): Ditto.
1535         (ashlv16qi3): Ditto.
1536         (lshlv16qi3): Ditto.
1537         (ashrv16qi3): Ditto.
1538         (ashrv2di3): Ditto.
1539         (xop_frcz<mode>2): Ditto.
1540         (xop_vmfrcz<mode>2): Ditto.
1541         (xop_frcz<mode>2256): Ditto.
1542         (xop_maskcmp<mode>3): Ditto.
1543         (xop_maskcmp_uns<mode>3): Ditto.
1544         (xop_maskcmp_uns2<mode>3): Ditto.
1545         (xop_pcom_tf<mode>3): Ditto.
1546
1547         * doc/invoke.texi (-mxop): Add documentation.
1548         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
1549
1550 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
1551
1552         PR driver/11810
1553         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
1554         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
1555         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
1556
1557 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
1558
1559         PR target/40835
1560         * arm.md (peephole2 patterns for move and compare): New.
1561
1562 2009-11-04  Nick Clifton  <nickc@redhat.com>
1563
1564         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
1565         Make sure that it does not allow CONST_DOUBLEs.
1566         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
1567         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
1568         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
1569         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
1570         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
1571         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
1572         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
1573         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
1574         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
1575         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
1576         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
1577         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
1578         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
1579         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
1580         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
1581
1582 2009-11-04  Richard Guenther  <rguenther@suse.de>
1583
1584         PR tree-optimization/41919
1585         * tree-vrp.c (test_for_singularity): Properly compare values.
1586
1587 2009-11-04  Revital Eres  <eres@il.ibm.com>
1588
1589         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1590         Consider peeling for alignment only for stores and remove
1591         redundant assignment.
1592
1593 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
1594
1595         PR target/41302
1596         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
1597         (m68k_ok_for_sibcall_p): Handle different result return locations.
1598
1599 2009-11-04  Richard Guenther  <rguenther@suse.de>
1600
1601         * c-opts.c (c_common_post_options): Move LTO option processing
1602         code ...
1603         * opts.c (decode_options): ... here.
1604
1605 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
1606
1607         * c-common.c (fold_offsetof_1): Use %wd instead of
1608         HOST_WIDE_INT_PRINT_DEC.
1609
1610 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1611
1612         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
1613         __pic__ or __PIC__.
1614
1615 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
1616
1617         * config.gcc (vax-*-linux*): Keep the original contents of
1618         tmake_file while adding vax/t-linux.
1619
1620 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
1621
1622         PR target/10127
1623         PR ada/20548
1624         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
1625         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
1626         (STACK_CHECK_MOVING_SP): Likewise.
1627         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
1628         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
1629         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
1630         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
1631         Document PROBE_STACK.
1632         * explow.c (anti_adjust_stack_and_probe): New function.
1633         (allocate_dynamic_stack_space): Do not directly allocate space if
1634         STACK_CHECK_MOVING_SP, instead invoke above function.
1635         (emit_stack_probe): Handle probe_stack insn.
1636         (PROBE_INTERVAL): New macro.
1637         (STACK_GROW_OPTAB): Likewise.
1638         (STACK_GROW_OFF): Likewise.
1639         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
1640         loop condition in the small constant case.  Rewrite in the general
1641         case to be immune to wraparounds.  Make sure the address of probes
1642         is valid.  Try to use [base + disp] addressing mode if possible.
1643         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
1644         checking is enabled and STACK_CHECK_MOVING_SP.
1645         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
1646         return 1 for volatile references to the stack pointer.
1647         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
1648         __builtin_alloca if stack checking is enabled.
1649         * unwind-dw2.c (uw_identify_context): Take into account whether the
1650         context is that of a signal frame or not.
1651         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
1652         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
1653
1654 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
1655
1656         PR rtl-optimization/41917
1657         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
1658         operand isn't known to be 0, return 1.
1659
1660 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1661
1662         * config/mips/mips.md: Fix typos.
1663
1664 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
1665
1666         * doc/invoke.texi: Fix typo.
1667
1668 2009-11-03  Paul Brook  <paul@codesourcery.com>
1669
1670         * config/arm/neon.ml (vectype): Add T_floatSF.
1671         (string_of_vectype): Ditto.
1672         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
1673         (deftypes): Use float for float32_t.
1674         * config/arm/arm_neon.h: Regenerate.
1675
1676 2009-11-03  Nick Clifton  <nickc@redhat.com>
1677             Kevin Buettner  <kevinb@redhat.com>
1678
1679         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
1680         order of expected registers.
1681         (rx_load_multiple_vector): Likewise.
1682         (rx_rtsd_vector): Likewise.
1683         * config/rx/rx.c (rx_cpu_type): New variable.
1684         (rx_print_operand): Fix bug printing 64-bit constant values.
1685         (rx_emit_stack_pushm): Reverse order of pushed registers.
1686         (gen_rx_store_vector): Likewise.
1687         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
1688         attribute name.
1689         (is_exception_func): Rename to is_interrupt_func and only accept
1690         "interrupt" as the attribute name.
1691         (rx_get_stack_layout): Use new function name.
1692         (rx_func_attr_inlinable): Likewise.
1693         (rx_attribute_table): Remove "exception".
1694         (rx_expand_prologue): If necessary push the accumulator register
1695         in the prologue of interrupt functions.
1696         (rx_expand_epilogue): If necessary pop the accumulator.
1697         (rx_builtins): Add RX_BUILTIN_MVTIPL.
1698         (rx_expand_builtin_stz): Remove.
1699         (rx_expand_builtin_mvtipl): New function.
1700         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
1701         (rx_expand_builtin): Likewise.
1702         (rx_enable_fpu): New variable.
1703         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
1704         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
1705         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
1706         (enum rx_cpu_types): Define.
1707         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
1708         (INCOMING_FRAME_SP_OFFSET): Define.
1709         (ARG_POINTER_CFA_OFFSET): Define.
1710         (FRAME_POINTER_CFA_OFFSET): Define.
1711         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
1712         (ALLOW_RX_FPU_INSNS): Define.
1713         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
1714         fast_math_flags_set_p.
1715         (UNSPEC_BUILTIN_MVTIPL): Define.
1716         (revl): Rename to bswapsi2.
1717         (bswaphi2): New pattern.
1718         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
1719         (mvtaclo): Likewise.
1720         (racw): Likewise.
1721         (mvtc): Remove clobber of cc0.
1722         (mvtcp): Delete.
1723         (opecp): Delete.
1724         * config/rx/rx.opt (mieee): Remove.
1725         (fpu): Add.
1726         (nofpu): Add.
1727         (mcpu=): Add.
1728         (patch=): Add.
1729         (msave-acc-in-interrupts): Add.
1730         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
1731         (MULTILIB_DIRS): Likewise.
1732         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
1733         * doc/extend.texi: Remove description of "exception" function
1734         attribute.
1735         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1736         -msave-acc-in-interrupts options.
1737
1738 2009-11-03  Richard Guenther  <rguenther@suse.de>
1739
1740         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1741
1742 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1743
1744         PR c++/38699
1745         * c-common.c (fold_offsetof_1): Issue errors when the member
1746         designator of the offsetof expression is not legitimate.
1747
1748 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1749
1750         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1751         names instead of numerical constants.
1752         (sse_prologue_save): Ditto.
1753         (*sse_prologue_save_insn): Ditto.
1754
1755 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1756
1757         PR target/41900
1758         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1759         (TARGET_CALL_ESP): New define.
1760         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1761         X86_ARCH_CALL_ESP.
1762         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1763         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1764         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1765         TARGET_CALL_ESP.
1766         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1767         New patterns, use "lsm" as operand 1 constraint.
1768         * config/i386/predicates.md (call_insn_operand): Depend on
1769         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1770
1771 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1772
1773         PR tree-optimization/41857
1774         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1775         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1776         to create_mem_ref.
1777         * tree-ssa-address.c (move_hint_to_base): New function.
1778         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1779         address space associated with TYPE.
1780         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1781         most_expensive_mult_to_index.  Call move_hint_to_base.
1782         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1783         TYPE to addr_to_parts.
1784
1785 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1786
1787         PR tree-optimization/41750
1788         * tree-sra.c (analyze_modified_params): Loop over all
1789         representatives of components of a parameter.
1790
1791 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1792
1793         PR tree-optimization/41841
1794         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1795         local variables of not yet materialized clones.
1796
1797         PR debug/41893
1798         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1799         for a VOIDmode variable.
1800
1801         PR c++/41774
1802         * c-pragma.c (visstack): Change into vector of ints rather than
1803         enum symbol_visibility.
1804         (push_visibility): Add kind argument, push default_visibility together
1805         with kind.
1806         (pop_visibility): Add kind argument, return true if successful, fail
1807         if visibility stack is empty or if stack top is of different kind.
1808         (handle_pragma_visibility): Don't check length of visstack, instead
1809         call pop_visibility and issue diagnostics if it failed.  Pass 0
1810         as last argument to push_visibility and pop_visibility.
1811         * c-pragma.h (push_visibility): Add kind argument.
1812         (pop_visibility): Likewise.  Return bool instead of void.
1813
1814 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1815
1816         * tree.def (TARGET_MEM_REF): Update comment.
1817         * alias.c (get_alias_set): Retrieve the original memory reference for
1818         a TARGET_MEM_REF before proceeding.
1819
1820 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1821
1822         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1823         frv_function_value_regno_p): New functions.
1824         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1825         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1826         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1827         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1828
1829 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1830
1831         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1832         new 'outgoing' argument.
1833         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1834         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1835         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1836         LIBCALL_VALUE): Remove.
1837         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1838         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1839         (mh10300_function_value_regno_p): Declare.
1840
1841 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1842
1843         * config/arm/cortex-a9.md: New - integer pipeline description.
1844
1845 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1846
1847         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1848         aborting if the sizes of the two references don't match.
1849
1850 2009-10-31  Toon Moene  <toon@moene.org>
1851
1852         * ipa-inline.c (cgraph_decide_inlining):
1853         Include reason for not inlining called-once functions in dump file.
1854
1855 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1856
1857         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1858         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1859         (LINK_SPEC): BE_LINK_SPEC added.
1860
1861 2009-10-30  Richard Guenther  <rguenther@suse.de>
1862
1863         PR lto/41858
1864         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1865
1866 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1867
1868         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1869         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1870         label.
1871
1872 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1873
1874         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1875
1876 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1877
1878         PR target/40838
1879         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1880         first.  Move assert on stack_alignment_estimated just before
1881         setting stack_realign_needed.
1882         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1883         Don't call update_stack_boundary.
1884
1885         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1886         (verride_options): Don't check ix86_force_align_arg_pointer here.
1887         (ix86_function_ok_for_sibcall): Use it.
1888         (ix86_update_stack_boundary): Likewise.
1889
1890         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1891
1892 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1893
1894         * arm.md (QHSI): New mode iterator.
1895         (movqi): If generating for thumb, then truncate any immediate to
1896         8 bits.
1897         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1898         with...
1899         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1900         version.
1901
1902 2009-10-29  Cary Coutant  <ccoutant@google.com>
1903
1904         PR debug/41700
1905         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1906         locations in the source).
1907         (store_vcall_insn): New function.
1908         (lookup_vcall_insn): New function.
1909         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1910         (dwarf2out_copy_call_info): New function.
1911         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1912         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1913         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1914         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1915         (debug_nothing_rtx_rtx): New dummy hook.
1916         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1917         (xcoff_debug_hooks): Likewise.
1918         * sdbout.c (sdb_debug_hooks): Likewise.
1919         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1920
1921 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1922
1923         * doc/invoke.texi (mmcount-ra-address): Document new command line
1924         option.
1925         * config/mips/mips.opt (mmcount-ra-address): New option.
1926         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1927         function.
1928         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1929         member.
1930         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1931         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1932         rewritten.
1933         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1934         mips_function_profiler.
1935
1936 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1937
1938         PR middle-end/37565
1939         PR target/38018
1940         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1941         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1942         * optc-gen.awk (cl_target_option_restore): Include call to
1943         targetm.override_options_after_change.
1944         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1945         * target.h (override_options_after_change): New.
1946         * c-common.c (parse_optimize_options): Call
1947         targetm.override_options_after_change.
1948         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1949         (ia64_override_options_after_change): New.
1950         (ia64_override_options) Add call to above.
1951
1952 2009-10-29  Michael Matz  <matz@suse.de>
1953
1954         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1955         (gate_convert_to_rsqrt): Ditto.
1956         (pass_convert_to_rsqrt): Ditto.
1957         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1958         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1959         to pass list.
1960
1961         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1962
1963 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1964
1965         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1966         unsigned.
1967
1968 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1969
1970         PR tree-optimization/41775
1971         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1972         (generate_subtree_copies): Do not unshare agg.
1973         (load_assign_lhs_subreplacements): Do not unshare rhs.
1974         (sra_modify_assign): Do not unshare exprs.
1975         (propagate_subacesses_accross_link): Renamed to
1976         propagate_subaccesses_across_link.
1977
1978 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1979
1980         * arm.c (count_insns_for_constant): Rework to support counting for
1981         thumb2 immediates as well.
1982         (find_best_start): Split out from arm_gen_constant.
1983         (arm_gen_constant): Rework to support XOR with immediate.
1984
1985 2009-10-29  Chao-ying Fu  <fu@mips.com>
1986
1987         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1988         functions.
1989         (mips_expand_synci_loop):  Use the length rtx to control the
1990         synci loop from the begin rtx that points to the first byte of
1991         the cache line.
1992
1993 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1994
1995         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1996
1997 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1998
1999         * dbxout.c (dbxout_common_check): Accept non public trees.
2000         * dwarf2out.c (fortran_common): Accept non public trees.
2001
2002 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
2003
2004         * common.opt (fuse-linker-plugin): New option.
2005         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
2006         fuse-linker-plugin.
2007         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
2008
2009 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2010
2011         PR rtl-optimization/39715
2012         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
2013         (gen_cstoresi_ltu_thumb1): New splitter.
2014
2015 2009-10-28  Richard Guenther  <rguenther@suse.de>
2016
2017         PR lto/41808
2018         PR lto/41839
2019         * tree-ssa.c (useless_type_conversion_p): Do not treat
2020         conversions to pointers to incomplete types as useless.
2021         * gimple.c (gimple_types_compatible_p): Compare struct tags,
2022         not typedef names.
2023
2024 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
2025
2026         * var-tracking.c (emit_note_insn_var_location): Don't call the second
2027         vt_expand_loc unnecessarily when location is not a register nor
2028         memory.
2029
2030         PR middle-end/41837
2031         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
2032         fields don't have DECL_NAME.
2033
2034         PR debug/41801
2035         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
2036         call convert_memory_address on addr.
2037
2038         PR target/41762
2039         * config/i386/i386.c (ix86_pic_register_p): Don't call
2040         rtx_equal_for_cselib_p for VALUEs discarded as useless.
2041
2042 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
2043
2044         * var-tracking.c (emit_note_insn_var_location): Get the mode of
2045         a variable part from its REG, MEM or VALUE.
2046
2047 2009-10-28  Richard Guenther  <rguenther@suse.de>
2048
2049         * gimple.c (gimple_get_alias_set): Fix comment typo.
2050
2051 2009-10-28  Richard Guenther  <rguenther@suse.de>
2052
2053         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
2054         (free_lang_data): Unconditionally compute alias sets for all
2055         standard integer types.  Bail out if gate bailed out previously.
2056         Do not reset the types_compatible_p langhook.
2057         (gate_free_lang_data): Remove.
2058         (struct pass_ipa_free_lang_data): Enable unconditionally.
2059         * gimple.c (gimple_get_alias_set): Use the same alias-set for
2060         all pointer types.
2061
2062 2009-10-28  Richard Guenther  <rguenther@suse.de>
2063
2064         PR middle-end/41855
2065         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
2066         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
2067         (call_may_clobber_ref_p_1): Likewise.
2068         * tree-ssa-structalias.c (find_func_aliases): Likewise.
2069         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
2070
2071 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2072
2073         PR rtl-optimization/41812
2074
2075         Revert:
2076         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
2077
2078         * df-problems.c (df_md_scratch): New.
2079         (df_md_alloc, df_md_free): Allocate/free it.
2080         (df_md_local_compute): Only include live registers in init.
2081         (df_md_transfer_function): Prune the in-set computed by
2082         the confluence function, and the gen-set too.
2083
2084 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2085
2086         PR rtl-optimization/39715
2087         * combine.c (simplify_comparison): Use extensions to
2088         widen comparisons.  Try an ANDing first.
2089
2090 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2091
2092         PR rtl-optimization/40741
2093         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
2094         a small constant is cheap.
2095         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
2096         force_reg on the LHS.
2097         (xorsi3): Likewise, and split the XOR if the constant is complex
2098         and not in Thumb mode.
2099
2100 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2101
2102         * expmed.c (emit_store_flag): Check costs before
2103         transforming to the opposite representation.
2104
2105 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
2106
2107         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
2108         cstore result to DImode.
2109
2110 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2111
2112         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
2113         inside the unspec vector.
2114
2115 2009-10-27  Richard Henderson  <rth@redhat.com>
2116
2117         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
2118
2119 2009-10-27  Richard Henderson  <rth@redhat.com>
2120
2121         PR c++/41819
2122         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
2123         eh_region_may_contain_throw; update users.
2124         (eh_region_may_contain_throw): New function.
2125         (lower_catch): Check flag_exceptions before creating exception region.
2126         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
2127         (lower_cleanup): Tidy existing flag_exceptions check to match.
2128
2129 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
2130
2131         PR/41799
2132         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
2133         * config/i386/mingw.opt: Add fset-stack-executable.
2134         * config/i386/i386.c (ix86_trampoline_init): Make call to
2135         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
2136         defined and its value is not zero.
2137         * doc/invoke.texi
2138
2139 2009-10-27  Richard Guenther  <rguenther@suse.de>
2140
2141         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
2142         handle calls to externally visible functions like in regular mode.
2143         (create_variable_info_for): Do not create function infos here.
2144         (have_alias_info): Remove write-only variable.
2145         (solve_constraints): New function split out from common code
2146         in compute_points_to_sets and ipa_pta_execute.
2147         (compute_points_to_sets): Adjust.
2148         (ipa_pta_execute): Likewise.  Handle clones and externally visible
2149         functions like in non-IPA mode.
2150
2151 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
2152
2153         PR c/41842
2154         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
2155         error_mark_node.
2156
2157 2009-10-27  Richard Guenther  <rguenther@suse.de>
2158
2159         * tree-complex.c (expand_complex_div_wide): Check for
2160         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
2161
2162 2009-10-27  Revital Eres  <eres@il.ibm.com>
2163
2164         PR tree-optimization/40648
2165         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2166         Change decision of when to peel for alignment.
2167
2168 2009-10-27  Richard Guenther  <rguenther@suse.de>
2169
2170         PR lto/41821
2171         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
2172
2173 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
2174
2175         PR bootstrap/41451
2176         * fold-const.c (fold_binary_loc): Do not call
2177         protected_set_expr_location.
2178
2179 2009-10-27  Wei Guozhi  <carrot@google.com>
2180
2181         PR target/41705
2182         * target.h (have_conditional_execution): Add a new target hook
2183         function.
2184         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
2185         * targhooks.h (default_have_conditional_execution): Likewise.
2186         * targhooks.c (default_have_conditional_execution): Likewise.
2187         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
2188         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
2189         (arm_have_conditional_execution): New function.
2190         * ifcvt.c (noce_process_if_block, find_if_header,
2191         cond_exec_find_if_block, dead_or_predicable): Change the usage of
2192         macro HAVE_conditional_execution to a target hook call.
2193         * recog.c (peephole2_optimize): Likewise.
2194         * sched-rgn.c (add_branch_dependences): Likewise.
2195         * final.c (asm_insn_count, final_scan_insn): Likewise.
2196         * bb-reorder.c (HAVE_conditional_execution): Remove it.
2197
2198 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2199             Michael Meissner  <meissner@linux.vnet.ibm.com>
2200             Ulrich Weigand  <uweigand@de.ibm.com>
2201
2202         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
2203         * config/spu/spu_cache.h: New file.
2204
2205         * config/spu/cachemgr.c: New file.
2206         * config/spu/cache.S: New file.
2207
2208         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
2209         (ADDR_SPACE_EA): Define.
2210         (TARGET_ADDR_SPACE_KEYWORDS): Define.
2211         * config/spu/spu.c (EAmode): New macro.
2212         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2213         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2214         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
2215         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2216         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2217         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2218         (TARGET_ASM_SELECT_SECTION): Likewise.
2219         (TARGET_ASM_UNIQUE_SECTION): Likewise.
2220         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
2221         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
2222         (ea_symbol_ref): New function.
2223         (spu_legitimate_constant_p): Handle __ea qualified addresses.
2224         (spu_addr_space_legitimate_address_p): New function.
2225         (spu_addr_space_legitimize_address): Likewise.
2226         (cache_fetch): New global.
2227         (cache_fetch_dirty): Likewise.
2228         (ea_alias_set): Likewise.
2229         (ea_load_store): New function.
2230         (ea_load_store_inline): Likewise.
2231         (expand_ea_mem): Likewise.
2232         (spu_expand_mov): Handle __ea qualified memory references.
2233         (spu_addr_space_pointer_mode): New function.
2234         (spu_addr_space_address_mode): Likewise.
2235         (spu_addr_space_subset_p): Likewise.
2236         (spu_addr_space_convert): Likewise.
2237         (spu_section_type_flags): Handle "._ea" section.
2238         (spu_select_section): New function.
2239         (spu_unique_section): Likewise.
2240         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
2241         and __EA64__ predefined macros.
2242         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
2243         -matomic-updates switches.
2244
2245         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
2246         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
2247         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
2248         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
2249         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
2250         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
2251         $(T)cache128k.o): Likewise.
2252         ($(T)libgcc_%.a): Likewise.
2253
2254         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
2255         * config/spu/spu.opt (-mea32/-mea64): Add switches.
2256         (-maddress-space-conversion): Likewise.
2257         (-mcache-size=): Likewise.
2258         (-matomic-updates): Likewise.
2259         * doc/invoke.texi (-mea32/-mea64): Document.
2260         (-maddress-space-conversion): Likewise.
2261         (-mcache-size=): Likewise.
2262         (-matomic-updates): Likewise.
2263
2264 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2265             Michael Meissner  <meissner@linux.vnet.ibm.com>
2266             Ulrich Weigand  <uweigand@de.ibm.com>
2267
2268         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
2269
2270         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
2271         defined, add the named address space keywords.
2272         (c_addr_space_name): New function.
2273         (complete_array_type): Preserve named address space.
2274         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
2275         instead of targetm.valid_pointer_mode.
2276
2277         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
2278         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
2279         (ADDR_SPACE_KEYWORD): New macro.
2280         (c_addr_space_name): Add prototype.
2281
2282         * c-tree.h (struct c_declspecs): Add address_space member.
2283         (declspecs_add_addrspace): Add prototype.
2284
2285         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
2286
2287         * c-parser.c (c_parse_init): Add assertion.
2288         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
2289         (c_lex_one_token): Handle address space keywords.
2290         (c_token_starts_typename): Likewise.
2291         (c_token_starts_declspecs): Likewise.
2292         (c_parser_declspecs): Likewise.
2293         (c_parser_postfix_expression_after_paren_type): Diagnose compound
2294         literal within function qualified with named address space.
2295
2296         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
2297         address space qualifiers.
2298         (shadow_tag_warned): Warn about useless address space qualifiers.
2299         (quals_from_declspecs): Handle address space qualifiers.
2300         (grokdeclarator): Likewise.
2301         (build_null_declspecs): Likewise.
2302         (declspecs_add_addrspace): New function.
2303
2304         * c-typeck.c (addr_space_superset): New function.
2305         (qualify_type): Handle named address spaces.
2306         (composite_type): Likewise.
2307         (common_pointer_type): Likewise.
2308         (comp_target_types): Likewise.
2309         (build_conditional_expr): Likewise.
2310         (handle_warn_cast_qual): Likewise.
2311         (build_c_cast): Likewise.
2312         (convert_for_assignment): Likewise.
2313         (build_binary_op): Likewise.
2314         (pointer_diff): Handle named address spaces.  Use intermediate
2315         integer type of sufficient size if required.
2316
2317 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2318             Michael Meissner  <meissner@linux.vnet.ibm.com>
2319             Ulrich Weigand  <uweigand@de.ibm.com>
2320
2321         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
2322         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2323         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2324
2325         * target.h (struct target_def): Add pointer_mode, address_mode,
2326         and valid_pointer_mode to addr_space substructure.
2327         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
2328         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
2329         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
2330         (TARGET_ADDR_SPACE_HOOKS): Add them.
2331         * targhooks.c (target_default_pointer_address_modes_p): New function.
2332         * target.h (target_default_pointer_address_modes_p): Add prototype.
2333         * targhooks.c (default_addr_space_pointer_mode): New function.
2334         (default_addr_space_address_mode): Likewise.
2335         (default_addr_space_valid_pointer_mode): Likewise.
2336         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
2337         (default_addr_space_address_mode): Likewise.
2338         (default_addr_space_valid_pointer_mode): Likewise.
2339         * output.h (default_valid_pointer_mode): Move to ...
2340         * targhooks.h (default_valid_pointer_mode): ... here.
2341         * varasm.c (default_valid_pointer_mode): Move to ...
2342         * targhooks.c (default_valid_pointer_mode): ... here.
2343
2344         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
2345         instead of targetm.valid_pointer_mode.
2346
2347         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
2348         * tree.c (integer_pow2p): Likewise.
2349         (tree_log2): Likewise.
2350         (tree_floor_log2): Likewise.
2351         (signed_or_unsigned_type_for): Support pointer type of different size.
2352         (int_or_pointer_precision): New function.
2353         * tree.h (int_or_pointer_precision): Add prototype.
2354         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
2355         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
2356         incoming pointer type instead of POINTER_SIZE.
2357
2358         * tree.c (build_pointer_type): Use appropriate pointer mode
2359         instead of ptr_mode.
2360         (build_reference_type): Likewise.
2361         * expr.c (store_expr): Likewise.
2362         (expand_expr_addr_expr): Likewise.
2363         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
2364         * cfgexpand.c (expand_debug_expr): Likewise.
2365
2366         * auto-inc-dec.c: Include "target.h".
2367         (try_merge): Use appropriate address mode instead of Pmode.
2368         (find_inc): Likewise.
2369         * combine.c (find_split_point): Likewise.
2370         * cselib.c (cselib_record_sets): Likewise.
2371         * dse.c (replace_inc_dec): Likewise.
2372         (canon_address): Likewise.
2373         * var-tracking.c (replace_expr_with_values): Likewise.
2374         (count_uses): Likewise.
2375         (add_uses): Likewise.
2376         (add_stores): Likewise.
2377         * emit-rtl.c: Include "target.h".
2378         (adjust_address_1): Use appropriate address mode instead of Pmode.
2379         (offset_address): Likewise.
2380         * explow.c (break_out_memory_refs): Likewise.
2381         (memory_address_addr_space): Likewise.
2382         (promote_mode): Likewise.
2383         * expr.c (move_by_pieces): Likewise.
2384         (emit_block_move_via_loop): Likewise.
2385         (store_by_pieces): Likewise.
2386         (store_by_pieces_1): Likewise.
2387         (expand_assignment): Likewise.
2388         (store_constructor): Likewise.
2389         (expand_expr_addr_expr): Likewise.
2390         (expand_expr_real_1): Likewise.
2391         * cfgexpand.c (expand_debug_expr): Likewise.
2392         * ifcvt.c (noce_try_cmove_arith): Likewise.
2393         * regcprop.c (kill_autoinc_value): Likewise.
2394         * regmove.c (try_auto_increment): Likewise.
2395         * reload.c (find_reloads): Likewise.
2396         (find_reloads_address): Likewise.
2397         (find_reloads_address_1): Likewise.
2398         * sched-deps.c: Include "target.h".
2399         (sched_analyze_1): Use appropriate address mode instead of Pmode.
2400         (sched_analyze_2): Likewise.
2401         * sel-sched-dump.c: Include "target.h".
2402         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
2403         * stor-layout.c (layout_type): Likewise.
2404         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2405         (multiplier_allowed_in_address_p): Likewise.
2406         (get_address_cost): Likewise.
2407         * varasm.c (make_decl_rtl): Likewise.
2408
2409         * expr.c (expand_assignment): Always convert offsets to appropriate
2410         address mode.
2411         (store_expr): Likewise.
2412         (store_constructor): Likewise.
2413         (expand_expr_real_1): Likewise.
2414
2415         * reload.h (form_sum): Add MODE argument.
2416         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
2417         Update recursive calls.
2418         (subst_indexed_address): Update calls to form_sum.
2419
2420         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
2421         * tree-ssa-address.c: Include "target.h".
2422         (templates): Replace by ...
2423         (mem_addr_template_list): ... this new vector.
2424         (TEMPL_IDX): Handle address space numbers.
2425         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
2426         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
2427         instead of global cache.  Update call to gen_addr_rtx.
2428         (valid_mem_ref_p): Update call to addr_for_mem_ref.
2429         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
2430
2431         * rtl.h (convert_memory_address_addr_space): Add prototype.
2432         (convert_memory_address): Define as macro.
2433         * explow.c (convert_memory_address): Rename to ...
2434         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2435         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
2436         Update recursive calls.
2437         (memory_address_addr_space): Call convert_memory_address_addr_space.
2438         * expmed.c (make_tree): Likewise.
2439         * expr.c (expand_assignment): Likewise.
2440         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
2441         (expand_expr_addr_expr): Likewise.  Also, update call.
2442
2443         * alias.c (find_base_value): Guard pointer size optimizations.
2444         (find_base_term): Likewise.
2445         * rtlanal.c (nonzero_bits1): Likewise.
2446         (num_sign_bit_copies1): Likewise.
2447         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
2448
2449         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
2450         (emit-rtl.o): Likewise.
2451         (auto-inc-dec.o): Likewise.
2452         (sched-deps.o): Likewise.
2453
2454 2009-10-26  Ben Elliston  <bje@au.ibm.com>
2455             Michael Meissner  <meissner@linux.vnet.ibm.com>
2456             Ulrich Weigand  <uweigand@de.ibm.com>
2457
2458         * doc/extend.texi (Named Address Spaces): New section.
2459         * coretypes.h (addr_space_t): New type.
2460         (ADDR_SPACE_GENERIC): New define.
2461         (ADDR_SPACE_GENERIC_P): New macro.
2462
2463         * doc/tm.texi (Named Address Spaces): New section.
2464         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
2465         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
2466         (TARGET_ADDR_SPACE_SUBSET_P): Document.
2467         (TARGET_ADDR_SPACE_CONVERT): Document.
2468         * target.h (struct gcc_target): Add addr_space substructure.
2469         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
2470         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
2471         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
2472         (TARGET_ADDR_SPACE_CONVERT): Likewise.
2473         (TARGET_ADDR_SPACE_HOOKS): Likewise.
2474         (TARGET_INITIALIZER): Initialize addr_space hooks.
2475         * targhooks.c (default_addr_space_legitimate_address_p): New function.
2476         (default_addr_space_legitimize_address): Likewise.
2477         (default_addr_space_subset_p): Likewise.
2478         (default_addr_space_convert): Likewise.
2479         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
2480         (default_addr_space_legitimize_address): Likewise.
2481         (default_addr_space_subset_p): Likewise.
2482         (default_addr_space_convert): Likewise.
2483
2484         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
2485         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
2486         (MEM_ADDR_SPACE): New macro.
2487         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
2488         address space memory attribute.
2489         (mem_attrs_htab_hash): Handle address space memory attribute.
2490         (mem_attrs_htab_eq): Likewise.
2491         (set_mem_attributes_minus_bitpos): Likewise.
2492         (set_mem_alias_set): Likewise.
2493         (set_mem_align): Likewise.
2494         (set_mem_expr): Likewise.
2495         (set_mem_offset): Likewise.
2496         (set_mem_size): Likewise.
2497         (adjust_address_1): Likewise.
2498         (offset_address): Likewise.
2499         (widen_memoy_address): Likewise.
2500         (get_spill_slot_decl): Likewise.
2501         (set_mem_attrs_for_spill): Likewise.
2502         (set_mem_addr_space): New function.
2503         * emit-rtl.h (set_mem_addr_space): Add prototype.
2504         * print-rtl.c (print_rtx): Print address space memory attribute.
2505         * expr.c (expand_assignment): Set address space memory attribute
2506         of generated MEM RTXes as appropriate.
2507         (expand_expr_real_1): Likewise.
2508         * cfgexpand.c (expand_debug_expr): Likewise.
2509         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
2510
2511         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
2512         size of "spare" bitfield.
2513         (TYPE_ADDR_SPACE): New macro.
2514         (ENCODE_QUAL_ADDR_SPACE): Likewise.
2515         (DECODE_QUAL_ADDR_SPACE): Likewise.
2516         (CLEAR_QUAL_ADDR_SPACE): Likewise.
2517         (KEEP_QUAL_ADDR_SPACE): Likewise.
2518         (TYPE_QUALS): Encode type address space.
2519         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
2520         * tree.c (set_type_quals): Set type address space.
2521         (build_array_type): Inherit array address space from element type.
2522         * print-tree.c (print_node_brief): Print type address space.
2523         (print_node): Likewise.
2524         * tree-pretty-print.c (dump_generic_node): Likewise.
2525
2526         * explow.c (memory_address): Rename to ...
2527         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
2528         Use address-space aware variants of memory address routines.
2529         * recog.c (memory_address_p): Rename to ...
2530         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2531         Use address-space aware variants of memory address routines.
2532         (offsettable_address_p): Rename to ...
2533         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
2534         Use address-space aware variants of memory address routines.
2535         * reload.c (strict_memory_address_p): Rename to ...
2536         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2537         Use address-space aware variants of memory address routines.
2538         (maybe_memory_address_p): Rename to ...
2539         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
2540         Use address-space aware variants of memory address routines.
2541         * expr.h (memory_address_addr_space): Add prototype.
2542         (memory_address): Define as macro.
2543         * recog.h (memory_address_addr_space_p): Add prototype.
2544         (memory_address_p): Define as macro.
2545         (offsettable_address_addr_space_p): Add prototype.
2546         (offsettable_address_p): Define as macro.
2547         (strict_memory_address_addr_space_p): Add prototype.
2548         (strict_memory_address_p): Define as macro.
2549
2550         * combine.c (find_split_point): Use address-space aware variants
2551         of memory address routines.
2552         * emit-rtl.c (operand_subword): Likewise.
2553         (change_address_1): Likewise.
2554         (adjust_address_1): Likewise.
2555         (offset_address): Likewise.
2556         * expr.c (emit_move_insn): Likewise.
2557         (expand_assignment): Likewise.
2558         (expand_expr_real_1): Likewise.
2559         * recog.c (verify_changes): Likewise.
2560         (general_operand): Likewise.
2561         (offsettable_memref_p): Likewise.
2562         (offsettable_nonstrict_memref_p): Likewise.
2563         (constrain_operands): Likewise.
2564         * reload.c (get_secondary_mem): Likewise.
2565         (find_reloads_toplev): Likewise.
2566         (find_reloads_address): Likewise.
2567         (find_reloads_subreg_address): Likewise.
2568         * reload1.c (reload): Likewise.
2569         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
2570         * rtl.h (address_cost): Add ADDRSPACE argument.
2571         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
2572         aware variant of memory address routines.
2573         * loop-invariant.c (create_new_invariant): Update address_cost call.
2574         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
2575         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
2576         Use address-space aware variant of memory address routines.
2577         (propagate_rtx_1): Update call to should_replace_address.
2578         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
2579         argument.
2580         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
2581         ADDRSPACE argument.  Use per-address-space instead of global cache.
2582         Use address-space aware variant of memory address routines.
2583         (get_address_cost): Likewise.
2584         (get_computation_cost_at): Update calls.
2585         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
2586         Use address-space aware variant of memory address routines.
2587         (create_mem_ref_raw): Update call to valid_mem_ref_p.
2588         (most_expensive_mult_to_index): Update call to
2589         multiplier_allowed_in_address_p.
2590
2591         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
2592         attribute to indicate named address spaces.
2593
2594         * varasm.c (get_variable_section): DECLs in named address spaces
2595         cannot be "common".
2596
2597         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
2598         for addresses in a non-generic address space.
2599
2600         * expr.c (emit_block_move_hints): Do not use libcalls for
2601         memory in non-generic address spaces.
2602         (clear_storage_hints): Likewise.
2603         (expand_assignment): Likewise.
2604
2605         * fold-const.c (operand_equal_p): Expressions refering to different
2606         address spaces are not equivalent.
2607
2608         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
2609         spaces are not equivalent.
2610         (rtx_equal_p): Likewise.
2611         * cse.c (exp_equiv_p): Likewise.
2612         * jump.c (rtx_renumbered_equal_p): Likewise.
2613         * reload.c (operands_match_p): Likewise.
2614
2615         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
2616         address spaces may alias.
2617         (true_dependence): Likewise.
2618         (canon_true_dependence): Likewise.
2619         (write_dependence_p): Likewise.
2620
2621         * dse.c (canon_address): Handle named address spaces.
2622         * ifcvt.c (noce_try_cmove_arith): Likewise.
2623
2624         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
2625         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
2626         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
2627         to handle conversions between different address spaces.
2628         * fold-const.c (fold_convert_loc): Likewise.
2629         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
2630         * tree-pretty-print.c (dump_generic_node): Likewise.
2631         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
2632         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2633         * tree-inline.c (estimate_operator_cost): Likewise.
2634         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
2635         to different address spaces are not useless.
2636
2637 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
2638
2639         PR bootstrap/41345
2640         * cfgcleanup.c (trivially_empty_bb_p): New function.
2641         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
2642
2643         PR debug/41828
2644         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
2645         add_name_and_src_coords_attributes, gen_namespace_die,
2646         dwarf2out_set_name): Handle dwarf2_name returning NULL.
2647
2648 2009-10-26  Nick Clifton  <nickc@redhat.com>
2649
2650         * config.gcc: Add support for RX target.
2651         * config/rx: New directory.
2652         * config/rx/constraints.md: New file.
2653         * config/rx/predicates.md: New file.
2654         * config/rx/rx.c: New file.
2655         * config/rx/rx.h: New file.
2656         * config/rx/rx.md: New file.
2657         * config/rx/rx.opt: New file.
2658         * config/rx/rx-protos.h: New file.
2659         * config/rx/t-rx: New file.
2660         * doc/extend.texi: Document RX function attributes.
2661         * doc/invoke.texi: Document RX specific command line options.
2662         * doc/contrib.texi: Document RX contribution.
2663         * doc/md.texi: Document RX constraints.
2664         * doc/install.texi: Document RX support.
2665
2666 2009-10-26  Michael Matz  <matz@suse.de>
2667
2668         PR tree-optimization/41783
2669         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
2670         case for simple diamonds.
2671         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
2672         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
2673         argument, use alias oracle to skip some vdefs.
2674         (phi_translate_1): Change call to above, don't allocate new
2675         value ids if they can stay the same.
2676         (compute_avail): Allow vuse walking when looking up references.
2677
2678 2009-10-26  Richard Guenther  <rguenther@suse.de>
2679
2680         PR tree-optimization/41826
2681         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
2682         access to re-allocated vector fields.
2683
2684 2009-10-26  Richard Guenther  <rguenther@suse.de>
2685
2686         * graphite-sese-to-poly.c (check_poly_representation): Fix
2687         compile without checking.
2688
2689 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
2690
2691         PR fortran/41714
2692         * gimple.h (tree_annotate_all_with_location): Remove prototype.
2693         * gimplify.c (tree_should_carry_location_p,
2694         tree_annotate_one_with_location,tree_annotate_all_with_location):
2695         Remove obsolete functions.
2696
2697 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2698
2699         PR target/41813
2700         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
2701
2702 2009-10-25  Richard Guenther  <rguenther@suse.de>
2703
2704         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
2705         Stream DECL_RESTRICTED_P.
2706         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
2707
2708 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2709
2710         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
2711         a note when expanding to nothing.
2712
2713 2009-10-25  Richard Guenther  <rguenther@suse.de>
2714
2715         PR middle-end/41814
2716         * tree.c (find_decls_types_r): Deal with Java overloading
2717         BINFO_VIRTUALS for its own purpose.
2718
2719 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
2720
2721         * config/mips/predicates.md (hilo_operand): New predicate.
2722         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
2723         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
2724         splitter part from here ...:
2725         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
2726         op0 and op4 to match the DINS case.
2727         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
2728
2729 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2730
2731         PR middle-end/19154
2732         * avr.md (QIDI): Add new mode iterator.
2733         (sbrx_branch<mode>): Create new zero extract bit, test and jump
2734         patterns for all QI thru DI modes combinations.
2735         (sbrx_and_branch<mode>): Create new and based bit test and jump
2736         patterns for QI thru SI modes.
2737         avr.c (avr_out_sbxx_branch): Use only bit number.
2738
2739 2009-10-24  Jan Hubicka  <jh@suse.cz>
2740
2741         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2742         to memory.
2743         (analyze_function): When analyzing noreturn nothrow call, do not
2744         compute written stats; free bitmaps of vars early if possible.
2745         (generate_summary): Only update bitmaps if computed.
2746         (propagate): Only dump bitmaps if computed.
2747         (ipa_reference_read_summary): Fix pasto.
2748
2749 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2750
2751         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2752         (aliasing_component_refs_p): ...this.  Return true if there is no
2753         common base and the base access types have the same alias set.
2754         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2755         (indirect_refs_may_alias_p): Likewise.
2756
2757 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2758
2759         PR c/40033
2760         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2761         a C_MAYBE_CONST_EXPR.
2762
2763 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2764
2765         PR target/41787
2766         * config/rs6000/rs6000.c (struct machine_function): Add
2767         vsx_or_altivec_used_p to record if vector types are used.
2768         (rs6000_expand_to_rtl_hook): Rename from
2769         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2770         any vector operations, so if there are, we can set VRSAVE to
2771         non-zero when only floating point vector registers are used.
2772         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2773         (rs6000_check_vector_mode): Inner function to check if vector
2774         types are used in the code.
2775         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2776         vector instructions are used.
2777
2778         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2779         Indicate that VSX registers which overlap floating point
2780         registers, can't be used across a call, since the ABI only states
2781         the scalar part of the register will be saved and restored.
2782
2783 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2784
2785         PR c/41673
2786         * alias.c (get_alias_set): Call langhook before returning 0 for
2787         types with structural equality.
2788         * c-common.c (c_common_get_alias_set): Use alias set of element
2789         type for arrays with structural comparison.
2790
2791 2009-10-23  Richard Guenther  <rguenther@suse.de>
2792
2793         PR middle-end/41805
2794         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2795         gimple_call_nothrow_p.
2796
2797 2009-10-23  Richard Guenther  <rguenther@suse.de>
2798
2799         PR tree-optimization/41778
2800         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2801         redundancy along a path in the CFG we want to optimize for speed
2802         is going to be removed.
2803         (execute_pre): Do partial-PRE only if the function is to be
2804         optimized for speed.
2805         (gate_pre): Do not turn off all of PRE when not optimizing a
2806         function for speed.
2807
2808 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2809
2810         * builtins.c (fold_builtin_cabs): Use validate_arg().
2811         (fold_builtin_cexp): Fix if-logic.
2812         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2813
2814 2009-10-22  Jeff Law  <law@redhat.com>
2815
2816         * ira-lives.c (process_single_reg_class_operands): Update the
2817         hard reg costs for all the hard registers desired by the
2818         single reg class operand.
2819
2820 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2821
2822         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2823         for rtxes that aren't handled specially.
2824
2825 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2826
2827         * rtl.h (shallow_copy_rtvec): Declare.
2828         * rtl.c (shallow_copy_rtvec): New function.
2829         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2830         rtx field if the subrtx has changed.
2831
2832 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2833
2834         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2835         (m32c_function_value): Make static, add new 'outgoing' argument.
2836         (m32c_libcall_value): Make static, add new 'fun' argument.
2837         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2838         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2839         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2840         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2841         (m32c_function_value, m32c_libcall_value): Delete declaration.
2842
2843 2009-10-22  Diego Novillo  <dnovillo@google.com>
2844
2845         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2846
2847 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2848
2849         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2850         space.
2851
2852 2009-10-22  Richard Guenther  <rguenther@suse.de>
2853
2854         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2855         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2856         (lto_symtab_merge): Do not merge cgraph nodes here.
2857         (lto_symtab_resolve_can_prevail_p): Simplify.
2858         (lto_symtab_resolve_symbols): Store cgraph node.
2859         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2860         functions from the symtab.
2861         (lto_symtab_merge_cgraph_nodes_1): New function.
2862         (lto_symtab_merge_cgraph_nodes): Likewise.
2863
2864 2009-10-22  Richard Guenther  <rguenther@suse.de>
2865
2866         PR lto/41791
2867         * lto-streamer-out.c (lto_output_location): Stream the
2868         system header flag.
2869         * lto-streamer-in.c (lto_input_location): Likewise.
2870
2871 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2872
2873         * cfgloopmanip.c (duplicate_subloops): Export.
2874         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2875         (transform_to_exit_first_loop): Duplicate bbs starting from
2876         header up to loop->latch instead of exit->src.
2877         Initialize control variable to the correct number of iterations.
2878         (gather_scalar_reductions): Do not register double reductions.
2879         (parallelize_loops): Dump which loop is tested.
2880         Indicate whether the parallelized loop is inner or not.
2881         Remove the innermost-loop requirement.
2882         * cfgloop.h (duplicate_subloops): Export.
2883         * tree-cfg.c (add_phi_args_after_redirect): New function.
2884         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2885         Call duplicate_subloops.
2886         Update number of iterations at the exit condition.
2887         Don't redirect nexits always to the loop exit.
2888         Redirect copied edges from latch to the loop exit.
2889
2890 2009-10-22  Jan Hubicka  <jh@suse.cz>
2891
2892         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2893         flag_ltrans check.
2894         * ipa-inline.c (cgraph_mark_inline_edge,
2895         cgraph_decide_inlining_of_small_function,
2896         cgraph_decide_inlining, inline_read_summary): Disable indirect
2897         inlining for WPA for time being.
2898
2899         PR tree-optimize/40556
2900         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2901
2902 2009-10-22  Richard Guenther  <rguenther@suse.de>
2903
2904         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2905         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2906
2907 2009-10-22  Jan Hubicka  <jh@suse.cz>
2908
2909         PR lto/41730
2910         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2911         global vars.
2912         (check_call): Handle only indirect calls.
2913         (propagate_bits): Update comment.
2914         (write_node_summary_p): Turn bogus check to assert.
2915         (ipa_reference_write_summary): Stream calls_read_all properly.
2916         (ipa_reference_read_summary): Stream in calls_read_all properly.
2917         (read_write_all_from_decl): New function.
2918         (propagate): Handle OVERWRITABLE nodes and external calls here.
2919         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2920         calls only.
2921         (analyze_function): Do not check visibility here.
2922         (add_new_function): We summary OVERWRITABLE too.
2923         (generate_summary): Stream OVERWRITABLE nodes too.
2924         (propagate): Handle external calls and OVERWRITABLE nodes here.
2925         (local_pure_const): Check visibility here.
2926
2927 2009-10-22  Jan Hubicka  <jh@suse.cz>
2928
2929         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2930         (pass_ipa_cp): Register them.
2931         (ipcp_init_stage): Analyze all functions for whopr/lto.
2932         (ipcp_propagate_stage): Skip external calls.
2933         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2934         * ipa-reference.c (write_node_summary_p): Fix thinko about
2935         availability.
2936         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2937         when in ltrans, skip executing of ipa passes since everything
2938         should've been done.
2939         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2940         (inline_generate_summary): Likewise.
2941         (inline_read_summary): New function.
2942         (inline_write_summary): New function.
2943         (pass_ipa_inline): Register new hooks.
2944         * ipa-prop.c: Inlcude lto-streamer.h
2945         (ipa_edge_args_vector): Update declaration.
2946         (ipa_count_arguments, ipa_compute_jump_functions,
2947         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2948         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2949         ipa_read_node_info): New static functions.
2950         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2951         (duplicate_array): Use xmalloc.
2952         (duplicate_ggc_array): New.
2953         (ipa_edge_duplication_hook): Use it.
2954         (ipa_update_after_lto_read): New function.
2955         * ipa-prop.h (ipa_prop_write_jump_functions,
2956         ipa_prop_read_jump_functions): Declare.
2957         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2958         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2959         (ipa_edge_args_vector): Move into GGC.
2960         (ipa_check_create_edge_args): Update.
2961         (ipa_update_after_lto_read): New.
2962         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2963         summaries.
2964         (ipa_read_summaries): When in ltrans, so not read summaries.
2965         * lto-streamer.c (lto_get_section_name): Add
2966         LTO_section_jump_functions.
2967         * lto-streamer.h (LTO_section_jump_functions): New section.
2968         (produce_asm): Declare.
2969         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2970         * lto-streamer-out.c (produce_asm): Export.
2971         * lto-streamer-in.c: Include tree-pass.h
2972         (input_function): Free dominance info when done.
2973         (lto_read_body): Push ipa_inline in ltrans stage.
2974         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2975         * Makefile.in (GTFILES): Add ipa-prop.h
2976
2977 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2978
2979         * doc/install.texi: Document --enable-browser-plugin.
2980
2981 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2982
2983         * doc/invoke.texi (fira-loop-pressure): Update default value.
2984         * opts.c (decode_options): Remove default value setting for
2985         flag_ira_loop_pressure.
2986         * config/ia64/ia64.c (ia64_override_options): Set
2987         flag_ira_loop_pressure up for -O3.
2988         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2989
2990 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2991
2992         PR tree-optimization/41497
2993         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2994         chrec_dont_know if the evolution function returned by follow_ssa_edge
2995         is constant in the analyzed loop and is not compatible with the
2996         initial value before the loop.
2997         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2998
2999 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
3000
3001         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
3002
3003 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
3004
3005         PR other/25507
3006         * doc/invoke.texi: Document -print-multi-os-directory.
3007
3008 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
3009
3010         PR c++/41313
3011         * gcc/config/darwin10.h: Use default_emit_unwind_label.
3012         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
3013         when darwin_emit_unwind_label is used.
3014
3015 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
3016
3017         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
3018         order of checks.
3019
3020 2009-10-20  Richard Henderson  <rth@redhat.com>
3021
3022         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
3023         before emit_post_landing_pad.
3024
3025 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
3026
3027         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
3028         Use when calling rtx_costs.
3029         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
3030         global optimize_size.  Pass speed to mips_binary_cost.
3031
3032 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3033
3034         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
3035         of TREE_CONSTANT.
3036
3037 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
3038
3039         * rtl.h (simplify_replace_fn_rtx): Declare.
3040         (wrap_constant, unwrap_constant): Delete.
3041         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
3042         (expand_debug_expr): Don't call wrap_constant.
3043         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
3044         (auto_adjust_pair): Fold into...
3045         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
3046         Just return a new value.
3047         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
3048         otherwise use simplify_replace_rtx.
3049         * cselib.c (wrap_constant): Reinstate old definition.
3050         (cselib_expand_value_rtx_1): Don't wrap constants.
3051         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
3052         simplify_replace_rtx.
3053         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
3054         * reload1.c (reload): Skip all uses for an insn before adjusting it.
3055         Use simplify_replace_rtx.
3056         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
3057         adapted from...
3058         (simplify_replace_rtx): ...here.  Turn into a wrapper for
3059         simplify_replace_fn_rtx.
3060         (simplify_unary_operation): Don't unwrap CONSTs.
3061         * var-tracking.c (check_wrap_constant): Delete.
3062         (vt_expand_loc_callback): Don't call it.
3063         (vt_expand_loc): Likewise.
3064
3065 2009-10-20  Pascal Obry  <obry@adacore.com>
3066             Eric Botcazou  <ebotcazou@adacore.com>
3067
3068         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
3069
3070 2009-10-20  Michael Matz  <matz@suse.de>
3071
3072         * loop-invariant.c (create_new_invariant): Use different magic number.
3073
3074 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
3075
3076         PR target/39247
3077         * arm.c (arm_override_options): Forcibly disable hot/cold block
3078         partitioning.
3079
3080 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3081
3082         PR debug/41739
3083         * haifa-sched.c (try_ready): Skip debug deps updating speculation
3084         status.
3085
3086 2009-10-20  Richard Guenther  <rguenther@suse.de>
3087
3088         * ggc-page.c: Include cfgloop.h.
3089         (struct max_alignment): Drop long double, add void *.
3090         (extra_order_size_table): Add low non-power-of-two multiples
3091         of MAX_ALIGNMENT.  Drop small type-based entries, add
3092         tree_type, cgraph_node and loop.
3093         * alloc-pool.c (struct allocation_object_def): Drop long double
3094         aligning element.
3095
3096 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
3097
3098         PR debug/41340
3099         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
3100         referenced just in DEBUG_INSNs.
3101
3102 2009-10-20  Richard Guenther  <rguenther@suse.de>
3103
3104         PR lto/41761
3105         * gimple.c (gimple_register_type): Make sure we register
3106         the types main variant first.
3107
3108 2009-10-20  Richard Guenther  <rguenther@suse.de>
3109
3110         * gimple.c (gimple_types_compatible_p): Simplify.  Move
3111         cheap checks before hashtable queries.  Add checks for
3112         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
3113
3114 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
3115
3116         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
3117         without size or with size that can't be represented as a host integer.
3118
3119 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
3120
3121         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
3122         the removal of a debug stmt as a significant change.
3123
3124 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
3125
3126         * config/s390/s390.md: Added agen condition to operand
3127         forwarding bypasses.  Added bypass for early address generation
3128         use of int results.  Updated comments.
3129
3130 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
3131
3132         * config/i386/i386.c: Remove signal.h #include.
3133
3134 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
3135
3136         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
3137         * doc/rtl.texi: Document ss_abs.
3138
3139 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3140
3141         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
3142         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
3143         instead of C_LEX_RAW_STRINGS.
3144         (lex_string): Handle CPP_UTF8STRING.
3145         * c-parser.c (c_parser_postfix_expression): Likewise.
3146         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
3147         (C_LEX_STRING_NO_JOIN): ... this.
3148
3149 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
3150
3151         * config/cris/cris.c (cris_function_value, cris_libcall_value,
3152         cris_function_value_regno_p): New functions.
3153         (cris_promote_function_mode): Update comment.
3154         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3155         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3156         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
3157         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
3158
3159 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3160
3161         * unwind-dw2.c (execute_stack_op): Fix operand order for
3162         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
3163
3164 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
3165
3166         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
3167         (lower_stmt) <GIMPLE_BIND>: Add comment.
3168         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
3169         and return.
3170         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
3171         Otherwise lower it and set cannot_fallthru to true.
3172         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
3173         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
3174         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
3175         to true for a noreturn call.  Do not remove statements.
3176         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
3177         Set cannot_fallthru to false on function exit.
3178         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
3179         <GIMPLE_ASSIGN>: Remove.
3180
3181 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3182
3183         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
3184
3185 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3186
3187         * config/s390/s390.c (s390_z10_optimize_cmp): Use
3188         next/prev_active_insn to skip DEBUG_INSNs as well.
3189
3190 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
3191
3192         * config/arm/arm.c (output_move_neon): Use DImode in call to
3193         adjust_address.
3194
3195 2009-10-19  Matthias Klose  <doko@ubuntu.com>
3196
3197         PR target/40134
3198         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
3199
3200 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
3201
3202         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
3203
3204 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3205
3206         PR middle-end/41738
3207         * optabs.c (expand_binop): Make mode of shift count expression mode
3208         of shift count not target.
3209         Remove indent nit.
3210
3211 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3212
3213         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
3214         case.  Force using values to replace references within the statement.
3215         (convert_local_reference_stmt): Likewise.
3216
3217 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3218
3219         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
3220         remove a subsequent GOTO or RETURN statement.
3221
3222 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
3223
3224         * config/avr.md (*movqi): Add zero as equally preferable constraint
3225         as general register.
3226         (*movhi): Ditto.
3227
3228 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
3229
3230         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
3231
3232 2009-10-17  Richard Guenther  <rguenther@suse.de>
3233
3234         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
3235
3236 2009-10-17  Richard Guenther  <rguenther@suse.de>
3237
3238         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
3239         operands in COMPONENT_REFs.
3240
3241 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
3242
3243         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
3244         if not defined. Change type of second argument to const_rtx.
3245         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
3246         macro not defined.
3247         * targhooks.h (default_libcall_value): Update prototype.
3248         * target.h (struct gcc_target): Change type of second argument of
3249         libcall_value to const_rtx.
3250         * config/arm/arm.c (arm_libcall_value): Change type of second argument
3251         to const_rtx.
3252         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
3253         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
3254
3255 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
3256
3257         PR debug/40521
3258         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
3259         * cgraphunit.c (cgraph_optimize): Call it.
3260         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
3261         (dwarf2out_assembly_start): ... here.  New hook.
3262         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
3263         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
3264         hook.
3265         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3266         * sdbout.c (sdb_debug_hooks): Likewise.
3267         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
3268         (vmsdbgout_assembly_start): New hook.
3269
3270 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3271
3272         * rtl.h (RTL_LOCATION): Fix typo.
3273
3274 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3275
3276         * print-rtl.c (print_rtx): Print locators in asm_operands
3277         and asm_input.
3278
3279 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
3280
3281         PR debug/41535
3282         * sched-deps.c (depl_on_debug_p): New.
3283         (attach_dep_link): Reject debug deps before nondebug deps.
3284         (add_to_deps_list): Insert debug deps after nondebug deps.
3285         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
3286         deps.
3287         (sd_add_dep): Do not reject debug deps.
3288         (add_insn_mem_dependence): Don't count debug deps.
3289         (remove_from_deps): Likewise.
3290         (sched_analyze_2): Set up mem deps on debug insns.
3291         (sched_analyze_insn): Record reg uses for deps on debug insns.
3292         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
3293         try_ready nondebug insn after debug insn.
3294         * ddg.c (create_ddg_dep_from_intra_loop_link,
3295         create_ddg_dep_no_link): Don't reject debug deps.
3296
3297 2009-10-16  Richard Guenther  <rguenther@suse.de>
3298
3299         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
3300         (maybe_merge_incomplete_and_complete_type): Likewise.
3301         (lto_symtab_merge): Do not call them.  Do not warn for
3302         complete vs. incomplete compatible types.
3303         (lto_symtab_merge_decls_2): Simplify.
3304         * gimple.c (gimple_force_type_merge): Remove.
3305         (gimple_types_compatible_p): Make it static.
3306         * gimple.h (gimple_force_type_merge): Remove.
3307         (gimple_types_compatible_p): Likewise.
3308
3309 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
3310
3311         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
3312         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
3313
3314 2009-10-16  Richard Guenther  <rguenther@suse.de>
3315
3316         PR tree-optimization/41728
3317         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
3318         if fold_stmt did anything.
3319
3320 2009-10-16  Richard Guenther  <rguenther@suse.de>
3321
3322         PR lto/41715
3323         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
3324         (maybe_fixup_handled_component): New function.
3325         (input_gimple_stmt): Fixup mismatched decl replacements.
3326
3327 2009-10-16  Richard Guenther  <rguenther@suse.de>
3328
3329         PR lto/41713
3330         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
3331         the same as VAR_DECL.
3332
3333 2009-10-16  Richard Guenther  <rguenther@suse.de>
3334
3335         * gimple.c (iterative_hash_gimple_type): For integer types
3336         also hash their minimum and maximum values and the string flag.
3337         For array types hash their domain and the string flag.
3338
3339 2009-10-16  Richard Guenther  <rguenther@suse.de>
3340
3341         * gimple.c (gimple_types_compatible_p): Restrict completing
3342         types to record or unions.  Simplify completion.
3343         Do not merge records or unions with different
3344         TYPE_STRUCTURAL_EQUALITY_P tag.
3345         (iterative_hash_gimple_type): Restrict non-recursing into
3346         pointer targets for records and unions.
3347
3348 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3349
3350         PR debug/41717
3351         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
3352         * dwarf2out.c (mem_loc_descriptor): Don't handle
3353         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
3354         punt if it is not lowpart subreg or if inner mode isn't
3355         MODE_INT.
3356
3357 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3358
3359         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
3360         investigating previous or next insns.
3361
3362 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
3363
3364         * tree-sra.c (build_ref_for_offset_1): Update comment.
3365
3366 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
3367
3368         * config/s390/s390.md (atype): Added missing values.
3369
3370 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3371
3372         PR target/41702
3373         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
3374         (casesi64p): Update pattern to reflect above.
3375
3376 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
3377
3378         PR rtl-optimization/41697
3379         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
3380
3381 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
3382
3383         PR target/23983
3384         * config/rs6000/predicates.md: Update copyright year.
3385         * config/rs6000/altivec.md: Ditto.
3386
3387         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
3388         (MD_INCLUDES): Add a2.md.
3389
3390         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
3391         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
3392         (builtin_classify): New static vector to classify various builtins
3393         to get the tree attributes correct.
3394         (def_builtin): Set the attributes of builtins based on what the
3395         builtin does (i.e. memory operation, floating point, saturation
3396         need special attributes, others are pure functions).
3397
3398         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
3399         the builtins.
3400         (enum rs6000_builtins): Include rs6000-builtin.def to define the
3401         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
3402         RS6000_BUILTIN_COUNT.
3403         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
3404         MAX_RS6000_BUILTINS.
3405
3406         * config/rs6000/rs6000-builtin.def: New file that combines the
3407         builtin enumeration name and attributes.
3408
3409 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
3410
3411         * config/i386/linux.h (ASM_SPEC): Add --32.
3412
3413 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3414
3415         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
3416         and DW_TAG_template_alias.
3417         (dwarf_attr_name): Handle DW_AT_main_subprogram,
3418         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
3419         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
3420         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
3421         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
3422         and DW_AT_GNU_odr_signature.
3423         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
3424         DW_FORM_flag_present and DW_FORM_ref_sig8.
3425         (output_signature): Only print name on the first byte.
3426         (output_die): Likewise for dw_val_class_data8.
3427
3428 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
3429
3430         * doc/invoke.texi: Clarify that most optimizations are not enabled
3431         without -O.
3432
3433 2009-10-15  Richard Guenther  <rguenther@suse.de>
3434
3435         PR lto/41668
3436         * gimple.c (compare_type_names_p): Handle anonymous names
3437         differently based on new mode argument.
3438         (gimple_types_compatible_p): For structs also compare the tags.
3439         (iterative_hash_type_name): Rename to ...
3440         (iterative_hash_name): ... this.  Hash all names.
3441         (iterative_hash_gimple_type): Fix hashing the struct tag of
3442         pointer targets.  Hash field decl names.
3443
3444 2009-10-15  Richard Guenther  <rguenther@suse.de>
3445
3446         PR lto/41669
3447         * gimple.c (gimple_get_alias_set): Avoid recursing on
3448         invalid type topology.
3449
3450 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3451
3452         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
3453
3454 2009-10-15  Richard Guenther  <rguenther@suse.de>
3455
3456         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
3457
3458 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
3459
3460         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
3461         add --with-tune{,-32,-64} configured default for -mtune if explicit
3462         -mcpu is used.
3463
3464 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
3465
3466         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
3467
3468 2009-10-14  DJ Delorie  <dj@redhat.com>
3469
3470         * config/h8300/h8300.c (F): New.
3471         (Fpa): New.
3472         (h8300_emit_stack_adjustment): Call them.
3473         (push): Likewise.
3474         (h8300_push_pop): Likewise.
3475         (h8300_expand_prologue): Likewise.
3476         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
3477         (MUST_USE_SJLJ_EXCEPTIONS): Define.
3478         (INCOMING_RETURN_ADDR_RTX): Define.
3479         (INCOMING_FRAME_SP_OFFSET): Define.
3480         (DWARF_CIE_DATA_ALIGNMENT): Define.
3481
3482 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3483
3484         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
3485         fields in builtin structs.
3486         (finalize_record_size): Likewise.
3487
3488 2009-10-14  Richard Guenther  <rguenther@suse.de>
3489
3490         * gimple.c (gtc_ob): New global.
3491         (struct type_pair_d): Replace pointers with type UIDs.
3492         (type_pair_hash): Adjust.
3493         (type_pair_eq): Likewise.
3494         (lookup_type_pair): Likewise.  Allocate from an obstack.
3495         (gimple_force_type_merge): Adjust.
3496         (gimple_types_compatible_p): Likewise.
3497         (free_gimple_type_tables): Free the obstack.
3498
3499 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3500
3501         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
3502         stmts setting DEBUG_EXPR_DECLs.
3503
3504         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
3505         Don't crash if mode1 is VOIDmode.
3506
3507 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
3508
3509         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
3510         * params.h (IRA_LOOP_RESERVED_REGS): New.
3511         * tree-pass.h (pass_subregs_of_mode_init,
3512         pass_subregs_of_mode_finish): Remove.
3513         * passes.c (pass_subregs_of_mode_init,
3514         pass_subregs_of_mode_finish): Remove.
3515         (pass_reginfo_init): Move before loop optimizations.
3516         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
3517         * common.opt (fira-loop-pressure): New.
3518         * toplev.h (flag_ira_loop_pressure): New.
3519         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
3520         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
3521         Make external and void type functions.
3522         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
3523         pass_subregs_of_mode_finish): Remove.
3524         * ira-costs.c (init_costs): Call init_subregs_of_mode.
3525         * regmove.c: Include ira.h.
3526         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
3527         register pressure calculation in loops.
3528         * loop-invariant.c: Include REGS_H and ira.h.
3529         (struct loop_data): New members max_reg_pressure, regs_ref, and
3530         regs_live.
3531         (struct invariant): New member orig_regno.
3532         (curr_loop): New variable.
3533         (find_exits): Initialize regs_ref and regs_live.
3534         (create_new_invariant): Initialize orig_regno.
3535         (get_cover_class_and_nregs): New.
3536         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
3537         array.  Add code for flag_ira_loop_pressure.
3538         (gain_for_invariant): Make new_regs an array.  Add code for
3539         flag_ira_loop_pressure.
3540         (best_gain_for_invariant): Ditto.
3541         (set_move_mark): New parameter gain.  Use it for debugging output.
3542         (find_invariants_to_move): Make regs_needed and new_regs an array.
3543         Add code for flag_ira_loop_pressure.
3544         (move_invariant_reg): Set up orig_regno.
3545         (move_invariants): Set up reg classes for pseudos for
3546         flag_ira_loop_pressure.
3547         (free_loop_data): Clear regs_ref and regs_live.
3548         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
3549         get_regno_cover_class, change_pressure, mark_regno_live,
3550         mark_regno_death, mark_reg_store, mark_reg_clobber,
3551         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
3552         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
3553         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
3554         register pressure calculation in loops if new regs were added.
3555         Call finish_subregs_of_mode.
3556         * opts.c (decode_options): Set up flag_ira_loop_pressure.
3557         * Makefile.in (loop-invariant.o): Add ira.h.
3558         (regmove.o): Ditto.
3559         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
3560         Describe.
3561         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
3562
3563 2009-10-14  Richard Guenther  <rguenther@suse.de>
3564
3565         * lto-symtab.c (lto_symtab_compatible): Fold in ...
3566         (lto_symtab_merge): ... here.  Rewrite both to take the
3567         prevailing and a to-be-merged entry and to queue diagnostics properly.
3568         (lto_symtab_resolve_replaceable_p): New predicate for
3569         symbol resolution.
3570         (lto_symtab_resolve_can_prevail_p): Likewise.
3571         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
3572         handles merging commons by choosing the largest decl.  Fold
3573         in code that gives ODR errors.
3574         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
3575         diagnostics here.
3576         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
3577         case of no prevailing decl here.  Diagnose mismatches
3578         in object types here.  Drop all but the prevailing decls.
3579         (lto_symtab_prevailing_decl): Return the single prevailing decl.
3580         * lto-streamer-in.c (lto_input_tree_ref): Deal with
3581         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
3582
3583 2009-10-14  Richard Guenther  <rguenther@suse.de>
3584
3585         PR lto/41521
3586         * lto-streamer-in.c (input_bb): Replace debug stmts with
3587         nops instead of dropping them.
3588
3589 2009-10-14  Nick Clifton  <nickc@redhat.com>
3590
3591         * gcc/doc/extended.texi: Replace the dash character with @minus{}
3592         in situations where it is being used as a minus symbol.
3593         * gcc/doc/tm.texi: Likewise.
3594         * gcc/doc/md.texi: Likewise.
3595
3596 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
3597
3598         PR preprocessor/41543
3599         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
3600         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
3601         * tree.c: Include intl.h.
3602         (expand_location): Handle BUILTINS_LOCATION.
3603         * Makefile.in (tree.o): Depend on intl.h.
3604
3605         PR debug/41695
3606         * dwarf2out.c (dwarf2out_var_location): Always clear
3607         last_postcall_label when changing last_label.
3608
3609 2009-10-14  Pascal Obry  <obry@adacore.com>
3610
3611         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
3612         (process_command): Handle -E as done with -c and -S.  Do not add
3613         the target executable suffix to the output file when -E is used.
3614         (main): Adjust error message accordingly.
3615
3616 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
3617
3618         PR debug/41343
3619         PR debug/41447
3620         PR debug/41264
3621         PR debug/41338
3622         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
3623         decl with rtl.
3624         (tree_code_size): Likewise.
3625
3626 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3627
3628         * builtins.c (fold_builtin_1): Support complex "arc" functions.
3629         * real.h (HAVE_mpc_arc): Define.
3630
3631 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
3632
3633         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
3634         (struct builtin_description): Add fndecl field.
3635         (bdesc): Remove const qualifier.  Update initializer.
3636         (sh_media_init_builtins): Remove const qualifier for d.  Record
3637         the result of add_builtin_function to the fndecl field.
3638         (sh_builtin_decl): New.
3639         (sh_media_builtin_decl): New.
3640
3641 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
3642
3643         PR target/38948
3644         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
3645         requests between special registers.
3646
3647 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
3648
3649         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
3650
3651 2009-10-13  Richard Henderson  <rth@redhat.com>
3652
3653         PR tree-optimization/41377
3654         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
3655         (cleanup_empty_eh_merge_phis): New change_region parameter;
3656         pass it on to redirect_eh_edge_1.  Update callers.
3657         (cleanup_empty_eh_unsplit): Don't require an existing EH label
3658         at the destination block.
3659
3660 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
3661
3662         * passes.c (register_pass): Replaced gcc_unreachable by
3663         fatal_error on failure. Mentions plugins in comments & messages.
3664
3665 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
3666
3667         PR target/41693
3668         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
3669         * sched-vis.c (print_value): Use it.
3670         * cselib.c (cselib_hash_rtx): Likewise.
3671         * print-rtl.c (print_rtx): Likewise.
3672         * cfgexpand.c (expand_debug_rtx): Likewise.
3673         * var-tracking.c (vt_expand_loc_callback): Likewise.
3674
3675 2009-10-13  Richard Guenther  <rguenther@suse.de>
3676
3677         PR lto/41565
3678         * opts.c (handle_option): Split out code to handle setting
3679         the options flag var ...
3680         (set_option): ... here.
3681         * opts.h (set_option): Declare.
3682         * lto-opts.c (register_user_option_p): Include -fexceptions
3683         and all position independent code variants.
3684         (handle_common_option): Remove.
3685         (lto_reissue_options): Use set_option.
3686
3687 2009-10-13  Martin Jambor  <mjambor@suse.cz>
3688
3689         PR tree-optimization/41661
3690         * ipa-prop.c (compute_complex_pass_through): Allow only operations
3691         that are tcc_comparisons or do not change the type in any
3692         un-usleless way.
3693         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
3694         folding tcc_comparison operations.
3695
3696 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3697
3698         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
3699         properly.
3700
3701 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3702
3703         PR debug/41343
3704         PR debug/41447
3705         PR debug/41264
3706         PR debug/41338
3707         * tree.def (DEBUG_EXPR_DECL): New.
3708         * rtl.def (DEBUG_EXPR): New.
3709         * gengtype.c (adjust_field_rtx_def): Handle it.
3710         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
3711         (insert_debug_temp_for_var_def): ... this.  Drop support for
3712         moving.  Take iterator for def stmt; insert debug stmt before it.
3713         Scan early for use count and kind in debug stmts.
3714         (propagate_defs_into_debug_stmts): Rename to...
3715         (insert_debug_temps_for_defs): ... this.  Likewise.
3716         * tree.h (DEBUG_TEMP_UID): New.
3717         * tree.c (next_debug_decl_uid): New.
3718         (make_node_stat): Count debug decls separately.
3719         (copy_node_stat): Likewise.
3720         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
3721         * var-tracking.c (dv_is_decl_p): Recognize it.
3722         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
3723         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
3724         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
3725         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
3726         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
3727         (cselib_hash_rtx): Likewise.
3728         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
3729         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
3730         debug bind stmts.
3731         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
3732         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
3733         * rtl.c (copy_rtx): Likewise.
3734         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3735         * print-rtl.c (print_rtx): Likewise.
3736         * sched-vis.c (print_value): Likewise.
3737         (print_insn): Handle DEBUG_EXPR_DECL.
3738         * tree-dump.c (dequeue_and_dump): Likewise.
3739         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3740         * gimple-iterator (gsi_replace): Check for same lhs.
3741         (gsi_remove): Insert debug temps.
3742         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3743         (move_computations_stmt): Drop explicit propagation into debug stmts.
3744         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3745         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3746         * tree-ssa-sink.c (statement_sink_location): Likewise.
3747         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3748         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3749         * tree-flow.h: Likewise.
3750         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3751         debug temps without values.
3752         (eliminate_unnecessary_stmts): Don't discard just-inserted
3753         debug stmts.
3754
3755 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3756
3757         PR target/26515
3758         * config/cris/cris.md (andu): Check that operand 1 is one of the
3759         general registers.  Fix typo in head comment.
3760
3761 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3762
3763         * config/i386/i386.md (vswapmov): New.
3764         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3765         (ix86_function_ms_hook_prologue): New.
3766         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3767         * configure.ac: Test for swap suffix support in as.
3768         * configure: Rebuild.
3769
3770 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3771
3772         PR target/41680
3773         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3774         paradoxical subregs to prevent partial register stalls if the inner
3775         mode is integer mode.
3776
3777 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3778
3779         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3780
3781 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3782
3783         PR c++/41570
3784         * gcc/dwarf2out.c (template_parameter_pack_die,
3785         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3786
3787 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3788
3789         PR debug/41616
3790         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3791         on updates too.
3792         (maybe_register_def): Likewise.  Take stmt iterator.
3793         (rewrite_update_stmt): Take stmt iterator and pass it on.
3794         (rewrite_update_enter_block): Pass stmt iterator.
3795
3796 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3797
3798         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3799         (spu_builtin_decl): New function.
3800
3801 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3802
3803         * config/i386/i386.md (SWIM): New mode iterator.
3804         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3805         using SWIM mode iterator.
3806         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3807         patterns using SWI48 mode iterator.
3808         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3809         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3810         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3811         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3812         patterns using SWI248 mode iterator.
3813         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3814         gen_x86_movdicc_0_m1_rex64 for renamed function
3815
3816 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3817             Eric Botcazou  <ebotcazou@adacore.com>
3818
3819         PR target/33743
3820         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3821         * config/sparc/sol2-unwind.h: New file.
3822
3823 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3824             Eric Botcazou  <ebotcazou@adacore.com>
3825
3826         PR target/33743
3827         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3828         * config/i386/sol2-unwind.h: New file.
3829
3830 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3831
3832         PR target/41665
3833         * config/i386/i386.md (addsi_1_zext): Get the proper second
3834         operand for lea.
3835
3836 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3837
3838         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3839         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3840         replacement value.
3841
3842 2009-10-11  Richard Guenther  <rguenther@suse.de>
3843
3844         * gimple.c (iterative_hash_type_name): Do not handle special
3845         anonymous names.
3846
3847 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3848
3849         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3850         (*setcc_si_1_and): Ditto.
3851         (*setcc_si_1_movzbl): Ditto.
3852         (*setcc_<mode>_2): Ditto.
3853         (*setcc_qi): Rename from *setcc_1.
3854         (*setcc_qi_slp): Rename from *setcc_2.
3855
3856         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3857         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3858
3859         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3860         "if" condition, there is already assert with reload_completed present.
3861
3862 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3863
3864         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3865
3866 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3867
3868         * doc/install.texi (Final install): Refer to
3869         http://gcc.gnu.org/bugs/ for bug reporting.
3870
3871 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3872
3873         * configure.ac: Add test for dci instruction.
3874         * configure: Regenerate.
3875         * config.in: Likewise.
3876         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3877         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3878         (-mmulhw): Add 476 to description.
3879         (-mdlmzb): Likewise.
3880         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3881         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3882         (processor_target_table): Add 476 and 476fp entries.
3883         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3884         (rs6000_issue_rate): Add CPU_PPC476.
3885         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3886         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3887         (processor_type): Add PROCESSOR_PPC476.
3888         (EXTRA_SPECS): Add asm_cpu_476 string.
3889         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3890         (define_attr "cpu"): Add ppc476.
3891         Include 476.md.
3892         Update comments for 476.
3893         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3894         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3895         Update copyright year.
3896         * config/rs6000/476.md: New file.
3897         * config/rs6000/40x.md: Add description for "isel" attribute.
3898         Update copyright year.
3899         * config/rs6000/440.md: Likewise.
3900         * config/rs6000/603.md: Likewise.
3901         * config/rs6000/6xx.md: Likewise.
3902         * config/rs6000/7450.md: Likewise.
3903         * config/rs6000/7xx.md: Likewise.
3904         * config/rs6000/8540.md: Likewise.
3905         * config/rs6000/cell.md: Likewise.
3906         * config/rs6000/e300c2c3.md: Likewise.
3907         * config/rs6000/e500mc.md: Likewise.
3908         * config/rs6000/mpc.md: Likewise.
3909         * config/rs6000/power4.md: Likewise.
3910         * config/rs6000/power5.md: Likewise.
3911         * config/rs6000/power6.md: Likewise.
3912         * config/rs6000/power7.md: Likewise.
3913         * config/rs6000/rios1.md: Likewise.
3914         * config/rs6000/rios2.md: Likewise.
3915         * config/rs6000/rs64.md: Likewise.
3916
3917 2009-10-10  Richard Guenther  <rguenther@suse.de>
3918
3919         PR tree-optimization/41654
3920         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3921         a cond expr before calling gimple_cond_set_condition_from_tree.
3922         (ifcombine_iforif): Likewise.
3923
3924 2009-10-09  Ian Lance Taylor  <iant@google.com>
3925
3926         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3927         * configure: Rebuild.
3928
3929 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3930
3931         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3932         deprecated.
3933
3934 2009-10-09  Richard Guenther  <rguenther@suse.de>
3935
3936         PR lto/41638
3937         * target-def.h (TARGET_BUILTIN_DECL): Define.
3938         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3939         * target.h (struct gcc_target): Add builtin_decl target hook.
3940         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3941         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3942         target builtins.
3943         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3944         not gcc_unreachable.
3945         (lto_output_builtin_tree): Sorry if the target does not support
3946         streaming target builtins.
3947         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3948         (rs6000_builtin_decl): New function.
3949         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3950         (ix86_builtin_decl): New function.
3951
3952 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3953
3954         PR preprocessor/41445
3955         * c-ppoutput.c (do_line_change): New function.
3956         (cb_line_change): Use it.
3957         (scan_translation_unit): Call do_line_change if
3958         avoid_paste or PREV_WHITE and token location is on a different line
3959         than print.src_line.
3960
3961         PR debug/40521
3962         * dwarf2out.c (dwarf2out_init): Test whether
3963         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3964         it is defined.
3965
3966         PR rtl-optimization/41646
3967         * calls.c (expand_call): For BLKmode types returned in registers
3968         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3969         insns.
3970
3971 2009-10-09  Richard Guenther  <rguenther@suse.de>
3972
3973         PR tree-optimization/41634
3974         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3975         we remove the correct elements.
3976         (optimize_stmt): Make sure to update stmt operands before
3977         optimizing redundancies.
3978
3979 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3980
3981         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3982
3983 2009-10-09  Richard Guenther  <rguenther@suse.de>
3984
3985         PR driver/41637
3986         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3987         globals.
3988         (lto_wrapper_exit): New function.
3989         (fatal): Use it.
3990         (fatal_perror): Likewise.
3991         (fork_execute): Use global args_name, do not free it.
3992         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3993         * lto-streamer.h: Remove duplicate prototypes.
3994
3995 2009-10-09  Richard Guenther  <rguenther@suse.de>
3996
3997         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3998         before calling stmt_can_throw_external.
3999
4000 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
4001
4002         PR tree-optimization/40071
4003         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
4004         pointer if the original data reference doesn't conflict with the
4005         created vector data reference.  Fix long line.
4006
4007 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
4008
4009         * config/i386/i386.md (any_div): New code iterator.
4010         (u): Handle div and udiv.
4011         (sgnprefix): Ditto.
4012         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
4013         code iterator.
4014         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
4015         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
4016         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
4017         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
4018
4019 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
4020
4021         * gcc.c (main): Remove trailing "." from diagnostics.
4022
4023 2009-10-08  Cary Coutant  <ccoutant@google.com>
4024
4025         Add support for debugging with ICF (Identical Code Folding).
4026         * calls.c (debug.h): New #include.
4027         (emit_call_1): Call virtual_call_token debug hook.
4028         * common.opt (-fenable-icf-debug): New option.
4029         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
4030         locations in the source).
4031         (poc_label_num): New variable.
4032         (dcall_entry, vcall_entry): New typedefs.
4033         (dcall_table, vcall_table): New variables.
4034         (struct vcall_insn): New type.
4035         (vcall_insn_table): New variable.
4036         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
4037         (size_of_dcall_table): New function.
4038         (output_dcall_table): New function.
4039         (size_of_vcall_table): New function.
4040         (output_vcall_table): New function.
4041         (dwarf2out_direct_call): New function.
4042         (vcall_insn_table_hash): New function.
4043         (vcall_insn_table_eq): New function.
4044         (dwarf2out_virtual_call_token): New function.
4045         (dwarf2out_virtual_call): New function.
4046         (dwarf2out_init): Allocate new tables and sections.
4047         (prune_unused_types): Mark DIEs referenced from direct call table.
4048         (dwarf2out_finish): Output direct and virtual call tables.
4049         * final.c (final_scan_insn): Call direct_call and virtual_call
4050         debug hooks.
4051         * debug.h (struct gcc_debug_hooks): Add direct_call,
4052         virtual_call_token, virtual_call hooks.
4053         (debug_nothing_uid): New function.
4054         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
4055         (debug_nothing_uid): New function.
4056         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
4057         (xcoff_debug_hooks): Likewise.
4058         * sdbout.c (sdb_debug_hooks): Likewise.
4059         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
4060         * doc/invoke.texi (-fenable-icf-debug): New option.
4061
4062 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
4063
4064         PR debug/41353
4065         * regmove.c (regmove_backward_pass): Replace src with dst in the
4066         debug insn, and check for dst before rather than after.
4067
4068 2009-10-08  Janis Johnson <janis187@us.ibm.com>
4069
4070         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
4071         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
4072
4073 2009-10-08  Jan Hubicka  <jh@suse.cz>
4074
4075         PR middle-end/41626
4076         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
4077         do not mark cgraph nodes as needed.
4078         (record_references_in_initializer): Add new only_vars parameter.
4079         * cgraph.h (record_references_in_initializer): New parameter.
4080         * varasm.c (assemble_variable): Update call.
4081         * varpool.c (varpool_analyze_pending_decls): Always look for
4082         referenced vars.
4083
4084 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
4085
4086         * config/avr/avr.c (last_insn_address) Remove variable.
4087         (expand_prologue): Don't initialise last_insn_address variable.
4088         (final_prescan_insn): Don't output insn size.
4089         * config/avr/avr.opt (msize): Remove switch.
4090         * doc/invoke.texi (AVR Options): Remove documentation of -msize
4091         switch.
4092
4093 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
4094
4095         * combine.c (label_tick_ebb_start): Fix comment.
4096         (combine_instructions): Set label_tick and label_tick_ebb_start before
4097         calling setup_incoming_promotions.  Start them from 1.  Increment
4098         label_tick instead of deriving it from the BB index.  Rather than
4099         comparing ticks use the block from the previous iteration to decide
4100         whether to start a new EBB.  Remove empty lines before function.
4101
4102 2009-10-08  Michael Matz  <matz@suse.de>
4103
4104         PR middle-end/41573
4105         * builtins.c (fold_builtin_isascii): Use fold_build2.
4106         (fold_builtin_isdigit): Ditto.
4107         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
4108         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
4109         remove_useless_stmts_cond, remove_useless_stmts_tf,
4110         remove_useless_stmts_tc, remove_useless_stmts_bind,
4111         remove_useless_stmts_goto, remove_useless_stmts_label,
4112         remove_useless_stmts_1, remove_useless_stmts,
4113         pass_remove_useless_stmts): Remove.
4114         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
4115         * passes.c (init_optimization_passes): Don't add
4116         pass_remove_useless_stmts.
4117         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
4118         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
4119         static constants.
4120         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
4121         for static constants.
4122         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
4123         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
4124
4125 2009-10-08  Richard Guenther  <rguenther@suse.de>
4126
4127         * gimple.c (free_gimple_type_tables): New function.
4128         * gimple.h (free_gimple_type_tables): Declare.
4129
4130 2009-10-07  Mark Heffernan  <meheff@google.com>
4131
4132         * ipa-prop.c (ipa_print_node_params) Only print
4133         names of named arguments.
4134
4135 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
4136
4137         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
4138         being statically linked.
4139
4140 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4141
4142         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
4143
4144 2009-10-08  Jan Hubicka  <jh@suse.cz>
4145
4146         PR bootstrap/41620
4147         * ipa.c (cgraph_externally_visible_p,
4148         function_and_variable_visibility,
4149         whole_program_function_and_variable_visibility): Skip non-finalized
4150         nodes.
4151
4152 2009-10-08  Nick Clifton  <nickc@redhat.com>
4153
4154         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
4155         CONST_DOUBLEs.
4156
4157 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
4158
4159         PR bootstrap/37739
4160         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
4161
4162 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
4163
4164         PR c/41182
4165         * c-common.c (c_fully_fold_internal): Strip nops from the result
4166         of recursive calls to c_fully_fold_internal.
4167         (c_wrap_maybe_const): New.
4168         (c_save_expr): Use c_wrap_maybe_const.
4169         * c-common.h (c_wrap_maybe_const): Declare.
4170         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
4171         build_binary_op): Use c_wrap_maybe_const.
4172
4173 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4174
4175         * real.c: Fix comment to reflect actual exponent size.
4176
4177 2009-10-08  Ben Elliston  <bje@au.ibm.com>
4178
4179         * config/rs6000/a2.md: Add FSF comment header.
4180
4181 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
4182
4183         * config/i386/i386.md (any_extend): New code iterator.
4184         (u, s): New code attributes.
4185         (sgnprefix): Ditto.
4186         (DWIH): Rewrite as code iterator for SI and DI modes.
4187         (DWI): Rewrite as mode attribute.
4188         (dwi): New mode attribute.
4189         (di): Depend on SI mode and DI mode.
4190         (doubleint_general_operand): Remove mode attribute.
4191
4192         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
4193         DWIH mode iterator.
4194
4195         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
4196         (*sub<mode>3_doubleword): Ditto.
4197
4198         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
4199         using SWIM248 mode iterator.
4200         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
4201         using SWI48 mode iterator.
4202         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
4203         patterns using DWIH mode iterator and any_extend code iterator.
4204         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
4205         using any_extend code iterator.
4206         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
4207         patterns using DWIH mode iterator and any_extend code iterator.
4208         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
4209         using any_extend code iterator.
4210         (<s>mul<mode>3_highpart): Macroize expander from
4211         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
4212         and any_extend code iterator.
4213         (*<s>muldi3_highpart_1): Macroize insn from
4214         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
4215         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
4216         patterns using any_extend code iterator.
4217         (*<s>mulsi3_highpart_zext): Macroize insn from
4218         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
4219
4220 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
4221
4222         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
4223         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
4224         refering to a DIE with DW_AT_const_value.
4225
4226 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
4227
4228         PR middle-end/22072
4229         * ira-lives.c (check_and_make_def_conflict): Process all operands.
4230
4231 2009-10-06  Jan Hubicka  <jh@suse.cz>
4232
4233         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
4234         correctly.
4235
4236 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4237
4238         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
4239         *lea_2_rex64): Move before *add<mode>_1 pattern.
4240
4241 2009-10-07  Jan Hubicka  <jh@suse.cz>
4242
4243         * collect2.c (main): Add -fno-whole-program.
4244         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
4245
4246 2009-10-07  Jan Hubicka  <jh@suse.cz>
4247
4248         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
4249         has no address taken.
4250         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
4251         never needed.
4252         (cgraph_clone_node): Clear externally_visible flag for clones.
4253         * cgraph.h (cgraph_only_called_directly_p,
4254         cgraph_can_remove_if_no_direct_calls_p): New predicates.
4255         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
4256         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
4257         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
4258         ipcp_insert_stage): Likwise.
4259         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
4260         externally_visible flag.
4261         (verify_cgraph_node): Verify that inline clones look right.
4262         (process_function_and_variable_attributes): Do not set
4263         externally_visible flags.
4264         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
4265         been already run.
4266         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
4267         boundaries.
4268         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
4269         clear externally_visible when turning into inline clones
4270         (cgraph_mark_inline_edge): Use new predicates.
4271         (cgraph_estimate_growth): Likewise.
4272         (cgraph_decide_inlining): Likewise.
4273         * ipa.c (cgraph_postorder): Likewise.
4274         (cgraph_remove_unreachable_nodes): Likewise; sanity check
4275         that inline clones are not needed.
4276         (cgraph_externally_visible_p): New predicate.
4277         (function_and_variable_visibility): Add whole_program parameter;
4278         always set externally_visible flag; handle COMDAT function
4279         privatization.
4280         (local_function_and_variable_visibility): New function.
4281         (gate_whole_program_function_and_variable_visibility): New function.
4282         (whole_program_function_and_variable_visibility): New function.
4283         (pass_ipa_whole_program_visibility): New function.
4284         * passes.c  (init_optimization_passes): Add whole program visibility
4285         pass.
4286         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
4287         not care about needed/reachable flags.
4288         * varpool.c: Include flags.h
4289         (decide_is_variable_needed): When doing LTO assume whole-program mode.
4290         (varpool_finalize_decl): When we are in LTO read-back, all variables
4291         are analyzed.
4292         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
4293
4294 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4295
4296         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
4297         add MASK_HARD_DFP.
4298
4299 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4300
4301         * config.gcc: Don't include the makefile fragments intended for
4302         libgcc.
4303         * config/s390/fixdfdi.h: File removed.
4304         * config/s390/libgcc-glibc.ver: File removed.
4305         * config/s390/s390.h: Remove the fixdfdi.h hack.
4306         * config/s390/t-crtstuff: File moved to libgcc dir.
4307         * config/s390/t-linux: Likewise.
4308         * config/s390/t-tpf: libgcc specific parts removed.
4309         * config/s390/t-linux64: Likewise.
4310
4311 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4312
4313         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
4314         (lto-compress.o): Likewise.
4315
4316 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
4317
4318         PR target/41512
4319         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
4320         dllexport to class members here.
4321         (i386_pe_determine_dllimport_p): Only check static class data for
4322         definition.
4323         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
4324         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
4325         functions for vague linkage.
4326         (i386_pe_type_dllexport_p): Fix formatting.
4327         (maybe_add_dllexport) New function.
4328         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
4329         to class members.
4330
4331 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4332
4333         * config/rs6000/a2.md: Remove duplicated lines.
4334
4335 2009-10-07  Ben Elliston  <bje@au.ibm.com>
4336
4337         * config.gcc (powerpc*-*-*): Handle a2.
4338         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
4339         * config/rs6000/a2.md: New file.
4340         * config/rs6000/rs6000.opt (mno-update): New.
4341         (mupdate): Return to using a mask, not a var.
4342         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
4343         (enum processor_type): Add PROCESSOR_PPCA2.
4344         * config/rs6000/rs6000.c (ppca2_cost): New costs.
4345         (rs6000_override_options): Add "a2" to processor_target_table.
4346         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
4347         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
4348
4349 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4350
4351         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
4352         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
4353         reference to nonexistent gen_truncxfxf2 function.
4354
4355 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
4356
4357         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
4358         (DWIH, g, di, doubleint_general_operand): New mode attributes.
4359         (general_operand): Handle TI mode.
4360         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
4361         using SDWIM mode iterator.
4362         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
4363         pattern from *add{di,ti}3_1 patterns and corresponding splitters
4364         using DWI mode iterator.
4365         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
4366         patterns using SWI mode iterator.
4367         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
4368         using SWI48 mode iterator.
4369         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
4370         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
4371         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
4372         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
4373         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
4374         using SDWIM mode iterator.
4375         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
4376         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
4377         using DWI mode iterator.
4378         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
4379         patterns using SWI mode iterator.
4380         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
4381         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
4382         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
4383         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
4384         patterns using plusminus code iterator.
4385         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
4386         sub<mode>3 patterns using plusminus code iterator.
4387         * config/i386/i386.c (override_options): Update the call to
4388         gen_subdi_carry_rex64 for renamed function.
4389         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
4390         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
4391         calls to instruction expanders.
4392
4393 2009-10-06  Martin Jambor  <mjambor@suse.cz>
4394
4395         PR bootstrap/41395
4396         * opts.c (decode_options): Run IPA-SRA at -O2.
4397
4398 2009-10-06  Richard Guenther  <rguenther@suse.de>
4399
4400         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
4401
4402 2009-10-06  Tobias Burnus  <burnus@net-b.de>
4403
4404         PR lto/41591
4405         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
4406         -flto and -fwhole-program flags can be combined.
4407
4408 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
4409
4410         PR driver/41217
4411         * gcc.c (process_command): Check that -o argument was specified.
4412
4413 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
4414
4415         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
4416
4417 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4418
4419         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
4420         * doc/invoke.texi (Warning Options): Annotate allowed languages
4421         for -Wunsuffixed-float-constants.
4422
4423 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
4424
4425         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
4426         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
4427         same name and isn't the main variant.
4428
4429         PR debug/41558
4430         * dwarf2out.c (loc_by_reference): Removed.
4431         (dw_loc_list_1): New function.
4432         (dw_loc_list): Remove toplev argument, add want_address argument.
4433         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
4434         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
4435         want_address == 2 to dw_loc_list.  For successful dw_loc_list
4436         set have_address to 1 only if want_address is not 0.
4437
4438 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4439
4440         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
4441         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
4442         a code block followed by two pointers.
4443         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
4444         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
4445         (MIPS_MOVE): Likewise.
4446         (MIPS_LUI): Likewise.
4447         (MIPS_JR): Likewise.
4448         (MIPS_BAL): Likewise.
4449         (MIPS_NOP): Likewise.
4450         (mips_asm_trampoline_template): Delete.
4451         (mips_trampoline_code_size): New function.
4452         (mips_trampoline_init): Add shorter sequences for all cases
4453         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
4454         Calculate the opcodes directly, rather than copying from a template.
4455         Only flush the code part of the trampoline.
4456         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
4457
4458 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
4459
4460         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
4461         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
4462         (INCOMING_RETURN_ADDR_RTX): Likewise.
4463         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
4464         with AT_REGNUM.
4465         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
4466         with RETURN_ADDR_REGNUM.
4467         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
4468         * config/mips/mips.c (mips16_build_call_stub): Replace
4469         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
4470         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
4471         (mips_print_operand_punctuation): Likewise.
4472         (mips_frame_set): Likewise.
4473         (mips16e_output_save_restore): Likewise.
4474         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
4475         (mips_save_reg_p): Likewise.
4476         (mips_return_addr): Likewise.
4477         (mips_set_return_address): Likewise.
4478         (mips_direct_save_slot_move_p): Likewise.
4479         (mips_output_function_prologue): Likewise.
4480         (mips_restore_reg): Likewise.
4481         (mips_expand_epilogue): Likewise.
4482         (mips_epilogue_uses): Likewise.
4483         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
4484         (*mov<mode>_ra): Use it instead of a hard-coded 31.
4485         (clear_hazard_<mode>): Likewise.
4486         (call_internal): Likewise.
4487         (call_internal_direct): Likewise.
4488         (call_direct_split): Likewise.
4489         (call_value_internal): Likewise.
4490         (call_value_split): Likewise.
4491         (call_value_internal_direct): Likewise.
4492         (call_value_direct_split): Likewise.
4493         (call_value_multiple_internal): Likewise.
4494         (call_value_multiple_split): Likewise.
4495
4496 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
4497             Jakub Jelinek  <jakub@redhat.com>
4498
4499         PR rtl-optimization/41511
4500         * combine.c (record_value_for_reg): Pass explicit values as argument
4501         to get_last_value_validate.
4502         (get_last_value_validate): Document INSN parameter.
4503         For non-readonly MEMs, assume they might have been modified if INSN
4504         was in another basic block.
4505         (get_last_value): Minor reformatting.
4506
4507 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4508
4509         PR tree-opt/40992
4510         * final.c (asm_str_count): Split out from asm_insn_count.
4511         * rtl.h (asm_str_count): New prototype.
4512         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
4513         asm_str_count.
4514
4515 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
4516
4517         * doc/plugins.texi: Change plugin_pass to register_pass_info.
4518
4519 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
4520             Rafael Espindola  <espindola@google.com>
4521
4522         * gengtype.c (write_types): Moved call to write_func_for_structure
4523         into seperate loops.
4524
4525 2009-10-05  Richard Guenther  <rguenther@suse.de>
4526
4527         PR lto/41281
4528         * lto-cgraph.c (output_cgraph): Output toplevel asms.
4529         (input_cgraph_1): Input toplevel asms.
4530
4531 2009-10-05  Richard Guenther  <rguenther@suse.de>
4532
4533         PR lto/40902
4534         * lto-symtab.c (lto_compatible_attributes_p): Remove.
4535         (external_aggregate_decl_p): Likewise.
4536         (lto_symtab_compatible): Re-structure.  Remove dead code.
4537         For variables ignore toplevel qualifiers when comparing types.
4538         Issue warnings, not errors for mismatched user-alignment.
4539
4540 2009-10-05  Richard Guenther  <rguenther@suse.de>
4541
4542         PR lto/41552
4543         PR lto/41487
4544         * lto-symtab.c (struct lto_symtab_base_def): Remove.
4545         (struct lto_symtab_identifier_def): Likewise.
4546         (struct lto_symtab_decl_def): Likewise.
4547         (struct lto_symtab_entry_def): New.
4548         (lto_symtab_identifier_t): Rename to ...
4549         (lto_symtab_entry_t): ... this.
4550         (lto_symtab_decls): Remove.
4551         (lto_symtab_base_hash): Rename to ...
4552         (lto_symtab_entry_hash): ... this.
4553         (lto_symtab_base_eq): Rename to ...
4554         (lto_symtab_entry_eq): ... this.
4555         (lto_symtab_base_marked_p): Rename to ...
4556         (lto_symtab_entry_marked_p): ... this.
4557         (lto_symtab_identifier_marked_p): Remove.
4558         (lto_symtab_decl_marked_p): Likewise.
4559         (lto_symtab_maybe_init_hash_tables): Rename to ...
4560         (lto_symtab_maybe_init_hash_table): ... this.
4561         (lto_symtab_set_resolution_and_file_data): Remove.
4562         (lto_symtab_register_decl): New function.
4563         (lto_symtab_get_identifier): Remove.
4564         (lto_symtab_get): New function.
4565         (lto_symtab_get_resolution): Adjust.
4566         (lto_symtab_get_identifier_decl): Remove.
4567         (lto_symtab_set_identifier_decl): Likewise.
4568         (lto_symtab_merge_decl): Rename to ...
4569         (lto_symtab_merge): ... this.  Rewrite.
4570         (lto_symtab_merge_var): Remove.
4571         (lto_symtab_merge_fn): Likewise.
4572         (lto_symtab_prevailing_decl): Adjust.
4573         (lto_cgraph_replace_node): New function.
4574         (lto_symtab_merge_decls_2): Likewise.
4575         (lto_symtab_merge_decls_1): Likewise.
4576         (lto_symtab_fixup_var_decls): Likewise.
4577         (lto_symtab_resolve_symbols): Likewise.
4578         (lto_symtab_merge_decls): Likewise.
4579         (lto_symtab_prevailing_decl): Adjust.
4580         (lto_symtab_get_symtab_def): Remove.
4581         (lto_symtab_get_file_data): Likewise.
4582         (lto_symtab_clear_resolution): Adjust.
4583         (lto_symtab_clear_resolution): Likewise.
4584         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
4585         (input_cgraph_1): Likewise.
4586         * lto-streamer-in.c (get_resolution): Do not provide fake
4587         symbol resolutions here.
4588         (deferred_global_decls): Remove.
4589         (lto_register_deferred_decls_in_symtab): Likewise.
4590         (lto_register_var_decl_in_symtab): Change signature, register
4591         variable via lto_symtab_register_decl.
4592         (lto_register_function_decl_in_symtab): Likewise.
4593         (lto_read_tree): Adjust.
4594         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
4595         (lto_symtab_merge_var): Likewise.
4596         (lto_symtab_merge_fn): Likewise.
4597         (lto_symtab_register_decl): Declare.
4598         (lto_symtab_merge_decls): Likewise.
4599
4600 2009-10-05  Richard Guenther  <rguenther@suse.de>
4601
4602         PR tree-optimization/23821
4603         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
4604         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
4605         simple IV increments.
4606
4607 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4608
4609         * config/arm/arm.c (arm_override_options): Really initialize
4610         flag_dwarf2_cfi_asm to 0.
4611
4612 2009-10-05  Doug Kwan  <dougkwan@google.com>
4613
4614         PR rtl-optimization/41574
4615         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
4616         floating point and we are not doing unsafe math optimizations.
4617
4618 2009-10-03  Simon Baldwin  <simonb@google.com>
4619             Cary Coutant  <ccoutant@google.com>
4620             Rafael Espindola  <espindola@google.com>
4621             Richard Guenther  <rguenther@suse.de>
4622             Jan Hubicka  <jh@suse.cz>
4623             Doug Kwan <dougkwan@google.com>
4624             H.J. Lu  <hongjiu.lu@intel.com>
4625             Bill Maddox  <maddox@google.com>
4626             Ryan Mansfield  <rmansfield@qnx.com>
4627             Diego Novillo  <dnovillo@google.com>
4628             Ollie Wild  <aaw@google.com>
4629             Kenneth Zadeck <zadeck@naturalbridge.com>
4630
4631         * lto-cgraph.c: New file.
4632         * lto-compress.c: New file.
4633         * lto-compress.h: New file.
4634         * lto-opts.c: New file.
4635         * lto-section-in.c: New file.
4636         * lto-section-out.c: New file.
4637         * lto-streamer-in.c: New file.
4638         * lto-streamer-out.c: New file.
4639         * lto-streamer.c: New file.
4640         * lto-streamer.h: New file.
4641         * lto-symtab.c: New file.
4642         * lto-wpa-fixup.c: New file.
4643         * lto-wrapper.c: New file.
4644
4645 2009-10-03  Simon Baldwin  <baldwin@google.com>
4646             Ben Elliston  <bje@au.ibm.com>
4647             Rafael Espindola  <espindola@google.com>
4648             Nathan Froyd  <froydnj@codesourcery.com>
4649             Jan Hubicka  <jh@suse.cz>
4650             Doug Kwan  <dougkwan@google.com>
4651             Diego Novillo  <dnovillo@google.com>
4652             Kenneth Zadeck  <zadeck@naturalbridge.com>
4653
4654         * Makefile.in (enable_lto): New.
4655         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
4656         (LINKER_PLUGIN_API_H): Define.
4657         (LTO_SYMTAB_H): Define.
4658         (LTO_STREAMER_H): Define.
4659         (TREE_VECTORIZER_H): Define.
4660         (INCLUDES): Add LIBELFINC.
4661         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
4662         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
4663         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
4664         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
4665         (native): Add lto-wrapper$(exeext)
4666         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
4667         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
4668         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
4669         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
4670         (varasm.o): Add dependency on tree-iterator.h.
4671         (cgraph.o): Add dependency on cif-code.def.
4672         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
4673         (ipa-pure-const.o): Likewise.
4674         (GTFILES): Add lto-symtab.c.
4675         (install-lto-wrapper): New.
4676         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
4677         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
4678         * config.in: Regenerate.
4679
4680 2009-10-03  Rafael Espindola  <espindola@google.com>
4681             Diego Novillo  <dnovillo@google.com>
4682
4683         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
4684         ipa_write_summaries.
4685         Call execute_ipa_summary_passes for all_regular_ipa_passes and
4686         all_lto_gen_passes.
4687         (cgraph_optimize): Make extern.
4688
4689 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
4690             Kenneth Zadeck <zadeck@naturalbridge.com>
4691
4692         * toplev.c (in_lto_p): Declare.
4693         * collect2.c (scan_prog_file): Read all the output when reading
4694         information for LTO.
4695         (enum lto_mode_d): Declare.
4696
4697 2009-10-03  Richard Guenther  <rguenther@suse.de>
4698             Diego Novillo  <dnovillo@google.com>
4699
4700         * gimple.c: Include target.h and alias.h.
4701         (gimple_types): Declare.
4702         (type_hash_cache): Declare.
4703         (gimple_alloc_stat): Make extern.
4704         (gimple_build_eh_must_not_throw): Call
4705         gimple_eh_must_not_throw_set_fndecl.
4706         (struct type_pair_d): Declare.
4707         (type_pair_t): Declare.
4708         (type_pair_hash): New.
4709         (type_pair_eq): New.
4710         (lookup_type_pair): New.
4711         (gimple_force_type_merge): New.
4712         (compare_type_names_p): New.
4713         (compare_field_offset): New.
4714         (gimple_types_compatible_p): New.
4715         (struct sccs): Declare.
4716         (next_dfs_num): Declare.
4717         (iterative_hash_gimple_type): New.
4718         (visit): New.
4719         (iterative_hash_type_name): New.
4720         (iterative_hash_gimple_type): New.
4721         (gimple_type_hash): New.
4722         (gimple_type_eq): New.
4723         (gimple_register_type): New.
4724         (print_gimple_types_stats): New.
4725         (gimple_signed_or_unsigned_type): New.
4726         (gimple_unsigned_type): New.
4727         (gimple_signed_type): New.
4728         (gimple_get_alias_set): New.
4729         (gimple_decl_printable_name): Do not use DMGL_TYPES.
4730         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
4731         (gimple_force_type_merge): Declare.
4732         (gimple_types_compatible_p): Declare.
4733         (gimple_register_type): Declare.
4734         (print_gimple_types_stats): Declare.
4735         (gimple_unsigned_type): Declare.
4736         (gimple_signed_type): Declare.
4737         (gimple_get_alias_set): Declare.
4738         (gimple_eh_must_not_throw_set_fndecl): New.
4739
4740 2009-10-03  Jan Hubicka  <jh@suse.cz>
4741             Kenneth Zadeck <zadeck@naturalbridge.com>
4742
4743         * ipa-pure-const.c: Include lto-streamer.h.
4744         (register_hooks): Factor out of ...
4745         (generate_summary): ... here.
4746         (pure_const_write_summary): New.
4747         (pure_const_read_summary): New.
4748         (pass_ipa_pure_const): Add pure_const_write_summary and
4749         pure_const_read_summary.
4750         * ipa-reference.c: Include lto-streamer.h.
4751         (add_new_function): New.
4752         (remove_node_data): New.
4753         (duplicate_node_data): New.
4754         (ipa_init): Guard against multiple calls.
4755         Move hook setup from analyze_function.
4756         (write_node_summary_p): New.
4757         (ipa_reference_write_summary): New.
4758         (ipa_reference_read_summary): New.
4759         (pass_ipa_reference): Add ipa_reference_write_summary and
4760         ipa_reference_read_summary.
4761         * cgraph.h (cgraph_local_info): Add field lto_file_data.
4762         (struct cgraph_edge): Add fields lto_stmt_uid and
4763         call_stmt_cannot_inline_p.
4764         (cgraph_optimize): Declare.
4765         (cgraph_decide_is_function_needed): Declare.
4766         (reset_inline_failed): Declare.
4767         (enum LTO_cgraph_tags): Declare.
4768         (LTO_cgraph_tag_names): Declare.
4769         (LCC_NOT_FOUND): Define.
4770
4771 2009-10-03  Doug Kwan  <dougkwan@google.com>
4772             Rafael Espindola  <espindola@google.com>
4773             Jan Hubicka  <jh@suse.cz>
4774             Diego Novillo  <dnovillo@google.com>
4775             Kenneth Zadeck  <zadeck@naturalbridge.com>
4776
4777         * passes.c (all_regular_ipa_passes): New.
4778         (all_ipa_passes): Rename to all_small_ipa_passes.
4779         (init_optimization_passes): Init all_regular_ipa_passes.
4780         * tree-pass.h (all_regular_ipa_passes): New.
4781         (all_ipa_passes): Rename to all_small_ipa_passes.
4782         * passes.c (all_lto_gen_passes): New.
4783         (init_optimization_passes): Initialize all_lto_gen_passes.
4784         (execute_ipa_summary_passes): Make non-static.
4785         (ipa_write_summaries_1): New.
4786         (ipa_write_summaries_2): New.
4787         (ipa_write_summaries): New.
4788         (ipa_write_summaries_of_cgraph_node_set): New.
4789         (ipa_read_summaries_1): New.
4790         (ipa_read_summaries): New.
4791         (execute_ipa_pass_list): Call cgraph_process_new_functions.
4792         (execute_regular_ipa_pass_list): Remove.
4793         (init_optimization_passes): Schedule
4794         pass_rebuild_cgraph_edges and pass_early_inline outside
4795         of pass_all_early_optimizations.  Document reason.
4796         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
4797         pass_ipa_lto_finish_out): New pass.
4798         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
4799         (execute_all_ipa_transforms): New.
4800         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
4801         (dump_properties, debug_properties): New.
4802         * tree-optimize.c (gate_all_early_local_passes): Return
4803         false if we are in lto1.
4804         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
4805         * tree-pass.h (execute_all_ipa_transforms): Declare.
4806         (pass_ipa_function_and_variable_visibility): Declare.
4807         (pass_ipa_early_inline): Declare.
4808         (pass_ipa_lto_gimple_out): Declare.
4809         (pass_ipa_lto_wpa_fixup): Declare.
4810         (pass_ipa_lto_finish_out): Declare.
4811         (all_small_ipa_passes, all_regular_ipa_passes,
4812         all_lto_gen_passes): Declare.
4813         (execute_ipa_summary_passes): Declare.
4814         (execute_all_ipa_transforms): Declare.
4815         (ipa_write_summaries): Declare
4816         (ipa_write_summaries_of_cgraph_node_set): Declare.
4817         (ipa_read_summaries): Declare.
4818
4819 2009-10-03  Doug Kwan  <dougkwan@google.com>
4820             Ollie Wild  <aaw@google.com>
4821
4822         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
4823
4824         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
4825         (lto_mode): New variable.
4826         (maybe_run_lto_and_relink): Handle the -fwpa option.
4827         (main): Handle the -fwpa option.
4828         (maybe_unlink_list): New function.
4829         * gcc.c (link_lto_options): Replace -flto with -fwpa.
4830         * common.opt (flto): New flag.
4831         * toplev.c (flag_generate_lto): Declare.
4832
4833 2009-10-03  Simon Baldwin  <simonb@google.com>
4834
4835         * common.opt (flto-compression-level): New flag.
4836
4837         * opts.c: Include lto-opts.h.
4838         (handle_option): Call lto_register_user_option for each
4839         valid option handled.
4840         (decode_options): Clear registered options before the options
4841         handling loop.
4842
4843 2009-10-03  Cary Coutant  <ccoutant@google.com>
4844
4845         * collect2.c (is_elf): New function.
4846         (scan_prog_file): Require LTO object to be in ELF format.
4847
4848 2009-10-03  Rafael Espindola  <espindola@google.com>
4849
4850         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
4851         libgcc to the linker.
4852
4853         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
4854
4855         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
4856         (collect_execute): Add flags argument. Pass flags to pex_run. Update
4857         all callers.
4858         * collect2.h (collect_execute): Add flags argument.
4859         * tlink.c (tlink_execute): Update call to collect_execute.
4860         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
4861         (use_linker_plugin): New.
4862         (use_linker_plugin_spec_function): New.
4863         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
4864         (linker_plugin_file_spec): New.
4865         (lto_wrapper_spec): New.
4866         (lto_gcc_spec): New.
4867         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
4868         (static_spec_functions): Add use-linker-plugin.
4869         (process_command): Handle -use-linker-plugin.
4870         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
4871         linker_plugin_file_spec and lto_gcc_spec.
4872         (use_linker_plugin_spec_function): New.
4873
4874 2009-10-03  Richard Guenther  <rguenther@suse.de>
4875
4876         PR lto/41547
4877         PR lto/41548
4878         * tree.h (is_lang_specific): Include LANG_TYPE.
4879         * tree.c (find_decls_types_r): Manually add interesting parts
4880         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
4881
4882         * gimple.c (type_pair_hash): Make symmetric.
4883         (type_pair_eq): Likewise.
4884         (lookup_type_pair): Increase initial hashtable size.
4885         (gimple_force_type_merge): Rely on type-pair symmetry.
4886         (visit): Remove excessive checking code.
4887         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
4888         (gimple_register_type): Remove getenv calls, shrink initial
4889         hashtable size.
4890
4891         PR middle-end/41502
4892         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
4893         inline functions if not generating lto output.
4894
4895         PR lto/41379
4896         * toplev.c (finalize): In WPA mode remove the asm file.
4897
4898 2009-10-03  Doug Kwan  <dougkwan@google.com>
4899
4900         * ipa-inline.c (cgraph_mark_inline): Check
4901         edge->call_stmt_cannot_inline_p instead of calling
4902         gimple_call_cannot_inline_p.
4903         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
4904         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
4905         (inline_generate_summary): Do nothing in LTRANS.
4906         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
4907         exists before calling gimple_call_cannot_inline_p.
4908         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
4909         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
4910         Update new_edge->lto_stmt_uid.
4911         * cgraphbuild.c (reset_inline_failed): New.
4912
4913         * common.opt (fwpa): New flag.
4914         (fltrans): New option.
4915         * gcc.c (gcc_lto_option_t): New type.
4916         (current_lto_option): New variable.
4917         (lto_single_spec_function): Remove and is replaced by ..
4918         (lto_option_spec_function): New function.
4919         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
4920         passing the -flto flag.
4921         (cc1_options): Separate non-LTO related parts into ..
4922         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
4923         (lto1_options): New spec for lto FE.
4924         (link_lto_options): New spec for handling LTO flags in linker.
4925         (invoke_lto_single): Re-format to fit in 80 column.  Replace
4926         lto-single with lto-option.
4927         (static_specs): Add cc1_non_lto_options, lto1_options and
4928         link_lto_options.
4929         (static_spec_function): Replace lto-single with lto-option.
4930         (process_command): Handle -flto, -fwpa and -fltran by setting
4931         current_lto_option and not passing it to subprocess unconditionally.
4932
4933 2009-10-03  Bill Maddox  <maddox@google.com>
4934
4935         Add `gcc' driver support for link-time code generation (LTO).
4936
4937         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
4938         (lto_flag, lto_objects, lto_o_file): New variables.
4939         (struct lto_object, struct lto_object_list): New structures.
4940         (collect_exit, handler): Remove LTO temporary output file on exit.
4941         (add_lto_object): New function.
4942         (maybe_run_lto_and_relink): New function. Perform link time code
4943         generation and relinking for object files containing LTO information.
4944         (main): Invoke maybe_run_lto_and_relink().
4945         (dump_argv): New function.  For debugging, currently disabled.
4946         (scan_prog_file): Add LTO information pass.
4947         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
4948         collect2.
4949         * toplev.c (compile_file): Emit assembler directive to create
4950         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
4951
4952 2009-10-03  Diego Novillo  <dnovillo@google.com>
4953
4954         * c.opt: Add LTO to warn_abi and warn_psabi.
4955
4956         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
4957         inline function.  Ignore language-specific nodes.  Update all users.
4958         (find_decls_types_r): Do not traverse the subtrees of
4959         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
4960         * tree.h (is_lang_specific): New.
4961         * langhooks.h (struct lang_hooks_for_decls): Remove
4962         may_need_assembler_name_p.  Update all users.
4963
4964         * c-common.c (set_builtin_user_assembler_name): Move ...
4965         * builtins.c (set_builtin_user_assembler_name): ... here.
4966         (is_builtin_name): Add comment
4967         (is_builtin_fn): New.
4968         * except.c (output_ttype): Only call
4969         lookup_type_for_runtime if TYPE is not a runtime type.
4970
4971         * passes.c (register_pass): Call position_pass on
4972         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
4973         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
4974         (TV_IPA_LTO_DECL_IO): Define.
4975         (TV_IPA_LTO_CGRAPH_IO): Define.
4976         (TV_LTO): Define.
4977         (TV_WHOPR_WPA): Define.
4978         (TV_WHOPR_WPA_IO): Define.
4979         (TV_WHOPR_LTRANS): Define.
4980         (TV_WHOPR_WPA_FIXUP): Define.
4981         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
4982         * tree-cfg.c (tree_node_can_be_shared): Make extern.
4983         * tree-flow.h (tree_node_can_be_shared): Declare.
4984         * tree-inline.c (tree_can_inline_p): Check that E has a
4985         statement associated with it.
4986         * tree.c (free_lang_data_in_binf): Factor out of ...
4987         (free_lang_data_in_type): ... here.
4988         Call RECORD_OR_UNION_TYPE_P.
4989         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
4990         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
4991         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
4992         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
4993         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
4994         (gate_free_lang_data): Return true if flag_generate_lto is set.
4995         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
4996         * c-common.h (set_builtin_user_assembler_name): Move ...
4997         * tree.h (set_builtin_user_assembler_name): ... here.
4998
4999         * common.opt (flto-report): New flag.
5000         * opts.c (complain_wrong_lang): Do not complain if running lto1.
5001         * collect2.c (scan_prog_file): Send the error output of
5002         'nm' to HOST_BIT_BUCKET.
5003
5004 2009-10-03  Ollie Wild  <aaw@google.com>
5005
5006         * langhooks-def.h (lhd_begin_section): New function declaration.
5007         (lhd_write_section): New function declaration.
5008         (lhd_end_section): New function declaration.
5009         (LANG_HOOKS_BEGIN_SECTION): New macro.
5010         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
5011         (LANG_HOOKS_END_SECTION): New macro.
5012         (LANG_HOOKS_LTO): New macro.
5013         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
5014         * langhooks.c (output.h): Add include.
5015         (saved_section): New static variable.
5016         (lhd_begin_section): New function.
5017         (lhd_write_section_data): New function.
5018         (lhd_end_section): New function.
5019         * langhooks.h (struct lang_hooks_for_lto): New structure.
5020         (struct lang_hooks): Add member lto.
5021         * Makefile.in (langhooks.o): Add dependency on output.h.
5022
5023         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
5024
5025 2009-10-03  Richard Guenther  <rguenther@suse.de>
5026
5027         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
5028         Handle LTO.
5029
5030 2009-10-03  Simon Baldwin  <simonb@google.com>
5031             Richard Guenther  <rguenther@suse.de>
5032             Janis Johnson  <janis187@us.ibm.com>
5033             Doug Kwan  <dougkwan@google.com>
5034             Diego Novillo  <dnovillo@google.com>
5035             Ramana Radhakrishnan  <ramana.r@gmail.com>
5036             Ollie Wild  <aaw@google.com>
5037
5038         * doc/install.texi: Add documentation for libelf and --enable-lto.
5039         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
5040         -flto-report, -flto-compression-level and -use-linker-plugin.
5041         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
5042         Add section for LTO Testing.
5043
5044 2009-10-02  Cary Coutant  <ccoutant@google.com>
5045
5046         Add support for comdat type sections for DWARF v4.
5047         Merge from dwarf4 branch.
5048
5049         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
5050         (dw_die_ref): Define vector type.
5051         (enum dw_val_class): Add dw_val_class_data8.
5052         (struct dw_val_struct): Add v.val_data8.
5053         (comdat_type_node_ref): New type.
5054         (struct die_struct): Move die_symbol into a union; add new field
5055         die_type_node.  Change all uses.
5056         (comdat_type_node): New type.
5057         (skeleton_chain_node): New type.
5058         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
5059         (comdat_type_list): New variable.
5060         (dwarf_tag_name): Add DW_TAG_type_unit.
5061         (dwarf_attr_name): Add DW_AT_signature.
5062         (add_AT_data8): New function.
5063         (replace_child): New function.
5064         (move_all_children): New function.
5065         (print_signature): New function.
5066         (print_die): Print signature information; add dw_val_class_data8.
5067         (attr_checksum): Support dw_val_class_data8.
5068         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
5069         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
5070         (checksum_sleb128, checksum_uleb128): New functions.
5071         (checksum_die_context): New function.
5072         (loc_checksum_ordered): New function.
5073         (attr_checksum_ordered): New function.
5074         (struct checksum_attributes): New structure.
5075         (collect_checksum_attributes): New function.
5076         (die_checksum_ordered): New function.
5077         (generate_type_signature): New function.
5078         (same_dw_val_p): Add dw_val_class_data8.
5079         (is_symbol_die): Use new is_declaration_die function.
5080         (is_declaration_die): New function.
5081         (should_move_die_to_comdat): New function.
5082         (clone_die): New function.
5083         (clone_tree): New function.
5084         (clone_as_declaration): New function.
5085         (copy_declaration_context): New function.
5086         (generate_skeleton_ancestor_tree): New function.
5087         (generate_skeleton_bottom_up): New function.
5088         (generate_skeleton): New function.
5089         (remove_child_or_replace_with_skeleton): New function.
5090         (break_out_comdat_types): New function.
5091         (struct decl_table_entry): New type.
5092         (htab_decl_hash): New function.
5093         (htab_decl_eq): New function.
5094         (htab_decl_del): New function.
5095         (copy_ancestor_tree): New function.
5096         (copy_decls_walk): New function.
5097         (copy_decls_for_unworthy_types): New function.
5098         (build_abbrev_table): Don't assert on missing die_symbol when doing
5099         comdat type sections.
5100         (size_of_die): Use DW_FORM_sig8 for external references.  Add
5101         dw_val_class_data8.
5102         (unmark_dies): Don't assert for unmarked dies when doing comdat
5103         type sections.
5104         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
5105         (output_signature): New function.
5106         (output_die): Likewise.
5107         (output_compilation_unit_header): Mark output as DWARF version 3
5108         even if generating DWARF 4.
5109         (output_comdat_type_unit): New function.
5110         (output_line_info): Mark output as DWARF version 3 even if generating
5111         DWARF 4.
5112         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
5113         DWARF-4.
5114         (dwarf2out_end_source_file): Likewise.
5115         (prune_unused_types_walk_attribs): Don't follow references into
5116         comdat type sections.
5117         (prune_unused_types_mark): When generating type units, do not mark
5118         children of non-defining declarations of types; do mark children of
5119         type entries.
5120         (prune_unused_types): Process comdat type sections.
5121         (htab_ct_hash): New function.
5122         (htab_ct_eq): New function.
5123         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
5124         Add a pointer to the line table from type unit entries so
5125         DW_AT_decl_file has meaning.
5126         * varasm.c (default_elf_asm_named_section): Use identifier name as
5127         comdat key instead of lang hook.
5128
5129 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
5130
5131         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
5132
5133 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
5134
5135         * config/i386/i386.md (SWIM248): New mode iterator.
5136         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
5137         divmodhi4 patterns using SWIM248 macro.
5138         (*divmod<mode>4): Macroize insn_and_split pattern from
5139         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
5140         and their corresponding splitters usign SWIM248 macro.  Split SImode
5141         insn to generate cltd and DImode insn to generate cqto instead of
5142         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
5143         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
5144         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
5145         *divmodsi_noext patterns using SWIM248 macro.
5146         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
5147         udivmodhi4 patterns using SWIM248 macro.
5148         (*udivmod<mode>4): Macroize insn_and_split pattern from
5149         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
5150         corresponding splitters using SWIM248 macro.
5151         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
5152         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
5153
5154 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
5155
5156         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
5157         of zero-sized element is zero-sized regardless of its extent.
5158
5159 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
5160
5161         PR debug/40521
5162         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
5163         * configure: Regenerated.
5164         * config.in: Regenerated.
5165         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
5166         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
5167         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
5168         not emitting .eh_frame, emit .cfi_sections .debug_frame
5169         directive.
5170
5171         PR debug/41404
5172         PR debug/41353
5173         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
5174         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
5175         with '\0'.
5176         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
5177         vars use DECL_RTL with resetting it back to NULL afterwards.
5178         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
5179         rtx_equal_p instead of asserting it is a SYMBOL_REF.
5180         (value_format): For dw_val_class_addr only use DW_FORM_addr if
5181         the attribute type allows it, otherwise use DW_FORM_dataN.
5182         (mem_loc_descriptor): Handle CONST_STRING.
5183         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
5184         Handle MEM with CONST_STRING address using add_AT_string.
5185         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
5186         CONST_STRING for const arrays initialized with a string literal.
5187         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
5188         (dwarf2out_finish): Call resolve_addr.
5189
5190 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
5191             Maxim Kuvyrkov  <maxim@codesourcery.com>
5192
5193         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
5194
5195 2009-10-02  Nick Clifton  <nickc@redhat.com>
5196
5197         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
5198         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
5199
5200 2009-10-01  Jan Hubicka  <jh@suse.cz>
5201
5202         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
5203         (cgraph_create_virtual_clone): Just pass redirect_callers
5204         around.
5205         * cgraph.h (cgraph_clone_node): Update prototype.
5206         * ipa-pure-const.c (self_recursive_p): New function.
5207         (propagate): Use it.
5208         * ipa-inline.c (cgraph_clone_inlined_nodes,
5209         cgraph_decide_recursive_inlining): Update.
5210
5211 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
5212
5213         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
5214         instructions for TARGET_OCTEON.
5215
5216 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5217
5218         * config/arm/arm.c (arm_override_options): Turn off
5219         flag_dwarf2_cfi_asm for AAPCS variants.
5220
5221 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5222
5223         PR middle-end/12392
5224         * tree-sra.c (convert_callers): Do not call
5225         compute_inline_parameters on one caller more than once.
5226
5227 2009-10-01  Nick Clifton  <nickc@redhat.com>
5228
5229         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
5230         an empty string if not already defined.
5231
5232 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5233
5234         PR bootstrap/41395
5235         * tree-sra.c (is_va_list_type): New function.
5236         (find_var_candidates): Call is_va_list_type.
5237         (find_param_candidates): Check that the type or the type pointed
5238         to are not va_list types.
5239
5240 2009-10-01  Martin Jambor  <mjambor@suse.cz>
5241
5242         PR c++/41503
5243         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
5244         DECL_ARTIFICIAL (param_decl) is true.
5245
5246 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
5247
5248         * tree.h (tree_decl_common::lang_flag_8): New.
5249         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
5250         keyword.
5251         * c-common.h (RID_CONSTEXPR): New.
5252
5253 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5254
5255         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
5256         Use ref-all pointers.
5257         (alpha_gimplify_va_arg): Ditto.
5258
5259 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
5260
5261         PR target/41279
5262         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
5263         before insn counting loop now that BB_END (bb) is counted.  Ensure
5264         the return value isn't zero.
5265
5266 2009-09-30  Nick Clifton  <nickc@redhat.com>
5267
5268         * config.gcc (sh-symbianelf): Replace definition of extra_objs
5269         with separate definitions of c_target_objs and cxx_target_objs.
5270         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
5271         and symbian-base.o.
5272         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
5273         sh_symbian_import_export_class.
5274         * config/sh/sh-protos.h: Fix names of exported symbian functions.
5275         * config/sh/symbian.c: Delete, moving code into...
5276         * config/sh/symbian-base.c: ... here
5277         * config/sh/symbian-c.c: ... and here
5278         * config/sh/symbian-cxx.c: ... and here.
5279
5280 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
5281
5282         PR target/22093
5283         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
5284         of plus RTX into register.
5285
5286 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5287
5288         * doc/install.texi: Linguistic and markup fixes.
5289         (Configuration) <--disable-cpp>: Remove description.
5290         <--enable-maintainer-mode>: Autotools files are affected, too.
5291         <--with-sysroot>: Improve description.
5292         (Building): Bump required GNU make version.
5293
5294 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5295
5296         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
5297         (x86_64-*-*): Ditto.
5298
5299         * config/i386/fma4intrin.h: New file, provide common x86 compiler
5300         intrinisics for FMA4.
5301         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
5302         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
5303         Add FMA4 check and fma4intrin.h.
5304         * config/i386/i386-c.c(ix86_target_macros_internal): Check
5305         ISA_FLAG for FMA4.
5306         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
5307         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
5308         constant for FMA4 support.
5309         (UNSPEC_FMA4_FMADDSUB): Ditto.
5310         (UNSPEC_FMA4_FMSUBADD): Ditto.
5311         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
5312         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
5313         (ix86_expand_fma4_multiple_memory): Ditto.
5314         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
5315         (OPTION_MASK_ISA_FMA4_UNSET): New.
5316         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
5317         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
5318         (ix86_handle_option): Handle -mfma4.
5319         (isa_opts): Handle -mfma4.
5320         (enum pta_flags): Add PTA_FMA4.
5321         (override_options): Add FMA4 support.
5322         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
5323         (IX86_BUILTIN_VFMADDSD): Ditto.
5324         (IX86_BUILTIN_VFMADDPS): Ditto.
5325         (IX86_BUILTIN_VFMADDPD): Ditto.
5326         (IX86_BUILTIN_VFMSUBSS): Ditto.
5327         (IX86_BUILTIN_VFMSUBSD): Ditto.
5328         (IX86_BUILTIN_VFMSUBPS): Ditto.
5329         (IX86_BUILTIN_VFMSUBPD): Ditto.
5330         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
5331         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
5332         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
5333         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
5334         (IX86_BUILTIN_VFNMADDSS): Ditto.
5335         (IX86_BUILTIN_VFNMADDSD): Ditto.
5336         (IX86_BUILTIN_VFNMADDPS): Ditto.
5337         (IX86_BUILTIN_VFNMADDPD): Ditto.
5338         (IX86_BUILTIN_VFNMSUBSS): Ditto.
5339         (IX86_BUILTIN_VFNMSUBSD): Ditto.
5340         (IX86_BUILTIN_VFNMSUBPS): Ditto.
5341         (IX86_BUILTIN_VFNMSUBPD): Ditto.
5342         (IX86_BUILTIN_VFMADDPS256): Ditto.
5343         (IX86_BUILTIN_VFMADDPD256): Ditto.
5344         (IX86_BUILTIN_VFMSUBPS256): Ditto.
5345         (IX86_BUILTIN_VFMSUBPD256): Ditto.
5346         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
5347         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
5348         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
5349         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
5350         (IX86_BUILTIN_VFNMADDPS256): Ditto.
5351         (IX86_BUILTIN_VFNMADDPD256): Ditto.
5352         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
5353         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
5354         (enum multi_arg_type): New enum for describing the various FMA4
5355         intrinsic argument types.
5356         (bdesc_multi_arg): New table for FMA4 intrinsics.
5357         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
5358         (ix86_expand_multi_arg_builtin): New function for creating FMA4
5359         intrinsics.
5360         (ix86_expand_builtin): Add FMA4 intrinsic support.
5361         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
5362         operand instructions.
5363         (ix86_expand_fma4_multiple_memory): New function to split the
5364         second memory reference from FMA4 instructions.
5365         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
5366         (ssemodesuffixf2s): Ditto.
5367         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
5368         instructions.
5369         (fma4_fmsub<mode>4): Ditto.
5370         (fma4_fnmadd<mode>4): Ditto.
5371         (fma4_fnmsub<mode>4): Ditto.
5372         (fma4_vmfmadd<mode>4): Ditto.
5373         (fma4_vmfmsub<mode>4): Ditto.
5374         (fma4_vmfnmadd<mode>4): Ditto.
5375         (fma4_vmfnmsub<mode>4): Ditto.
5376         (fma4_fmadd<mode>4256): Ditto.
5377         (fma4_fmsub<mode>4256): Ditto.
5378         (fma4_fnmadd<mode>4256): Ditto.
5379         (fma4_fnmsub<mode>4256): Ditto.
5380         (fma4_fmaddsubv8sf4): Ditto.
5381         (fma4_fmaddsubv4sf4): Ditto.
5382         (fma4_fmaddsubv4df4): Ditto.
5383         (fma4_fmaddsubv2df4): Ditto.
5384         (fma4_fmsubaddv8sf4): Ditto.
5385         (fma4_fmsubaddv4sf4): Ditto.
5386         (fma4_fmsubaddv4df4): Ditto.
5387         (fma4_fmsubaddv2df4): Ditto.
5388         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
5389         instructions for intrinsics.
5390         (fma4i_fmsub<mode>4): Ditto.
5391         (fma4i_fnmadd<mode>4): Ditto.
5392         (fma4i_fnmsub<mode>4): Ditto.
5393         (fma4i_vmfmadd<mode>4): Ditto.
5394         (fma4i_vmfmsub<mode>4): Ditto.
5395         (fma4i_vmfnmadd<mode>4): Ditto.
5396         (fma4i_vmfnmsub<mode>4): Ditto.
5397         (fma4i_fmadd<mode>4256): Ditto.
5398         (fma4i_fmsub<mode>4256): Ditto.
5399         (fma4i_fnmadd<mode>4256): Ditto.
5400         (fma4i_fnmsub<mode>4256): Ditto.
5401         (fma4i_fmaddsubv8sf4): Ditto.
5402         (fma4i_fmaddsubv4sf4): Ditto.
5403         (fma4i_fmaddsubv4df4): Ditto.
5404         (fma4i_fmaddsubv2df4): Ditto.
5405         (fma4i_fmsubaddv8sf4): Ditto.
5406         (fma4i_fmsubaddv4sf4): Ditto.
5407         (fma4i_fmsubaddv4df4): Ditto.
5408         (fma4i_fmsubaddv2df4): Ditto.
5409
5410         * doc/invoke.texi (-mfma4): Add documentation.
5411         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
5412
5413 2009-09-29  Richard Henderson  <rth@redhat.com>
5414
5415         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
5416         an edge to the new destination block.
5417
5418 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5419
5420         PR target/41393
5421         * pa.c (hppa_profile_hook): Use
5422         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
5423
5424 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
5425             Alexander Monakov  <amonakov@ispras.ru>
5426
5427         PR target/41365
5428         * config/ia64/predicates.md (not_postinc_destination_operand): New.
5429         (not_postinc_memory_operand): New.
5430         (not_postinc_move_operand): New.
5431         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
5432         (*cmovsi_internal): Ditto.
5433
5434 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
5435
5436         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
5437         restrict issue_rate in first pass when scheduling for register
5438         pressure.
5439
5440 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
5441             Rafael Avila de Espindola  <espindola@google.com>
5442
5443         * gengtype.c (plugin_output): New.
5444         (get_output_file_with_visibility): Return plugin_output for plugins.
5445         (main): Parse and use the -P option.
5446         * gty.texi: Update the command line format.
5447
5448 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
5449
5450         PR debug/41438
5451         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
5452         functions.
5453         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
5454         out if !const_ok_for_output.
5455
5456         PR debug/41474
5457         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
5458         case VAR_LOCATION>: Remove gcc_unreachable ().
5459
5460 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
5461
5462         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
5463         (x86_64-*-*): Ditto.
5464         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
5465         back to smmintrin.h.
5466         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
5467         * config/i386/x86intrin.h: Remove SSE5.
5468         * config/i386/mmintrin-common.h: Delete file.
5469         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
5470
5471 2009-09-29  Richard Guenther  <rguenther@suse.de>
5472
5473         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
5474         resulting from stack temporaries on STRICT_ALIGNMENT targets.
5475
5476 2009-09-29  Nick Clifton  <nickc@redhat.com>
5477
5478         * function.c (current_function_name): If there is no current
5479         function just return "<none>".
5480
5481 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
5482
5483         * tree-pass.h (register_pass_info): New structure.
5484         (pass_positioning_ops): Move enum from gcc-plugin.h.
5485         (register_pass): New function.
5486         * gcc-plugin.h (plugin_pass): Delete structure.
5487         (pass_positioning_ops): Delete enum.
5488         * plugin.c (regsiter_pass): Delete function.
5489         (position_pass): Delete function.
5490         (added_pass_nodes): Delete variable.
5491         (prev_added_pass_nodes): Delete variable.
5492         (pass_list_node): Delete structure.
5493         * passes.c (make_pass_instance): New function.
5494         (next_pass_1): Change to call make_pass_instance.
5495         (pass_list_node): Move structure from gcc-plugin.h.
5496         (added_pass_nodes): Move variable from plugin.c.
5497         (prev_added_pass_nodes): Move variable from plugin.c.
5498         (position_pass): New function.
5499         (register_pass): New function.
5500
5501 2009-09-28  Easwaran Raman  <eraman@google.com>
5502
5503         * ifcvt.c (noce_try_abs): Recognize pattern and call
5504         expand_one_cmpl_abs_nojump.
5505         * optabs.c (expand_one_cmpl_abs_nojump): New function.
5506         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
5507
5508 2009-09-28  Ian Lance Taylor  <iant@google.com>
5509
5510         PR middle-end/40500
5511         * c-opts.c (c_common_handle_option): Don't set
5512         warn_jump_misses_init for -Wall.
5513         * doc/invoke.texi (Warning Options): Update documentation.
5514
5515 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5516
5517         * Makefile.in ($(out_object_file)): Depend on
5518         gt-$(basename $(notdir $(out_file))).h.
5519
5520 2009-09-28  Richard Henderson  <rth@redhat.com>
5521
5522         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
5523         * except.c (gen_eh_region): Set it.
5524         (duplicate_eh_regions_1): Copy it.
5525         * tree-eh.c (lower_resx): Use it to determine which function
5526         to call to resume.
5527
5528         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
5529         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
5530         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
5531         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
5532         BUILT_IN_CXA_END_CLEANUP if necessary.
5533
5534         * c-common.c (c_define_builtins): Update call to
5535         build_common_builtin_nodes.
5536
5537 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5538
5539         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
5540
5541 2009-09-28  Michael Matz  <matz@suse.de>
5542
5543         * builtins.c (interclass_mathfn_icode): New helper.
5544         (expand_builtin_interclass_mathfn): Use it here, and split folding
5545         into ...
5546         (fold_builtin_interclass_mathfn): ... this new folder.
5547         (build_call_nofold_loc): New static helper.
5548         (build_call_nofold): New wrapper macro for above.
5549         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
5550         (expand_builtin_pow): Ditto.
5551         (expand_builtin_memset_args): Ditto.
5552         (expand_builtin_printf): Ditto.
5553         (expand_builtin_fprintf): Ditto.
5554         (expand_builtin_sprintf): Ditto.
5555         (expand_builtin_memory_chk): Ditto.
5556         (expand_builtin_mempcpy_args): Ditto and don't call folders.
5557         (expand_builtin_stpcpy): Ditto.
5558         (expand_builtin_strcmp): Ditto.
5559         (expand_builtin_strncmp): Ditto.
5560         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
5561         (expand_builtin_strcpy_args): Don't call folders.
5562         (expand_builtin_memcmp): Ditto.
5563         (expand_builtin_strncpy): Ditto, and use target.
5564         (expand_builtin_memcpy): Ditto.
5565         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
5566         expand_builtin_strpbrk, expand_builtin_memmove,
5567         expand_builtin_memmove_args, expand_builtin_bcopy,
5568         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
5569         expand_builtin_strspn, expand_builtin_strcspn,
5570         expand_builtin_fputs): Remove these.
5571         (expand_builtin): Don't call the above, change calls to other
5572         expanders that changed prototype.
5573         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
5574         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
5575         fold_builtin_interclass_mathfn.
5576         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
5577         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
5578
5579         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
5580         * passes.c (init_optimization_passes): Move pass_fold_builtins
5581         after last phiopt pass.
5582         * tree-inline.c (fold_marked_statements): When folding builtins
5583         iterate over all instruction potentially generated.
5584         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
5585         earlier.
5586         (fold_gimple_call): Use it to always fold calls (into potentially
5587         multiple instructions).
5588         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
5589         calls into zero at this time.
5590         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
5591         statements generated by builtin folding.
5592
5593 2009-09-28  Nick Clifton  <nickc@redhat.com>
5594
5595         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
5596
5597 2009-09-28  Duncan Sands  <baldrick@free.fr>
5598
5599         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
5600         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
5601         (register_callback): Dispatch it.
5602         (invoke_plugin_callbacks): Incorporate in sanity check.
5603         * ggc.h (ggc_register_cache_tab): Add declaration.
5604         * ggc-common.c (ggc_register_root_tab): Simplify.
5605         (const_ggc_cache_tab_t): New typedef.
5606         (extra_cache_vec): New vector of dynamically added cache tables.
5607         (ggc_register_cache_tab): New function.
5608         (ggc_scan_cache_tab): New function.
5609         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
5610         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
5611
5612 2009-09-27  Richard Henderson  <rth@redhat.com>
5613
5614         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
5615         which we remove __builtin_stack_restore.
5616
5617 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
5618
5619         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
5620         to test for GRD_INVARIANT.
5621         (simple_rhs_p): Anything that's function_invariant_p is fine.
5622
5623 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
5624
5625         * gengtype.c (main): Use plunge_files instead of plugin_output.
5626
5627 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
5628             Rafael Avila de Espindola  <espindola@google.com>
5629
5630         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
5631         Don't print pch related info if it is false.
5632         (main): Don't print pch info in plugin mode.
5633
5634 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5635
5636         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
5637         with dw_val_class_const_double.
5638         (struct dw_val_struct): Replace val_long_long with val_double and
5639         adjust for above change.
5640         (output_loc_operands): Likewise.
5641         (add_AT_long_long): Rename into...
5642         (add_AT_double): ...this.
5643         (print_die): Replace dw_val_class_long_long with
5644         dw_val_class_const_double and adjust.
5645         (attr_checksum): Likewise.
5646         (same_dw_val_p): Likewise.
5647         (size_of_die): Likewise.
5648         (value_format): Likewise.
5649         (output_die): Likewise.
5650         (loc_descriptor) <CONST_DOUBLE>: Likewise.
5651         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
5652         instead of add_AT_long_long.
5653         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
5654         value with the precision of its type.
5655
5656 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
5657
5658         PR c/41476
5659         * c-typeck.c (build_conditional_expr): Use the readonly and
5660         volatile flags of the operand types, not of the operands itself.
5661
5662 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
5663
5664         * collect2.c (main): Look for -brtl before adding libraries.
5665
5666 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
5667
5668         * config.gcc: Update OpenBSD targets.
5669         * config/openbsd-stdint.h: New file.
5670         * config/openbsd-libpthread.h: New file.
5671         * config/openbsd.h: Update and break out LIB_SPEC definition.
5672         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
5673         * config/i386/openbsdelf.h: Correct types.
5674         * config/m68k/openbsd.h: Likewise.
5675         * config/mips/openbsd.h: Likewise.
5676         * config/vax/openbsd.h: Likewise.
5677
5678 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
5679
5680         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
5681         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
5682         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
5683         of the length and zero.
5684
5685 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5686
5687         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
5688         (FLAGS_H): Add options.h $(REAL_H).
5689         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
5690         (TREE_VECTORIZER_H): New.
5691         (EBITMAP_H): Renamed from EBIMAP_H.
5692         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
5693         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
5694         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
5695         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
5696         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
5697         (graphite-clast-to-gimple.o, graphite-dependences.o)
5698         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
5699         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
5700         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
5701         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
5702         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
5703         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
5704         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
5705         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
5706         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
5707         updated and fixed as per above changes and per
5708         check_makefile_deps.sh output.
5709
5710         PR bootstrap/40928
5711         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
5712         * configure: Regenerate.
5713
5714 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5715
5716         * doc/install.texi: Update minimum MPC version to 0.7.
5717
5718 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
5719
5720         * doc/install.texi (Binaries): Remove reference to the binary
5721         distribution CD-ROM from the FSF.
5722
5723 2009-09-26  Michael Matz  <matz@suse.de>
5724
5725         PR lto/40758
5726         PR middle-end/41470
5727         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
5728         that are mentioned in the body.
5729
5730 2009-09-26  Michael Matz  <matz@suse.de>
5731
5732         PR tree-optimization/41454
5733         * tree-ssa-dom (stmts_to_rescan): Remove variable.
5734         (tree_ssa_dominator_optimize): Don't allocate and free it.
5735         (dom_opt_leave_block): Don't iterate over it.
5736         (eliminate_redundant_computations): Don't return a value.
5737         (cprop_operand, cprop_into_stmt): Ditto.
5738         (optimize_stmt): Don't defer updating stmts.
5739
5740 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
5741
5742         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
5743         generic_parameter_die, template_parameter_pack_die,
5744         gen_formal_parameter_die, gen_subprogram_die): Adjust after
5745         renaming DW_TAG_formal_parameter_pack and
5746         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
5747         and DW_TAG_GNU_template_parameter_pack.
5748
5749 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
5750
5751         * config/v850/v850.h (FUNCTION_VALUE): Remove.
5752         * config/v850/v850.c (v850_function_value): New function.
5753         (TARGET_FUNCTION_VALUE): Define.
5754
5755 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
5756
5757         * tree-vect-stmts.c (vectorizable_call): Call
5758         mark_symbols_for_renaming after vect_finish_stmt_generation.
5759
5760         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
5761         to loc_descriptor_from_tree.
5762         (add_location_or_const_value_attribute): Pass 0 instead of 2
5763         for decl_by_reference_p decls.
5764
5765 2009-09-25  Richard Guenther  <rguenther@suse.de>
5766
5767         PR middle-end/41463
5768         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
5769         arrays again.
5770
5771 2009-09-25  Ben Elliston  <bje@au.ibm.com>
5772
5773         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
5774         after `power7'.
5775
5776 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
5777
5778         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
5779         form of instruction.
5780
5781 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5782
5783         PR middle-end/41435
5784         * fold-const.c (const_binop): Handle complex int division.
5785         * tree-complex.c (expand_complex_div_straight,
5786         expand_complex_div_wide): Update comments.
5787
5788 2009-09-24  DJ Delorie  <dj@redhat.com>
5789
5790         PR target/41456
5791         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
5792         (reg_class): Likewise.
5793         (REG_CLASS_NAMES): Likewise.
5794         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
5795         (m32c_override_options): Disable -fivopts for M32C.
5796
5797 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
5798
5799         * config/rs6000/predicates.md (indexed_or_indirect_operand):
5800         Delete VSX load/store with update support.
5801         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
5802         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
5803         (vsx_movti): Ditto.
5804         (VSX_U): Delete.
5805         (VSbit): Ditto.
5806         (VStype_load_update): Ditto.
5807         (VStype_store_update): Ditto.
5808         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5809         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
5810
5811         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
5812         load/store with update builtins.
5813
5814 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
5815
5816         * libgcc2.c (L_trampoline): Prototype for getpagesize
5817         and mprotect in WINNT case.
5818
5819 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
5820
5821         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
5822         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
5823         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
5824         'outgoing' argument.
5825         (TARGET_FUNCTION_VALUE): Define.
5826
5827 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5828
5829         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
5830
5831 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
5832
5833         PR bootstrap/41405
5834         * common.opt: Initialize dwarf_strict to -1.
5835         * toplev.c (process_options): Catch unset dwarf_strict
5836         and set to 0 for all targets not overriding.
5837         * config/darwin.c (darwin_override_options): Catch unset
5838         dwarf_strict and override to 1.
5839
5840 2009-09-24  Jeff Law  <law@redhat.com>
5841
5842         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
5843
5844 2009-09-24  Richard Guenther  <rguenther@suse.de>
5845
5846         PR tree-optimization/36143
5847         PR tree-optimization/38747
5848         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
5849         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
5850
5851 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5852
5853         PR bootstrap/41457
5854         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
5855         return false instead of gcc_unreachable ().  For CONST return the
5856         value returned by recursive call instead of always returning true.
5857         (tree_add_const_value_attribute): Return the value returned by
5858         add_const_value_attribute instead of always returning true if rtl
5859         is non-NULL.
5860
5861 2009-09-23  Justin Seyster  <jrseys@gmail.com>
5862
5863         * Makefile.in (PLUGIN_HEADERS): Include real.h.
5864
5865 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
5866
5867         * cgraphunit.c (cgraph_lower_function): Revert last change.
5868         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
5869         instead of DECL_NO_STATIC_CHAIN.
5870         * tree-cfg.c (verify_gimple_call): Likewise.
5871         * tree-nested.c (get_chain_decl, get_chain_field,
5872         convert_tramp_reference_op, convert_gimple_call): Likewise.
5873         (convert_all_function_calls): Likewise.  Always set or clear
5874         DECL_STATIC_CHAIN initially, for !n->outer clear it.
5875         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
5876         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
5877         if nested.
5878         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
5879         DECL_NO_STATIC_CHAIN.
5880         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
5881         instead of DECL_NO_STATIC_CHAIN.
5882         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
5883         decl_function_context.
5884         * varasm.c (initializer_constant_valid_p): Likewise.
5885         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
5886         (DECL_STATIC_CHAIN): ... this.
5887         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
5888         instead of DECL_NO_STATIC_CHAIN.
5889
5890 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
5891             Rafael Avila de Espindola  <espindola@google.com>
5892
5893         * gengtype.c (nb_plugin_files): Make it unsigned to match
5894         num_gt_files. Adjust other variables to avoid warnings.
5895         (main): Allocate an all zero lang_bitmap before each plugin file name
5896         to match regular file names.
5897
5898 2009-09-23  Richard Henderson  <rth@redhat.com>
5899
5900         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
5901         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
5902         static chain passed in memory.
5903         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
5904         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
5905         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
5906         STATIC_CHAIN_REGNUM defined.
5907
5908         * config/picochip/picochip-protos.h: s/class/klass/.
5909         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
5910         (picochip_static_chain): New.
5911         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
5912         (STATIC_CHAIN_INCOMING): Remove.
5913
5914         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
5915         (xtensa_static_chain): New.
5916         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
5917         (STATIC_CHAIN_INCOMING): Remove.
5918
5919 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5920
5921         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
5922         * config/pa/pa-protos.h (function_value): Remove.
5923         * config/pa/pa.c (pa_function_value): Rename from function_value.
5924         Make static, add 'outgoing' argument.
5925         (TARGET_FUNCTION_VALUE): Define.
5926
5927 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
5928
5929         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
5930         instead of cfun->machine->is_leaf.
5931         * config/avr/avr.h (machine_function): Remove is_leaf field.
5932
5933 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5934
5935         PR debug/41439
5936         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
5937         DW_OP_piece after DW_OP_stack_value, adjust size calculations
5938         for it, when DW_OP_stack_value and DW_OP_implicit_value has
5939         the same size, prefer DW_OP_stack_value.
5940         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
5941         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
5942
5943 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5944
5945         PR debug/41353
5946         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
5947
5948 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
5949
5950         PR debug/41248
5951         * cfgexpand.c (convert_debug_memory_address): New.
5952         (expand_debug_expr): Convert base address and offset to the same
5953         mode.  Use it to convert addresses to other modes.  Accept
5954         ptr_mode addresses.
5955
5956 2009-09-23  Dodji Seketeli <dodji@redhat.com>
5957
5958         PR debug/41065
5959         * function.h (types_used_by_vars_hash): Declare new hash table.
5960         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
5961         equality and hash function for the hash table.
5962         (types_used_by_cur_var_decl): Declare a new global chained list.
5963         (types_used_by_var_decl_insert): Declare new function.
5964         * function.c (types_used_by_vars_hash): Define the hashtable ...
5965         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
5966         its equality and hash functions.
5967         (hash_types_used_by_vars_entry): New hash helper.
5968         (types_used_by_cur_var_decl): Define the global chained list.
5969         (used_types_insert): Update the list of types used by the global
5970         variable being parsed.
5971         (types_used_by_var_decl_insert): Define new function.
5972         * c-common.h (record_types_used_by_current_var_decl): Declare ...
5973         * c-common.c (record_types_used_by_current_var_decl): ... new
5974         function.
5975         * c-decl.c (finish_decl): Record the types used by the global
5976         variable declaration we've just parsed.
5977         * dwarf2out.c (premark_used_types): Insert a new line between
5978         comment and function.
5979         (premark_used_types_helper): Fix comment.
5980         (premark_types_used_by_global_vars_helper,
5981         premark_types_used_by_global_vars): New functions.
5982         (prune_unused_types): Do not prune types used by global variables.
5983
5984 2009-09-23  Richard Guenther  <rguenther@suse.de>
5985
5986         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
5987         produced for bigendian targets with promoted subregs.
5988
5989 2009-09-23  Richard Guenther  <rguenther@suse.de>
5990
5991         * value-prof.c (gimple_ic): Purge old EH edges only after building
5992         the new ones.
5993
5994 2009-09-23  Nick Clifton  <nickc@redhat.com>
5995
5996         * config/arc/arc.c (arc_trampoline_init): Fix typo.
5997
5998 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
5999
6000         PR bootstrap/41405
6001         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
6002
6003         PR bootstrap/41436
6004         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
6005         on non-nested functions.
6006
6007 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
6008             Jan Hubicka  <jh@suse.cz>
6009
6010         * dwarf2out.c (loc_list_plus_const): Only define if
6011         DWARF2_DEBUGGING_INFO.
6012         (address_of_int_loc_descriptor): Likewise.
6013
6014         PR debug/41411
6015         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
6016
6017 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
6018
6019         PR c/39779
6020         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
6021         constant is more than zero.
6022
6023 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
6024
6025         PR target/40473
6026         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
6027         call final to emit non-scheduled prologue, instead insert at entry.
6028
6029 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6030             Joseph S. Myers  <joseph@codesourcery.com>
6031
6032         * doc/install.texi (*-*-freebsd*): Add proper format codes.
6033
6034 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6035             Rafael Avila de Espindola  <espindola@google.com>
6036
6037         * gengtype.c (is_file_equal): New function.
6038         (close_output_files): Use is_file_equal. Free of->buf.
6039
6040 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
6041             Rafael Avila de Espindola  <espindola@google.com>
6042
6043         * gengtype.c (write_types, write_local): Add the output_header
6044         argument. Update all callers.
6045
6046 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
6047
6048         * dwarf2out.c (template_parameter_pack_die,
6049         gen_formal_parameter_pack_die ): New functions.
6050         (make_ith_pack_parameter_name): Remove this function.
6051         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
6052         DW_TAG_formal_parameter_pack.
6053         (gen_generic_params_dies): Represent each template parameter pack
6054         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
6055         represented by usual DW_TAG_template_*_parameter DIEs that are
6056         children of the DW_TAG_template_parameter_pack element DIE.
6057         (generic_parameter_die): This doesn't deal with parameter pack
6058         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
6059         of parameter pack DIEs.
6060         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
6061         in certain cases, e.g. for pack elements.
6062         (gen_formal_types_die, gen_decl_die): Adjust usage of
6063         gen_formal_parameter_die.
6064         (gen_subprogram_die): Represent each function parameter pack by a
6065         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
6066         represented by usual DW_TAG_formal_parameter DIEs that are children
6067         of the DW_TAG_formal_parameter_pack DIE. Remove references to
6068         ____builtin_va_alist decls as no part of the compiler uses those
6069         anymore.
6070         * langhooks.h (struct lang_hooks_for_decls): Add
6071         function_parm_expanded_from_pack_p, get_generic_function_decl
6072         and function_parameter_pack_p hooks.  Fix comment for
6073         get_innermost_generic_parms hook.
6074         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
6075         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
6076         macros and use them to initialize lang_hook.
6077
6078 2009-09-22  Richard Henderson  <rth@redhat.com>
6079
6080         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
6081         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
6082         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
6083         on TRAMPOLINE_TEMPLATE.
6084         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
6085         TRAMPOLINE_ADJUST_ADDRESS.
6086         * targhooks.c (default_asm_trampoline_template): Remove.
6087         (default_trampoline_adjust_address): Remove.
6088         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
6089         * targhooks.h: Update decls.
6090
6091 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6092
6093         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
6094         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
6095         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
6096
6097 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
6098
6099         PR debug/41295
6100         * reload1.c (reload): Reset debug insns with pseudos without
6101         equivalences.
6102
6103 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
6104
6105         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
6106         unconditional true for decimal float modes.
6107         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
6108         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
6109
6110 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
6111
6112         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
6113         Enable a new case for __FreeBSD__ >= 7.
6114         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
6115         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
6116         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
6117         and USE_LD_AS_NEEDED.
6118
6119         * doc/install.texi (*-*-freebsd*): Update target information.
6120
6121 2009-09-22  Richard Guenther  <rguenther@suse.de>
6122
6123         PR middle-end/41395
6124         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
6125         arrays really properly.
6126
6127 2009-09-22  Richard Henderson  <rth@redhat.com>
6128
6129         PR target/41246
6130         * target.h (struct gcc_target): Add asm_out.trampoline_template,
6131         calls.static_chain, calls.trampoline_init,
6132         calls.trampoline_adjust_address.
6133         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6134         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6135         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6136         * builtins.c (expand_builtin_setjmp_receiver): Use
6137         targetm.calls.static_chain; only clobber registers.
6138         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
6139         set up memory attributes properly for the trampoline block.
6140         (expand_builtin_adjust_trampoline): Use
6141         targetm.calls.trampoline_adjust_address.
6142         * calls.c (prepare_call_address): Add fndecl argument.  Use
6143         targetm.calls.static_chain.
6144         * df-scan.c (df_need_static_chain_reg): Remove.
6145         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
6146         consolodate static chain handling.
6147         * doc/tm.texi: Document new hooks.
6148         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
6149         (init_emit_regs): Don't initialize them.
6150         * expr.h (prepare_call_address): Update decl.
6151         * final.c (profile_function): Use targetm.calls.static_chain.
6152         * function.c (expand_function_start): Likewise.
6153         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
6154         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
6155         only clobber registers.
6156         * targhooks.c (default_static_chain): New.
6157         (default_asm_trampoline_template, default_trampoline_init): New.
6158         (default_trampoline_adjust_address): New.
6159         * targhooks.h: Declare them.
6160         * varasm.c (assemble_trampoline_template): Use
6161         targetm.asm_out.trampoline_template.  Make the memory block const
6162         and set its size.
6163
6164         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
6165         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
6166         differences into the TARGET_ABI_OPEN_VMS code block.
6167         (TARGET_TRAMPOLINE_INIT): New.
6168         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
6169         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
6170         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
6171         (INITIALIZE_TRAMPOLINE): Remove.
6172
6173         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
6174         (TRAMPOLINE_TEMPLATE): Merge with ...
6175         (INITIALIZE_TRAMPOLINE): ... this and move ...
6176         * config/arc/arc.c (arc_trampoline_init): ... here.
6177         (TARGET_TRAMPOLINE_INIT): New.
6178
6179         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6180         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6181         (arm_asm_trampoline_template): New.
6182         (arm_trampoline_init, arm_trampoline_adjust_address): New.
6183         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
6184         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
6185         code to arm_asm_trampoline_template.
6186         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
6187         arm_trampoline_adjust_address.
6188         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
6189         adjust for target hook parameters.
6190
6191         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
6192         Remove.
6193
6194         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
6195         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
6196         (bfin_trampoline_init): Rename from initialize_trampoline;
6197         make static; update for target hook parameters.
6198         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6199         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
6200         bfin_asm_trampoline_template.
6201         (INITIALIZE_TRAMPOLINE): Remove.
6202
6203         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6204         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
6205         cris_trampoline_init): New.
6206         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
6207         cris_asm_trampoline_template.
6208         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
6209         adjust for target hook parameters.
6210
6211         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
6212
6213         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6214         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
6215         fr30_trampoline_init): New.
6216         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
6217         fr30_asm_trampoline_template.
6218         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
6219         adjust for target hook parameters.
6220
6221         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
6222         (frv_trampoline_init): Rename from frv_initialize_trampoline;
6223         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
6224         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
6225         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
6226
6227         * config/h8300/h8300.c (h8300_trampoline_init): New.
6228         (TARGET_TRAMPOLINE_INIT): New.
6229         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
6230         to h8300_trampoline_init and adjust for hook parameters.
6231
6232         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
6233         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
6234         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
6235         make static; adjust for hook parameters.
6236         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
6237
6238         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6239         (TARGET_TRAMPOLINE_INIT): New.
6240         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
6241         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
6242         iq2000_asm_trampoline_template.
6243         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
6244         (TRAMPOLINE_CODE_SIZE): New.
6245         (TRAMPOLINE_SIZE): Use it.
6246         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
6247
6248         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
6249         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
6250         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
6251         adjust for hook parameters.
6252         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
6253
6254         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
6255         (m32r_trampoline_init): New.
6256         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
6257         m32r_trampoline_init.
6258
6259         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
6260         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
6261         make static; update for hook parameters.
6262         * config/m68hc11/m68hc11-protos.h: Update.
6263         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
6264
6265         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6266         (TARGET_TRAMPOLINE_INIT): New.
6267         (mcore_function_value): Fix typo.
6268         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
6269         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
6270         to mcore_asm_trampoline_template.
6271         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
6272
6273         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
6274         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
6275         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
6276         update for hook parameters.
6277         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
6278
6279         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6280         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6281         mips_trampoline_init): New.
6282         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
6283         mips_asm_trampoline_template.
6284         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
6285         update for hook parameters.
6286
6287         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6288         (TARGET_TRAMPOLINE_INIT): New.
6289         (mmix_trampoline_size): Remove.
6290         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
6291         make static.  Remove out-of-date tetra vs octa comment.
6292         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
6293         make static; update for hook parameters.
6294         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
6295         (INITIALIZE_TRAMPOLINE): Remove.
6296         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
6297         (TRAMPOLINE_ALIGNMENT): New.
6298         * gcc/config/mmix/mmix-protos.h: Update.
6299
6300         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6301         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6302         mn10300_trampoline_init): New.
6303         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
6304         mn10300_asm_trampoline_template.
6305         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
6306
6307         * config/moxie/moxie.c (moxie_static_chain,
6308         moxie_asm_trampoline_template, moxie_trampoline_init,
6309         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
6310         TARGET_TRAMPOLINE_INIT): New.
6311         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
6312         moxie_trampoline_init.
6313         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
6314         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
6315
6316         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
6317         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
6318         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
6319         pa_trampoline_adjust_address): New.
6320         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
6321         pa_asm_trampoline_template.
6322         (TRAMPOLINE_ALIGNMENT): New.
6323         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
6324         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
6325         adjust for hook parameters.
6326         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
6327
6328         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
6329         (TARGET_TRAMPOLINE_INIT): New.
6330         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
6331         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
6332
6333         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
6334
6335         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
6336         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
6337         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
6338         make static; adjust parameters for the hook.
6339         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
6340
6341         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
6342         s390_trampoline_template; make static.
6343         (s390_trampoline_init): Rename from s390_initialize_trampoline;
6344         make static; adjust for target hook.
6345         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
6346         * config/s390/s390-protos.h: Remove trampoline decls.
6347         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
6348         (TRAMPOLINE_TEMPLATE): Remove.
6349         (TRAMPOLINE_ALIGNMENT): New.
6350
6351         * config/score/score-protos.h (score_initialize_trampoline): Remove.
6352         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6353         (TARGET_TRAMPOLINE_INIT): New.
6354         (score_asm_trampoline_template): New.
6355         (score_trampoline_init): Rename from score_initialize_trampoline;
6356         make static; adjust for hook parameters.
6357         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
6358         score[37]_asm_trampoline_template.
6359         (INITIALIZE_TRAMPOLINE): Remove.
6360         * config/score/score3.c (score3_asm_trampoline_template): New.
6361         (score3_trampoline_init): Rename from score3_initialize_trampoline;
6362         adjust for target hook.
6363         * config/score/score7.c (score7_asm_trampoline_template): New.
6364         (score7_trampoline_init): Rename from score7_initialize_trampoline;
6365         adjust for target hook.
6366         * config/score/score3.h, config/score/score7.h: Update.
6367
6368         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
6369         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
6370         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
6371         (sh_trampoline_init): Rename from sh_initialize_trampoline;
6372         make static; adjust for target hook parameters.
6373         (sh_trampoline_adjust_address): New.
6374         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
6375         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
6376
6377         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
6378         (sparc32_initialize_trampoline): Rename from
6379         sparc_initialize_trampoline; make static; replace tramp parameter
6380         with m_tramp and update memory accesses.
6381         (sparc64_initialize_trampoline): Similarly.
6382         (sparc_trampoline_init): New.
6383         * config/sparc/sparc-protos.h: Remove trampoline decls.
6384         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
6385         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
6386
6387         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
6388         (array_to_constant): Make ARR parameter const.
6389         (spu_trampoline_init): Rename from spu_initialize_trampoline;
6390         make static; update for hook parameters.
6391         * config/spu/spu-protos.h: Update decls.
6392         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
6393
6394         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
6395         from xstormy16_initialize_trampoline; make static; update for
6396         hook parameters.
6397         (TARGET_TRAMPOLINE_INIT): New.
6398         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
6399
6400         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6401         (TARGET_TRAMPOLINE_INIT): New.
6402         (v850_can_eliminate): Make static.
6403         (v850_asm_trampoline_template, v850_trampoline_init): New.
6404         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
6405         v850_asm_trampoline_template.
6406         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
6407         and adjust for target hook parameters.
6408
6409         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6410         (TARGET_TRAMPOLINE_INIT): New.
6411         (vax_asm_trampoline_template, vax_trampoline_init): New.
6412         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
6413         vax_asm_trampoline_template.
6414         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
6415
6416         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
6417         (TARGET_TRAMPOLINE_INIT): New.
6418         (xtensa_asm_trampoline_template): Rename from
6419         xtensa_trampoline_template; make static.
6420         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
6421         make static; update for hook parameters.
6422         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
6423         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
6424         (INITIALIZE_TRAMPOLINE): Remove.
6425
6426         * config/i386/i386.c (ix86_function_regparm): Do not issue an
6427         error for nested functions with regparm=3.
6428         (ix86_compute_frame_layout): Adjust frame pointer offset for
6429         ix86_static_chain_on_stack.
6430         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
6431         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
6432         don't reset to UNITS_PER_WORD.
6433         (ix86_emit_leave): Adjust ix86_cfa_state.
6434         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
6435         (ix86_static_chain): New.
6436         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
6437         make static; update for target hook parameters; use ix86_static_chain.
6438         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
6439         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
6440         (INITIALIZE_TRAMPOLINE): Remove.
6441         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
6442         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
6443         to the end.  Add static_chain_on_stack.
6444         (ix86_static_chain_on_stack): New.
6445
6446         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
6447         (m68k_output_mi_thunk): Don't use static_chain_rtx.
6448         (m68k_trampoline_init): New.
6449         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
6450         m68k_trampoline_init and adjust for hook parameters.
6451         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
6452         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
6453
6454 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6455
6456         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
6457         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
6458
6459         * reload1.c (reload): Call wrap_constant when substituting
6460         reg for equiv inside of DEBUG_INSNs.
6461
6462         PR bootstrap/41405
6463         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
6464         add_call_src_coords_attributes, add_high_low_attributes,
6465         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
6466         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
6467         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
6468         when -gdwarf-2 -gstrict-dwarf.
6469         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
6470         -gdwarf-[23] -gstrict-dwarf.
6471         (address_of_int_loc_descriptor, loc_descriptor,
6472         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
6473         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
6474         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
6475
6476 2009-09-22  Richard Guenther  <rguenther@suse.de>
6477
6478         PR tree-optimization/41428
6479         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
6480         (ccp_finalize): Pass it to substitute_and_fold.
6481
6482 2009-09-22  Richard Guenther  <rguenther@suse.de>
6483
6484         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
6485         (substitute_and_fold): Adjust prototype.
6486         * tree-vrp.c (vrp_evaluate_conditional): Make static.
6487         (simplify_stmt_using_ranges): Likewise.
6488         (fold_predicate_in): Move here from tree-ssa-propagate.c.
6489         (vrp_fold_stmt): New function.
6490         (vrp_finalize): Pass it to substitute_and_fold.
6491         * tree-flow.h (vrp_evaluate_conditional): Remove.
6492         (simplify_stmt_using_ranges): Likewise.
6493         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
6494         * tree-ssa-copy.c (fini_copy_prop): Likewise.
6495         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
6496         member.
6497         (fold_predicate_in): Move to tree-vrp.c.
6498         (substitute_and_fold): Use the callback instead of calling into
6499         tree-vrp.c functions directly.
6500
6501 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
6502
6503         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
6504         comparison warning on rs6000.
6505
6506         PR middle-end/41429
6507         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
6508         GIMPLE_EH_MUST_NOT_THROW cleanup.
6509         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
6510
6511 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
6512
6513         PR middle-end/41260
6514         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
6515         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
6516         LIB_SPEC for darwin10 and later since it always uses the unwinder in
6517         libSystem which is derived from the gcc 4.2.1 unwinder.
6518
6519 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6520
6521         PR middle-end/41357
6522         * varasm.c (default_encode_section_info): Copy TLS model into
6523         sym_ref flags regardless of backend support for TLS, for all
6524         model types except TLS_MODEL_EMULATED.
6525
6526 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6527
6528         PR bootstrap/41404
6529         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
6530         we can handle it correctly.
6531
6532 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6533
6534         * doc/install.texi (os2): Remove section.
6535
6536 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
6537
6538         * doc/standards.texi (Objective-C): Adjust two URLs.
6539
6540 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
6541
6542         * tree-tailcall.c (process_assignment): Don't check if a
6543         multiplication or an addition are already present.
6544         (find_tail_calls): Combine multiple additions and multiplications.
6545         (adjust_accumulator_values): Emit accumulators.
6546
6547 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
6548
6549         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
6550         xmm register restore.
6551
6552 2009-09-21  Jan Hubicka  <jh@suse.cz>
6553
6554         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
6555         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
6556         restore at the end.
6557
6558 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
6559
6560         * stor-layout.c (layout_type): Remove obsolete code.
6561
6562 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
6563
6564         PR middle-end/41395
6565         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
6566
6567 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6568
6569         PR middle-end/30789
6570         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
6571         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
6572         (fold_builtin_2, do_mpc_arg1): Update accordingly.
6573         * fold-const.c (const_binop): Likewise.
6574         * real.h (do_mpc_arg2): Update prototype.
6575
6576 2009-09-20  Jan Hubicka  <jh@suse.cz>
6577
6578         * dwarf2out.c (add_const_value_attribute): Return true if successful.
6579         (add_location_or_const_value_attribute): Rewrite using
6580         loc_list_from_tree.
6581         (tree_add_const_value_attribute): Return true if successful.
6582         (tree_add_const_value_attribute_for_decl): Likewise.
6583
6584         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
6585         (loc_descriptor): ... here;
6586         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6587         (cst_pool_loc_descr): Break out from ...; do not reffer constant
6588         pool items that was not marked for output.
6589         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
6590         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6591         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
6592         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
6593         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
6594         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
6595         DW_OP_stack_value to get address of items that are not available
6596         as addresses.
6597         (dw_loc_list): Handle single element lists correctly.
6598
6599 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
6600             Pascal Obry  <obry@adacore.com>
6601
6602         * unwind-dw2-fde.c (classify_object_over_fdes):
6603         Cast the constant 1 to _Unwind_Ptr.
6604         (add_fdes): Likewise.
6605         (linear_search_fdes): Likewise.
6606
6607 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
6608
6609         * stor-layout.c (set_sizetype): Avoid useless type copy.
6610
6611 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
6612
6613         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
6614         feature check.
6615         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
6616         * configure, config.in: Regenerate.
6617         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
6618         DW_EH_PE_absptr.
6619         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
6620         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
6621         for global data if the output could be used in a shared library.
6622         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
6623         to 0 if TARGET_WRITABLE_EH_FRAME.
6624
6625 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
6626
6627         PR rtl-optimization/39886
6628         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
6629         just when insn is equal to BB_END (bb).
6630
6631 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
6632
6633         * config/mips/mips.opt (mrelax-pic-calls): New option.
6634         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
6635         the file.
6636         (mips_unspec_call): Change "unspec_call" expander into this.
6637         (mips_strip_unspec_call): New function.
6638         (mips_got_load): Call mips_unspec_call instead of
6639         gen_unspec_call<mode>.
6640         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
6641         MIPS_CALL.
6642         (mips_cfg_in_reorg): New function.
6643         (mips16_lay_out_constants): Use it to decide whether to call
6644         CFG-aware insn splitting.
6645         (r10k_insert_cache_barriers): Move CFG set-up code from here to
6646         mips_reorg.  Move DF set-up code from here ...
6647         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
6648         from here.
6649         (mips_reorg): Call mips_df_reorg instead of
6650         r10k_insert_cache_barriers.  Move CFG set-up code here from
6651         r10k_insert_cache_barriers.
6652         (mips_call_expr_from_insn): New function.
6653         (mips_pic_call_symbol_from_set): Likewise.
6654         (mips_find_pic_call_symbol): Likewise.
6655         (mips_annotate_pic_call_expr): Likewise.
6656         (mips_get_pic_call_symbol): Likewise.
6657         (mips_annotate_pic_calls): Likewise.
6658         (mips_override_options): Disable -mrelax-pic-calls unless PIC
6659         calls are used.
6660         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
6661         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
6662         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
6663         directive.
6664         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
6665         (unspec_call<mode>): Remove it.
6666         (sibcall_internal, sibcall_value_internal,
6667         sibcall_value_multiple_internal, call_internal, call_split,
6668         call_value_internal, call_value_split,
6669         call_value_multiple_internal, call_value_multiple_split): Pass
6670         SIZE_OPNO to MIPS_CALL.
6671         (call_internal_direct, call_direct_split,
6672         call_value_internal_direct, call_value_direct_split): Pass -1 as
6673         SIZE_OPNO to MIPS_CALL.
6674         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
6675         * configure: Regenerate.
6676         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
6677         and -mno-relax-pic-calls.
6678         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
6679
6680 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6681
6682         PR bootstrap/35619
6683         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
6684         in the directory this rule is called from, rather than the
6685         toplevel 'gcc' directory, to fix in-tree build.
6686
6687 2009-09-19  Chris Demetriou  <cgd@google.com>
6688
6689         PR preprocessor/28435:
6690         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
6691         to cpplib that the preprocessor output is needed.
6692
6693 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
6694
6695         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
6696         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
6697         *return_and_restore_fpregs_<mode>,
6698         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
6699
6700         PR bootstrap/41397
6701         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
6702         instead of assuming it has always a REG inside of it.
6703
6704 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
6705
6706         * config/freebsd.h: Update comment on types.
6707         (WINT_TYPE): Define.
6708
6709 2009-09-18  Jason Merrill  <jason@redhat.com>
6710
6711         * c.opt: Add -fno-deduce-init-list.
6712
6713 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
6714
6715         * value-prof.c (interesting_stringop_to_profile_p): Added output
6716         argument to indicate which parameter is the size parameter.
6717         * value-prof.c (gimple_stringop_fixed_value): Use
6718         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
6719         * value-prof.c (gimple_stringops_transform): Update call sites to
6720         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
6721
6722 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
6723
6724         PR target/38288
6725         From David Binderman <dcb314@hotmail.com>:
6726         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
6727         local variable f.  Remove stale comments.
6728         (ix86_compute_frame_layout): Remove useless local variable total_size.
6729         Remove #if 0'd code.
6730         (legitimate_address_p): Remove useless local variables
6731         reason_rtx and reason.
6732         (ix86_split_copysign_const): Remove useless local variable op1.
6733         (scale_counter): Remove useless local variable piece_size_mask.
6734
6735 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
6736
6737         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
6738         output decl.
6739
6740 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
6741
6742         PR target/40913
6743         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
6744
6745 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
6746
6747         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
6748         TYPE_STUB_DECL.
6749
6750 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
6751
6752         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
6753         DW_OP_implicit_value even without dwarf_version 4.
6754
6755 2009-09-17  Jan Hubicka  <jh@suse.cz>
6756
6757         * dwarf2out.c: Include tree-pass.h and gimple.h.
6758         (loc_list_plus_const): New function.
6759         (loc_descriptor_from_tree_1): Rename to ...
6760         (loc_descriptor_from_tree): ... remove original.
6761         (loc_list_from_tree): New function.
6762         (add_AT_location_description): Accept location list.
6763         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
6764         (concatn_mem_loc_descriptor): Remove.
6765         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
6766         returning NULL.
6767         (secname_for_decl): Move up.
6768         (hidden_reference_p): New function; break out from ...
6769         (loc_by_refernece): ... here; move up.
6770         (dw_loc_list): New function.
6771         (single_element_loc_list): New function.
6772         (single_element_loc_list_p): New function.
6773         (add_loc_descr_to_each): New function.
6774         (add_loc_list): New function.
6775         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
6776         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
6777         add diagnostics why expansion failed.
6778         (add_location_or_const_value_attribute): Support location lists.
6779         (add_bound_info): Likewise.
6780         (descr_info_loc): Update call of loc_descriptor_from_tree.
6781         (gen_variable_die): Work on location lists.
6782         * final.c (pass_final): Add dump file.
6783         * Makefile.in (dwarf2out.o): Add new dependencies.
6784
6785 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
6786
6787         PR c/41049
6788         * real.c decimal_from_integer, decimal_integer_string): New.
6789         (real_from_integer): Use them as special case for decimal float.
6790         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
6791         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
6792         Do not append zero after the decimal point in string to convert.
6793
6794 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
6795
6796         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
6797         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
6798
6799 2009-09-17  Martin Jambor  <mjambor@suse.cz>
6800
6801         * common.opt (fipa-sra): New switch.
6802         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
6803         * timevar.def (TV_IPA_SRA): New timevar.
6804         * params.def (ipa-sra-ptr-growth-factor): New parameter.
6805         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
6806         * tree-sra.c: Include cgraph.c.
6807         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
6808         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
6809         and grp_not_necessarilly_dereferenced.
6810         (func_param_count): New variable.
6811         (encountered_apply_args): New variable.
6812         (bb_dereferences): New variable.
6813         (final_bbs): New variable.
6814         (no_accesses_representant): New variable.
6815         (no_accesses_p): New function.
6816         (dump_access): Dump the new fields.
6817         (sra_initialize): Set encountered_apply_args to false.
6818         (get_ssa_base_param): New function.
6819         (mark_parm_dereference): New function.
6820         (create_access): Caring for INIDRECT_REFs and different handling of
6821         varialble length accesses in early IPA SRA.  Store the stmt - a new
6822         parameter - to the new access.
6823         (build_access_from_expr_1): New parameter stmt, passed to
6824         create_access.  Handle INDIRECT_REFs.
6825         (build_access_from_expr): Pass the current statement to
6826         build_access_from_expr_1.
6827         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
6828         passes.
6829         (build_accesses_from_assign): Pass the current statement to
6830         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
6831         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
6832         final_bbs when necessary.  Check for calls to __builtin_apply_args.
6833         Fixup EH info if anythng was changed.
6834         (is_unused_scalar_param): New function.
6835         (ptr_parm_has_direct_uses): New function.
6836         (find_param_candidates): New function.
6837         (mark_maybe_modified): New function.
6838         (analyze_modified_params): New function.
6839         (propagate_dereference_distances): New function.
6840         (dump_dereferences_table): New function.
6841         (analyze_caller_dereference_legality): New function.
6842         (unmodified_by_ref_scalar_representative): New function.
6843         (splice_param_accesses): New function.
6844         (decide_one_param_reduction): New function.
6845         (enum ipa_splicing_result): New type.
6846         (splice_all_param_accesses): New function.
6847         (get_param_index): New function.
6848         (turn_representatives_into_adjustments): New function.
6849         (analyze_all_param_acesses): New function.
6850         (get_replaced_param_substitute): New function.
6851         (get_adjustment_for_base): New function.
6852         (replace_removed_params_ssa_names): New function.
6853         (sra_ipa_reset_debug_stmts): New function.
6854         (sra_ipa_modify_expr): New function.
6855         (sra_ipa_modify_assign): New function.
6856         (convert_callers): New function.
6857         (modify_function): New function.
6858         (ipa_sra_preliminary_function_checks): New function.
6859         (ipa_early_sra): New function.
6860         (ipa_early_sra_gate): New function.
6861         (pass_early_ipa_sra): New variable.
6862         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
6863
6864 2009-09-17  Michael Matz  <matz@suse.de>
6865
6866         PR middle-end/41347
6867         * tree.c (build_type_attribute_qual_variant): Export.
6868         * tree.h (build_type_attribute_qual_variant): Declare.
6869         * tree-inline.c (remap_type_1): Use it to build variants with
6870         the original qualifiers and attributes.
6871
6872 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6873
6874         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
6875         without a fallthrough edge.
6876
6877 2009-09-16  DJ Delorie  <dj@redhat.com>
6878
6879         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
6880         chip and ignore the "fast_interrupt" attribute if so.
6881
6882 2009-09-16  Richard Henderson  <rth@redhat.com>
6883
6884         PR middle-end/41360
6885         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
6886         barrier fix.
6887
6888 2009-09-16  Richard Henderson  <rth@redhat.com>
6889
6890         PR target/41246
6891         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
6892         is set only if DECL_NO_STATIC_CHAIN is unset.
6893         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
6894         (FOR_EACH_NEST_INFO): New.
6895         (walk_all_functions): Use it.
6896         (finalize_nesting_tree): Likewise.
6897         (unnest_nesting_tree): Likewise.
6898         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
6899         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
6900         (convert_gimple_call): Early out if gimple_call_chain already set.
6901         (convert_all_function_calls): Iterate until no new functions
6902         require a static chain.
6903         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
6904         when building a trampoline.  Use dump_function_to_file instead
6905         of dump_function.
6906         (lower_nested_functions): Open dump_file.  Validate that decls
6907         that have DECL_NO_STATIC_CHAIN from the front end don't have that
6908         bit reset by this pass.
6909
6910 2009-09-16  Michael Matz  <matz@suse.de>
6911
6912         PR fortran/41212
6913         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
6914         shorten decl_common_unused.
6915         (DECL_RESTRICTED_P): New accessor.
6916         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
6917         to disambiguate marked decls and restrict pointers.
6918
6919 2009-09-16  Richard Henderson  <rth@redhat.com>
6920
6921         PR middle-end/41360
6922         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
6923
6924 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
6925
6926         * integrate.c (set_block_abstract_flags): Call
6927         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
6928
6929 2009-09-16  Richard Guenther  <rguenther@suse.de>
6930
6931         PR middle-end/34011
6932         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
6933         as non-aliased.
6934
6935 2009-09-16  DJ Delorie  <dj@redhat.com>
6936             Kaz Kojima  <kkojima@gcc.gnu.org>
6937
6938         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
6939         (sh_expand_prologue): Update calls to output_stack_adjust.
6940         (sh_expand_epilogue): Likewise.
6941
6942 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
6943
6944         PR bootstrap/41349
6945         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
6946         trying to limit the extent of searches in the insn stream.
6947
6948 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
6949             Jakub Jelinek  <jakub@redhat.com>
6950
6951         PR target/41175
6952         PR target/40677
6953         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
6954         problem.
6955         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
6956         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
6957         (rs6000_savres_strategy): Always save FP registers inline if the
6958         target doesn't support hardware double-precision.  Set the above
6959         bits in return value when needed.
6960         (rs6000_savres_routine_sym): Fix computation for cache selector.
6961         Mark the generated symbol as a function.  Rename exitp argument to
6962         lr.  Move code for determining the name of the symbol...
6963         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
6964         getting the names right on AIX and 64-bit Linux.
6965         (savres_routine_name): New variable.
6966         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
6967         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
6968         on what the target routine uses as a base register.  If savep && lr
6969         describe saving of r0 into memory slot.
6970         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
6971         line calls for AIX ABI.
6972         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
6973         determine FP save/restore functions.
6974         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
6975         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
6976         gen_addsi3.
6977         (rs6000_emit_epilogue): Adjust computation of restore_lr.
6978         Duplicate restoration of LR and execute the appropriate one
6979         depending on whether GPRs are being restored inline.  Set r11 from
6980         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
6981         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
6982         Fix out of line calls for AIX ABI.
6983         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
6984         New insn.
6985         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
6986         register 11.
6987         (*restore_gpregs_spe): Likewise.
6988         (*return_and_restore_gpregs_spe): Likewise.
6989         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6990         Define to empty string unconditionally.
6991         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
6992         Define to empty string unconditionally.
6993         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
6994         !TARGET_64BIT.
6995
6996 2009-09-15  Jan Hubicka  <jh@suse.cz>
6997
6998         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
6999         * params.def (inline-insns-auto): Likewise.
7000
7001 2009-09-15  Martin Jambor  <mjambor@suse.cz>
7002
7003         * ipa-inline.c (estimate_function_body_sizes): Dump info about
7004         individual statements only at TDF_DETAILS dump level.  Format
7005         source for 80 characters per line.
7006
7007 2009-09-15  Christian Bruel  <christian.bruel@st.com>
7008
7009         * regrename.c (do_replace): Update REG_DEAD notes.
7010
7011 2009-09-15  Revital Eres  <eres@il.ibm.com>
7012
7013         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
7014         * targhooks.c (default_builtin_support_vector_misalignment):
7015         New builtin function.
7016         * targhooks.h (default_builtin_support_vector_misalignment):
7017         Declare.
7018         * target.h (builtin_support_vector_misalignment):
7019         New field in struct gcc_target.
7020         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
7021         new builtin function.
7022         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
7023         Define.
7024         * config/rs6000/rs6000.c
7025         (rs6000_builtin_support_vector_misalignment): New function.
7026         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
7027
7028 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
7029
7030         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
7031         instead of INSN_P.
7032         (bfin_optimize_loop): Likewise.
7033         (bfin_gen_bundles): Likewise.
7034         (workaround_speculation): Likewise.
7035         (find_load): Return NULL_RTX for debug_insn.
7036
7037 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
7038
7039         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
7040         (sminsf3): Ditto.
7041
7042 2009-09-14  DJ Delorie  <dj@redhat.com>
7043
7044         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
7045         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
7046         VLIW mode.
7047
7048 2009-09-14  Richard Henderson  <rth@redhat.com>
7049             Jakub Jelinek  <jakub@redhat.com>
7050
7051         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
7052         * cfgbuild.c (make_edges): Handle asm goto.
7053         * cfglayout.c (fixup_reorder_chain): Likewise.
7054         * cfgrtl.c (patch_jump_insn): Likewise.
7055         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
7056         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
7057         (gimple_build_asm_vec): Add and use labels parameter.
7058         (gimple_build_asm): Remove.
7059         (walk_gimple_asm): Walk labels too.
7060         * gimple.def (GIMPLE_ASM): Update docs.
7061         * gimple.h: Update decls.
7062         (struct gimple_statement_asm): Change nc to use unsigned char;
7063         add nl member.
7064         (gimple_asm_nlabels): New.
7065         (gimple_asm_label_op, gimple_asm_set_label_op): New.
7066         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
7067         into gimple_build_asm_vec.
7068         * jump.c (mark_jump_label_asm): New.
7069         (mark_jump_label): Use it.
7070         (redirect_jump_1): Handle asm goto.
7071         (invert_jump_1): Soft fail if X is null.
7072         * recog.c (extract_asm_operands): New.
7073         (asm_noperands): Use it; handle asm labels.
7074         (decode_asm_operands): Use extract_asm_operands.
7075         (asm_operand_ok): Properly handle empty string.
7076         * reg-stack.c (get_asm_operands_in_out): Rename from
7077         get_asm_operand_n_inputs; use extract_asm_operands; return both
7078         inputs and outputs by reference; update all callers.
7079         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
7080         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
7081         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
7082         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
7083         (extract_asm_operands): Declare.
7084         * stmt.c (expand_asm_operands): Add and use labels parameter.
7085         (check_unique_operand_names): Likewise.
7086         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
7087         (expand_asm_stmt): Handle asm labels.
7088         * tree-cfg.c (make_gimple_asm_edges): New.
7089         (make_edges): Use it.
7090         (cleanup_dead_labels): Handle asm labels.
7091         (is_ctrl_altering_stmt): Likewise.
7092         (gimple_redirect_edge_and_branch): Likewise.
7093         * tree.def (ASM_EXPR): Add 5th operand.
7094         * tree.h (ASM_LABELS): New.
7095         (resolve_asm_operand_names): Update decl.
7096
7097         * c-parser.c (c_parser_asm_statement): Parse asm goto.
7098         (c_parser_asm_goto_operands): New.
7099         * c-tree.h (build_asm_expr): Update decl.
7100         * c-typeck.c (build_asm_expr): Add and use labels parameter.
7101         * doc/extend.texi: Document asm goto.
7102
7103 2009-09-14  Richard Henderson  <rth@redhat.com>
7104
7105         * except.h: Update declarations.
7106         (struct pointer_map_t): Forward declare.
7107         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
7108         (struct eh_landing_pad_d, eh_landing_pad): New.
7109         (struct eh_catch_d, eh_catch): New.
7110         (struct eh_region_d): Remove next_region_sharing_label, aka,
7111         label, tree_label, landing_pad, post_landing_pad, resume,
7112         may_contain_throw.  Rename region_number to index.  Remove
7113         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
7114         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
7115         (VEC(eh_landing_pad,gc)): New.
7116         (struct eh_status): Remove last_region_number.  Add lp_array,
7117         throw_stmt_table, ttype_data, ehspec_data.
7118         (ehr_next, FOR_ALL_EH_REGION_AT): New.
7119         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
7120         * except.c (lang_protect_cleanup_actions): Return tree.
7121         (struct ehl_map_entry): Remove.
7122         (init_eh_for_function): Push zero entries for region and lp_array.
7123         (gen_eh_region): Add to region_array immediately.
7124         (gen_eh_region_catch): Operate on eh_catch objects.
7125         (gen_eh_landing_pad): New.
7126         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
7127         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
7128         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
7129         (get_eh_landing_pad_from_number_fn): New.
7130         (get_eh_landing_pad_from_number): New.
7131         (get_eh_region_from_lp_number_fn): New.
7132         (get_eh_region_from_lp_number): New.
7133         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
7134         (get_exception_pointer, get_exception_filter): Remove.
7135         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
7136         (current_function_has_exception_handlers): Simplify.
7137         (bring_to_root, eh_region_replaceable_by_p): Remove.
7138         (replace_region, hash_type_list, hash_eh_region): Remove.
7139         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
7140         (label_to_region_map, num_eh_regions): Remove.
7141         (get_next_region_sharing_label, must_not_throw_labels): Remove.
7142         (find_exception_handler_labels): Remove.
7143         (duplicate_eh_regions_0, find_prev_try): Remove.
7144         (struct duplicate_eh_regions_data): New.
7145         (duplicate_eh_regions_1): Rewrite.
7146         (duplicate_eh_regions): Return a pointer map instead of an
7147         integer offset.
7148         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
7149         (redirect_eh_edge_to_label): Remove.
7150         (eh_region_outermost): Rewrite using eh_region pointers
7151         instead of integers.
7152         (add_ttypes_entry): Update for ttype_data move to eh_status.
7153         (add_ehspec_entry): Rewrite with VEC instead of varray.
7154         (assign_filter_values): Likewise.  Export.
7155         (build_post_landing_pads, connect_post_landing_pads): Remove.
7156         (dw2_build_landing_pads): Rewrite to use lp_array.
7157         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
7158         (sjlj_assign_call_site_values): Rewrite to use lp_array.
7159         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
7160         (sjlj_mark_call_sites): Update for landing pad numbers.
7161         (finish_eh_generation): Rewrite.
7162         (gate_handle_eh): Do nothing for no eh tree.
7163         (pass_rtl_eh): Move up near finish_eh_generation.
7164         (remove_eh_landing_pad): New.
7165         (remove_eh_handler): Export.
7166         (remove_eh_region, remove_eh_handler_and_replace): Remove.
7167         (for_each_eh_label): Rewrite to use lp_array.
7168         (make_reg_eh_region_note): New.
7169         (make_reg_eh_region_note_nothrow_nononlocal): New.
7170         (insn_could_throw_p): New.
7171         (copy_reg_eh_region_note_forward): New.
7172         (copy_reg_eh_region_note_backward): New.
7173         (check_handled, add_reachable_handler): Remove.
7174         (reachable_next_level, foreach_reachable_handler): Remove.
7175         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
7176         (get_eh_region_and_lp_from_rtx): New.
7177         (get_eh_region_from_rtx): New.
7178         (can_throw_internal_1, can_throw_external_1): Remove.
7179         (can_throw_internal): Use get_eh_region_from_rtx.
7180         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
7181         (insn_nothrow_p, can_nonlocal_goto): New.
7182         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
7183         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
7184         (add_action_record): Use VEC not varray.
7185         (collect_one_action_chain): Update for eh_region changes.
7186         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
7187         Use get_eh_region_and_lp_from_rtx.
7188         (gate_convert_to_eh_region_ranges): New.
7189         (pass_convert_to_eh_region_ranges): Use it.
7190         (push_uleb128, push_sleb128): Use VEC not varray.
7191         (output_one_function_exception_table): Likewise.
7192         (dump_eh_tree): Update for eh_region changes.
7193         (verify_eh_tree): Likewise.
7194         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
7195         * tree-eh.c: Include target.h.
7196         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
7197         Don't disallow GIMPLE_RESX; adjust argument check.
7198         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
7199         (record_stmt_eh_region): Update for landing pad numbers;
7200         generate a landing pad if necessary.
7201         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
7202         (remove_stmt_from_eh_lp_fn): Similarly.
7203         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
7204         Update for lp numbers; don't special case missing throw_stmt_table.
7205         (lookup_expr_eh_lp): Similarly.
7206         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
7207         (eh_seq, eh_region_may_contain_throw): New.
7208         (struct leh_state): Add ehp_region.
7209         (struct leh_tf_state): Remove eh_label.
7210         (emit_post_landing_pad): New.
7211         (emit_resx, emit_eh_dispatch): New.
7212         (note_eh_region_may_contain_throw): New.
7213         (frob_into_branch_around): Take eh_region not eh label;
7214         emit eh code into eh_seq.
7215         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
7216         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
7217         lower_eh_must_not_throw.  Emit code to eh_seq.
7218         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
7219         (lower_try_finally_onedest): Likewise.
7220         (lower_try_finally_copy): Likewise.
7221         (lower_try_finally_switch): Likewise.
7222         (lower_try_finally): Initialize ehp_region.
7223         (lower_catch): Update for eh_catch objects.
7224         (lower_eh_filter): Don't handle must_not_throw.
7225         (lower_eh_must_not_throw): New.
7226         (lower_cleanup): Don't set eh_label.
7227         (lower_eh_constructs_2): Resolve eh builtins.
7228         Handle GIMPLE_EH_MUST_NOT_THROW.
7229         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
7230         Add eh_seq to the end of the function body.
7231         (make_eh_dispatch_edges): New.
7232         (make_eh_edge): Remove.
7233         (make_eh_edges): Simplify for landing pads.
7234         (redirect_eh_edge_1): New.
7235         (redirect_eh_edge): Use it.
7236         (redirect_eh_dispatch_edge): New.
7237         (stmt_could_throw_p): Use a switch.  Allow RESX.
7238         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
7239         (stmt_can_throw_internal): Likewise.
7240         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
7241         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
7242         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
7243         (gate_refactor_eh): New.
7244         (pass_refactor_eh): Use it.
7245         (lower_resx, execute_lower_resx, pass_lower_resx): New.
7246         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
7247         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
7248         (remove_unreachable_handlers): Rename from
7249         tree_remove_unreachable_handlers; rewrite for landing pads;
7250         call remove_eh_handler directly.
7251         (remove_unreachable_handlers_no_lp): New.
7252         (unsplit_eh, unsplit_all_eh): New.
7253         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
7254         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
7255         (cleanup_empty_eh_unsplit): New.
7256         (cleanup_empty_eh): Rewrite.
7257         (cleanup_all_empty_eh): New.
7258         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
7259         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
7260         (gate_cleanup_eh): New.
7261         (pass_cleanup_eh): Use it.
7262         (verify_eh_edges): Move later in file.  Expect one EH edge.
7263         (verify_eh_dispatch_edge): New.
7264
7265         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
7266         (gtype-desc.o): Add TARGET_H.
7267         (tree.o): Use EXCEPT_H, not except.h.
7268         (cfgbuild.o): Add EXPR_H.
7269         (GTFILES): Add vecprim.h.
7270         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
7271         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
7272         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
7273         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
7274         * calls.c (emit_call_1): Use make_reg_eh_region_note.
7275         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
7276         calls to can_throw_internal.
7277         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
7278         (make_edges): Don't handle RESX; use can_nonlocal_goto.
7279         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
7280         (expand_gimple_stmt): Use make_reg_eh_region_note.
7281         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
7282         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
7283         or find_exception_handler_labels.
7284         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
7285         there is exacly one EH edge.  Use can_nonlocal_goto and
7286         can_throw_internal.
7287         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
7288         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
7289         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
7290         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
7291         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
7292         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
7293         * dse.c (scan_insn): Use insn_could_throw_p.
7294         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
7295         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
7296         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
7297         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
7298         EXC_PTR_EXPR or FILTER_EXPR.
7299         (tree_expr_nonzero_warnv_p): Likewise.
7300         * function.h: Include vecprim.h, not varray.h
7301         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
7302         move ttype_data and ehspec_data members to struct eh_status; change
7303         action_record_data member to a VEC.
7304         * gcse.c (hash_scan_set): Use can_throw_internal.
7305         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
7306         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
7307         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7308         (block_may_fallthru): Don't handle RESX_EXPR.
7309         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
7310         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
7311         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
7312         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
7313         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
7314         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
7315         (gimple_size): Likewise.
7316         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
7317         (gimple_build_resx): Use gimple_build_with_ops.
7318         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
7319         (is_gimple_val): Likewise.
7320         (is_gimple_stmt): Remove RESX_EXPR.
7321         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
7322         (GIMPLE_RESX): Reorder with other EH constructs.
7323         * gimple.h (struct gimple_statement_eh_mnt): New.
7324         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
7325         (gimple_eh_filter_must_not_throw): Remove.
7326         (gimple_eh_filter_set_must_not_throw): Remove.
7327         (gimple_eh_must_not_throw_fndecl): New.
7328         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
7329         (is_gimple_resx): New.
7330         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
7331         Don't copy EH_FILTER_MUST_NOT_THROW.
7332         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
7333         * ipa-inline.c (estimate_function_body_sizes): Don't try to
7334         handle must_not_throw_labels specially.
7335         * ipa-pure-const.c (check_call): Update debug statement for LP.
7336         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
7337         * ipa-utils.c (get_base_var): Likewise.
7338         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
7339         * lower-subreg.c (move_eh_region_note): Remove.
7340         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
7341         * omp-low.c (new_omp_context): Update for eh_lp_nr.
7342         (create_task_copyfn): Likewise.
7343         (maybe_catch_exception): Use gimple_build_eh_filter.
7344         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
7345         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
7346         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
7347         and pass_lower_resx.
7348         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
7349         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
7350         can_throw_internal, can_nonlocal_goto.
7351         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
7352         copy_reg_eh_region_note_forward.
7353         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
7354         (emit_output_reload_insns): Likewise.
7355         (copy_eh_notes): Remove.
7356         * rtl.def (RESX): Remove.
7357         * rtl.h: Update declarations.
7358         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
7359         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
7360         (update_eh_label): Remove.
7361         (cleanup_dead_labels_eh): New.
7362         (cleanup_deal_labels): Use it instead of update_eh_label.
7363         (gimple_merge_blocks): Update landing pad data structure when
7364         removing a landing pad label.
7365         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
7366         test; handle GIMPLE_EH_MUST_NOT_THROW.
7367         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
7368         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
7369         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
7370         (verify_stmt): Likewise.  Verify landing pads.
7371         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
7372         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
7373         (struct move_stmt_d): Add eh_map.
7374         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
7375         (move_stmt_r): Remap eh region numbers in builtin calls,
7376         resx and eh_dispatch.
7377         (move_block_to_fn): Remove eh_offset parameter.  Use
7378         maybe_duplicate_eh_stmt_fn.
7379         (find_outermost_region_in_block): Operate on eh_region pointers
7380         instead of region numbers.
7381         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
7382         duplicate_eh_regions.
7383         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
7384         test earlier.  Disallow EH landing pads.
7385         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
7386         * tree-flow.h: Update declarations.
7387         (struct tree_ann_common_d): Replace rn with lp_nr.
7388         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
7389         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
7390         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
7391         resx and eh_dispatch.
7392         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
7393         (copy_edges_for_bb): Use make_eh_dispatch_edges.
7394         (copy_cfg_body): Expect eh_map instead of eh_region_offset
7395         from duplicate_eh_regions.
7396         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
7397         update RESX; handle EH_DISPATCH.
7398         (expand_call_inline): Set eh_lp_nr, not eh_region.
7399         (maybe_inline_call_in_expr): Likewise.
7400         * tree-inline.h (struct copy_body_data): Replace eh_region with
7401         eh_lp_nr, eh_region_offset with eh_map.
7402         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
7403         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
7404         * tree-pretty-print.c (dump_generic_node): Don't handle
7405         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
7406         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
7407         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
7408         EXC_PTR_EXPR, FILTER_EXPR.
7409         * tree-ssa-operands.c (get_expr_operands): Likewise.
7410         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
7411         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
7412         (ao_ref_init_from_vn_reference): Likewise.
7413         * tree-ssa-sink.c (statement_sink_location): Likewise.
7414         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
7415         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
7416         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
7417         EXC_PTR_EXPR, FILTER_EXPR.
7418         (is_exception_related): Remove.
7419         (compute_avail): Don't call it.
7420         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
7421         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
7422         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
7423         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
7424         Build EH builtins.
7425         (build_resx): Remove.
7426         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
7427         * tree.h: Update declarations.
7428         (EH_FILTER_MUST_NOT_THROW): Remove.
7429         (struct tree_label_decl): Add eh_landing_pad_nr.
7430         (EH_LANDING_PAD_NR): New.
7431         * value-prof.c (gimple_ic): Tidy variable names.  Update for
7432         landing pad numbers.
7433         (gimple_stringop_fixed_value): Tidy variable names.  Assert
7434         that neither call stmt can throw.
7435         * vecprim.h (uchar): New.
7436         (VEC(uchar,heap), VEC(uchar,gc)): New.
7437
7438         * c-common.c (c_define_builtins): Update call to
7439         build_common_builtin_nodes.
7440         * c-parser.c (c_parse_file): Don't call
7441         default_init_unwind_resume_libfunc.
7442
7443 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
7444
7445         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
7446         (mips_cprestore_address_p): Likewise.
7447         (mips_save_gp_to_cprestore_slot): Likewise.
7448         (mips_restore_gp): Rename to...
7449         (mips_restore_gp_from_cprestore_slot): ...this.
7450         (mips_must_initialize_gp_p): Declare.
7451         (mips_emit_save_slot_move): Likewise.
7452         (mips_output_load_label): Return nothing.
7453         (mips_eh_uses): Declare.
7454         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
7455         (TARGET_CPRESTORE_DIRECTIVE): New macro.
7456         (TARGET_ABSOLUTE_JUMPS): Likewise.
7457         (EH_USES): Likewise.
7458         (FIRST_PSEUDO_REGISTER): Update comment.
7459         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
7460         (MIPS_CALL): ...here.
7461         (REGISTER_NAMES): Add $cprestore.
7462         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
7463         Add load_label_length, has_inflexible_gp_insn_p,
7464         has_flexible_gp_insn_p, must_initialize_gp_p and
7465         must_restore_gp_when_clobbered_p.
7466         (mips_expand_call): Don't generate split instructions here.
7467         (mips_split_call): Update the call to mips_restore_gp after
7468         the above name change.
7469         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
7470         (mips_find_gp_ref): New function.
7471         (mips_insn_has_inflexible_gp_ref_p): Likewise.
7472         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
7473         (mips_insn_has_flexible_gp_ref_p): Likewise.
7474         (mips_cfun_has_flexible_gp_ref_p): Likewise.
7475         (mips_function_has_gp_insn): Delete.
7476         (mips_global_pointer): Drop the df_regs_ever_live_p check.
7477         Use the new functions above.  Only return INVALID_REGNUM
7478         for TARGET_ABSOLUTE_JUMPS.
7479         (mips_must_initialize_gp_p): New function.
7480         (mips_get_cprestore_base_and_offset): New function, extracted from...
7481         (mips_cprestore_slot): ...here.  Take a bool parameter.
7482         (mips_cfun_has_cprestore_slot_p): New function.
7483         (mips_cprestore_address_p): Likewise.
7484         (mips_save_gp_to_cprestore_slot): Likewise.
7485         (mips_restore_gp): Rename to...
7486         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
7487         epilogue_completed.  Update the call to mips_cprestore_slot.
7488         Test cfun->machine->must_restore_gp_when_clobbered_p.
7489         (mips_direct_save_slot_move_p): New function.
7490         (mips_emit_save_slot_move): Likewise.
7491         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
7492         of cfun->machine->global_pointer.
7493         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
7494         (mips_save_reg): Use mips_emit_save_slot_move.
7495         (mips_expand_prologue): Set must_initialize_gp_p.
7496         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
7497         for all cprestore saves.  Emit a use_cprestore instruction after
7498         setting up the cprestore slot.
7499         (mips_restore_reg): Use mips_emit_save_slot_move.
7500         (mips_process_load_label): New function.
7501         (mips_load_label_length): Likewise.
7502         (mips_output_load_label): Don't return asm: output it here instead.
7503         Use mips_process_load_label.
7504         (mips_adjust_insn_length): Adjust the length of branch instructions
7505         that have length MAX_PIC_BRANCH_LENGTH.
7506         (mips_output_conditional_branch): Update the call to
7507         mips_output_load_label.  Assume the branch target is OPERANDS[0]
7508         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
7509         (mips_output_order_conditional_branch): Swap the meaning of
7510         OPERANDS[0] and OPERANDS[1].
7511         (mips_variable_issue): Don't count ghost instructions.
7512         (mips_expand_ghost_gp_insns): New function.
7513         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
7514         (mips_output_mi_thunk): Set must_initialize_gp_p.
7515         (mips_eh_uses): New function.
7516         * config/mips/predicates.md (cprestore_save_slot_operand)
7517         (cprestore_load_slot_operand): New predicates.
7518         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
7519         (UNSPEC_MOVE_GP): Likewise.
7520         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
7521         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
7522         (CPRESTORE_SLOT_REGNUM): New register.
7523         (MAX_PIC_BRANCH_LENGTH): New constant.
7524         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
7525         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
7526         branches.  Fix commentary.
7527         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
7528         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
7529         Change type to "ghost".
7530         (loadgp_absolute_<mode>): Likewise.
7531         (loadgp_rtp_<mode>): Likewise.
7532         (copygp_mips16): Likewise.
7533         (loadgp_blockage): Remove redundant mode attribute.
7534         (potential_cprestore): New instruction.
7535         (cprestore): Turn into an unspec set.
7536         (use_cprestore): New instruction.
7537         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
7538         (*branch_fp_inverted): Likewise.
7539         (*branch_order<mode>): Likewise.
7540         (*branch_order<mode>_inverted): Likewise.
7541         (*branch_equality<mode>): Likewise.
7542         (*branch_equality<mode>_inverted): Likewise.
7543         (*branch_bit<bbv><mode>): Likewise.
7544         (*branch_bit<bbv><mode>_inverted): Likewise.
7545         (*branch_equality<mode>_mips16): Remove redundant mode.
7546         (jump): Turn into a define_expand.
7547         (*jump_absolute): New instruction.
7548         (*jump_pic): Likewise.
7549         (*jump_mips16): Rename previously-unnamed pattern.  Remove
7550         redundant mode attribute.
7551         (restore_gp): Split on epilogue_completed rather than
7552         reload_completed.  Change type to "ghost".
7553         (move_gp<mode>): New instruction.
7554         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
7555         Remove redundant mode attribute.
7556         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
7557         (bc1any4f, bc1any2t, bc1any2f): Likewise.
7558         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
7559
7560 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
7561
7562         PR target/41210
7563         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
7564         are returned in the same register (vs34 or v2) that Altivec vector
7565         types are returned in.
7566         (rs6000_libcall_value): Ditto.
7567
7568         PR target/41331
7569         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
7570         instead of explicit addsi3/adddi3 calls.
7571         (rs6000_split_multireg_move): Ditto.
7572         (rs6000_emit_allocate_stack): Ditto.
7573         (rs6000_emit_prologue): Ditto.
7574         (rs6000_output_mi_thunk): Ditto.
7575
7576         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
7577         size is 64 bits if we can use 64-bit registers.
7578
7579 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
7580
7581         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
7582         symbols.
7583
7584         From Jie Zhang <jie.zhang@analog.com>:
7585         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
7586         save FP and RETS with saveall attribute.
7587         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
7588         with saveall attribute.
7589
7590         * config/bfin/bfin.c (bfin_expand_builtin,
7591         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
7592         operands.
7593
7594         From Jie Zhang <jie.zhang@analog.com>:
7595         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
7596         before use in two places.
7597         * config/bfin/bfin.md (AREG): Define mode iterator.
7598         (reload_in, reload_out): Use mode iterator AREG.
7599
7600 2009-09-14  Richard Guenther  <rguenther@suse.de>
7601
7602         PR middle-end/41350
7603         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
7604         EH personality path.
7605
7606 2009-09-13  Richard Guenther  <rguenther@suse.de>
7607             Rafael Avila de Espindola  <espindola@google.com>
7608
7609         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
7610         (LANG_HOOKS_EH_PERSONALITY): Likewise.
7611         (LANG_HOOKS_INITIALIZER): Adjust.
7612         (lhd_pass_through_t): Declare.
7613         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
7614         eh_personality.
7615         * langhooks.c (lhd_pass_through_t): New function.
7616         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
7617         dwarf2out_begin_prologue): Use personality from current_function_decl.
7618         * expr.h (get_personality_function): Declare.
7619         * expr.c (get_personality_function): New function.
7620         (build_personality_function): Likewise.
7621         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
7622         (eh_personality_libfunc): Remove.
7623         * optabs.c (build_libfunc_function): New function split out from ...
7624         (init_one_libfunc): ... here.
7625         * tree.h (DECL_FUNCTION_PERSONALITY): New.
7626         (tree_function_decl): Add personality.
7627         (lhd_gcc_personality): Declare.
7628         (build_personality_function): Likewise.
7629         * tree.c (gcc_eh_personality_decl): New.
7630         (lhd_gcc_personality): New function.
7631         * except.h (lang_eh_runtime_type): Remove.
7632         (enum eh_personality_kind): New.
7633         (build_personality_function): Declare.
7634         (function_needs_eh_personality): Declare.
7635         * except.c (lang_eh_runtime_type): Remove.
7636         (function_needs_eh_personality): New function.
7637         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
7638         (sjlj_emit_function_enter, output_function_exception_table):
7639         Use personality from current_function_decl.
7640         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
7641         * tree-inline.c (tree_can_inline_p): Do not inline across different
7642         EH personalities.
7643         (expand_call_inline): Likewise.  Adjust the callers EH personality.
7644         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
7645         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
7646         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
7647         (c-parser.o): Likewise
7648         * c-tree.h (c_eh_initialized_p): Remove.
7649         (c_maybe_initialize_eh): Likewise.
7650         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
7651         (finish_decl): Don't call c_maybe_initialize_eh.
7652         (c_eh_initialized_p): Remove.
7653         (c_maybe_initialize_eh): Likewise.
7654         * c-parser.c (c_parser_omp_construct): Likewise.
7655         (c_parse_file): Initialize exception handling.
7656
7657 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
7658
7659         * config.gcc (tm_file): Remove i386/biarch32.h
7660         for i?86-w64-mingw* case.
7661         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
7662         support.
7663         * config.host: Set for x64 mingw the option
7664         use_long_long_for_widest_fast_int to yes.
7665
7666 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
7667
7668         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
7669         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
7670         (dbxout_begin_function): Likewise.
7671         * final.c (dwarf2_debug_info_emitted_p): New predicate.
7672         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
7673         set on the function.
7674         (final_end_function): Likewise.
7675         (final_scan_insn): Likewise.
7676         (rest_of_handle_final): Likewise.
7677         * varasm.c (assemble_start_function): Likewise.
7678         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
7679
7680 2009-09-12  Jason Merrill  <jason@redhat.com>
7681
7682         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
7683         * opts.c (common_handle_option): constify.
7684
7685 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7686
7687         * doc/install.texi (avr): Remove obsolete reference site.
7688
7689 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
7690
7691         * doc/install.texi (Binaries): Adjust AIX link.
7692
7693 2009-09-12  Akim Demaille  <demaille@gostai.com>
7694
7695         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
7696         Use an imperative sentence.
7697
7698 2009-09-11  Richard Henderson  <rth@redhat.com>
7699
7700         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
7701         structure-name and has-tree-operands arguments; update all entries.
7702         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
7703         update all entries.
7704         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
7705         (gsstruct_code_size): New.
7706         (gss_for_code_): New.
7707         (gss_for_code): Remove.
7708         (gimple_size): Rewrite using gsstruct_code_size.
7709         (gimple_statement_structure): Move to gimple.h.
7710         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
7711         (gss_for_code, gimple_statement_structure): New.
7712         (gimple_ops): Use new arrays; tidy.
7713
7714 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7715
7716         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
7717         operand to be a PLUS expression.
7718         * config/pa/pa.c (pa_secondary_reload): Likewise.
7719
7720 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
7721
7722         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
7723
7724         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
7725         XEXP (in_rtx, 8).
7726
7727 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7728
7729         From Jie Zhang <jie.zhang@analog.com>:
7730         * doc/extend.texi (node Function Attributes): Document l2
7731         function attribute.
7732         (node Blackfin Variable Attributes): Document l2 variable attributes.
7733
7734 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
7735
7736         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
7737         to match the system compiler's configuration at inflection point.
7738         Add comment to remark a remaining difference with system compiler.
7739
7740         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
7741         * configure: Regenerate.
7742
7743 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
7744
7745         From Jie Zhang <jie.zhang@analog.com>:
7746         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
7747         (bfin_handle_l2_attribute): New.
7748         (bfin_attribute_table): Add l2 attribute.
7749
7750 2009-09-11  Michael Matz  <matz@suse.de>
7751
7752         PR middle-end/41275
7753         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
7754         on the local_decls list.
7755
7756 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
7757
7758         PR debug/41276
7759         PR debug/41307
7760         * cselib.c (cselib_expand_value_rtx_cb): Document callback
7761         interface.
7762         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
7763         for VALUEs, to implement the documented interface.
7764         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
7765         Adjust for VALUEs and anything else, to implement the
7766         documented interface.
7767
7768 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
7769
7770         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
7771         with actual SPE/paired vector modes before using 64-bit alignment.
7772         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
7773
7774 2009-09-10  DJ Delorie  <dj@redhat.com>
7775
7776         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
7777         emitted.
7778
7779         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
7780         * config/mep/mep.c (mep_legitimate_constant_p): New.
7781         * config/mep/mep-protos.h: Prototype it.
7782
7783 2009-09-10  Richard Henderson  <rth@redhat.com>
7784
7785         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
7786
7787 2009-09-10  Jason Merrill  <jason@redhat.com>
7788
7789         * tree.c (chain_index): New fn.
7790         * tree.h: Declare it.
7791
7792 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7793
7794         * config/sol2-c.c (cmn_err_length_specs): Initialize
7795         scalar_identity_flag.
7796
7797 2009-09-10  Richard Henderson  <rth@redhat.com>
7798
7799         * tree.h (struct tree_decl_common): Move align member earlier;
7800         move label_decl_uid member ...
7801         (struct tree_label_decl): ... here.
7802         (LABEL_DECL_UID): Update to match.
7803
7804         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
7805         not TDF_DETAILS.
7806
7807         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
7808         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
7809
7810         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
7811         dest_prev if the edge is complex.
7812
7813         * tree-cfg.c (is_ctrl_stmt): Use a switch.
7814
7815         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
7816         loop latch tests earlier.
7817
7818         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
7819         before GIMPLE_RETURN, not after its predecessor; insert
7820         before GIMPLE_RESX.
7821
7822         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
7823         gimple_seq_empty_p to test for no PHI nodes.
7824         * tree-cfg.c (split_critical_edges): Likewise.
7825
7826         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
7827
7828 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7829
7830         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
7831         introduced by the VTA branch merge.
7832
7833 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7834
7835         * ira-conflicts.c: Use fputs or putc instead of fprintf
7836         where appropriate.
7837         * cfg.c: Ditto.
7838         * toplev.c: Ditto.
7839         * tree-switch-conversion.c: Ditto.
7840
7841 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
7842
7843         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
7844         introduced by the VTA branch merge.
7845
7846 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
7847
7848         Revert:
7849         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7850
7851         PR rtl-optimization/39779
7852         * expr.c (convert_modes): Return when mode == oldmode after
7853         CONST_INTs are processed.
7854
7855 2009-09-10  Nick Clifton  <nickc@redhat.com>
7856
7857         * config/mep/mep.c (mep_encode_section_info): Copy weakness
7858         attribute and referring decl when creating renamed symbol.
7859
7860 2009-09-10  Richard Guenther  <rguenther@suse.de>
7861
7862         PR middle-end/41257
7863         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
7864         reachable nodes.
7865         (cgraph_finalize_compilation_unit): Compute reachability
7866         before emitting thunks.  Properly process aliases before
7867         possibly removing unreachable nodes.
7868
7869 2009-09-10  Richard Guenther  <rguenther@suse.de>
7870
7871         PR middle-end/41254
7872         * tree.c (struct free_lang_data_d): Add worklist member.
7873         (find_decls_types_r): Push onto the worklist instead of recursing.
7874         Handle TREE_BINFOs properly.
7875         (find_decls_types): New function wrapped around find_decls_types_r
7876         to process the worklist.
7877         (find_decls_types_in_eh_region): Use it.
7878         (find_decls_types_in_node): Likewise.
7879         (find_decls_types_in_var): Likewise.
7880         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
7881         * tree.h (RECORD_OR_UNION_TYPE_P): New.
7882         (AGGREGATE_TYPE_P): Adjust.
7883
7884 2009-09-09  Jason Merrill  <jason@redhat.com>
7885
7886         * configure.ac: Check glibc version even if we have an in-tree
7887         assembler.
7888
7889 2009-09-09  Anthony Green  <green@moxielogic.com>
7890
7891         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
7892         the constant 0 when appropriate.
7893         * config/moxie/constraints.md: Add constraint O.
7894
7895         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
7896         to pass up to 6 32-bit argument values in registers.
7897         (moxie_function_arg): Ditto.
7898         (moxie_arg_partial_bytes): Ditto.
7899         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
7900         (REG_PARM_STACK_SPACE): Ditto.
7901         (FUNCTION_ARG_REGNO_P): Ditto.
7902
7903         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
7904         instruction to allocate stack space.
7905
7906 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
7907
7908         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
7909         unnecessarily stringent constraints.  Fix address
7910         calculation in the splitters.
7911
7912 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
7913
7914         PR rtl-optimization/39779
7915         * expr.c (convert_modes): Return when mode == oldmode after
7916         CONST_INTs are processed.
7917
7918 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
7919
7920         PR/41315
7921         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
7922         (ix86_expand_prologue): Take frame.padding0 into logic of
7923         to_allocate checks.
7924         (ix86_expand_epilogue): Likewise.
7925
7926 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
7927
7928         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
7929         New variables.
7930         (SHLIB_LINK, SHLIB_INSTALL): Use them.
7931         * config/t-slibgcc-libgcc: New file.
7932         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
7933
7934 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7935
7936         PR tree-optimization/41089
7937         * tree-sra.c (find_var_candidates): Do not consider va_lists in
7938         early SRA.
7939
7940 2009-09-09  Richard Henderson  <rth@redhat.com>
7941
7942         * gimple.h (CASE_GIMPLE_OMP): New.
7943         (is_gimple_omp): Use it.
7944         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
7945         (verify_gimple_debug): Likewise.
7946
7947 2009-09-09  Richard Guenther  <rguenther@suse.de>
7948
7949         PR tree-optimization/41101
7950         * tree-ssa-pre.c (maximal_set): Remove.
7951         (compute_antic_aux): Treat the maximal set as implicitly all ones.
7952         Defer all blocks we didn't visit at least one successor.
7953         (add_to_exp_gen): Do not add to the maximal set.
7954         (make_values_for_phi): Likewise.
7955         (compute_avail): Likewise.
7956         (init_pre): Do not allocate the maximal set.
7957         (execute_pre): Do not dump it.
7958
7959 2009-09-09  Martin Jambor  <mjambor@suse.cz>
7960
7961         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
7962         an SSA_NAME rather than a is_gimple_variable.
7963
7964 2009-09-09  Richard Guenther  <rguenther@suse.de>
7965
7966         PR middle-end/41317
7967         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
7968         code dealing with plain pointer bases.
7969         (maybe_fold_offset_to_reference): Likewise.
7970         (maybe_fold_stmt_addition): Adjust.
7971
7972 2009-09-09  Richard Guenther  <rguenther@suse.de>
7973
7974         * tree.c (free_lang_data_in_type): Do not free the type variant
7975         chains.
7976         (free_lang_data): Merge char_type_node with its properly signed
7977         variant.
7978         (pass_ipa_free): Collect after freeing language specific data.
7979
7980 2009-09-09  Michael Matz  <matz@suse.de>
7981
7982         PR middle-end/41268
7983         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
7984         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
7985         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
7986         to reflect reality.
7987
7988 2009-09-08  DJ Delorie  <dj@redhat.com>
7989
7990         * config/mep/mep.c (conversions[]): Add "ml" pattern.
7991
7992 2009-09-04  Jason Merrill  <jason@redhat.com>
7993
7994         * tree.c (tree_find_value): Remove.
7995         * tree.h: Remove prototype.
7996         * varasm.c (assemble_external): Use value_member instead.
7997
7998 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
7999
8000         * toplev.c (process_options): Choose default debugging type when
8001         gtoggle enables debug info and type is unset.
8002
8003 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8004
8005         PR debug/41276
8006         PR debug/41307
8007         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
8008         invalid subreg.
8009
8010 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8011
8012         * configure: Rebuilt with modified libtool.m4.
8013
8014 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8015
8016         PR debug/41229
8017         PR debug/41291
8018         PR debug/41300
8019         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
8020
8021 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8022
8023         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
8024         (remove_statement): Likewise.
8025         (rewrite_use_nonlinear_expr): Adjust.
8026         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
8027         * tree-ssa.c (release_defs_bitset): ... this.  New.
8028         * tree-flow.h (release_defs_bitset): Declare.
8029
8030 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
8031
8032         PR debug/41232
8033         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
8034         in the middle block.
8035
8036 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
8037
8038         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
8039         via intptr_t to long type.
8040         (insert_operand_rank): Cast long type via intptr_t to
8041         pointer type.
8042         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
8043         pointer to scalar.
8044         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
8045         from pointer to unsigned via uintptr_t.
8046
8047         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
8048         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
8049         and HAVE_INTPTR_T.
8050         * configure: Regenerated.
8051         * config.in: Regenerated
8052         * system.h (stdint.h): Add include.
8053         (inttypes.h): Likewise.
8054         * Makefile.in (aclocal): Add config/stdint.m4.
8055         * aclocal.m4: Regenerated.
8056
8057 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
8058
8059         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
8060         variables.
8061         (note_np_check_stores): New function.
8062         (harmless_null_pointer_p): New function.
8063         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
8064         changed.  Take into account whether we're in the shadow of a condjump
8065         that tested NP_REG for NULL.
8066         Lose all code that tested for SEQUENCEs.
8067         (workaround_speculation): Avoid inserting NOPs for loads that are
8068         either always executed or a NULL pointer.
8069
8070 2009-09-08  Jan Hubicka  <jh@suse.cz>
8071
8072         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
8073         * params.def (early-inlining-insns): Likewise.
8074
8075 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
8076
8077         PR rtl-optimization/41239
8078         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
8079         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
8080         lists.
8081         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
8082         across calls, as the calls might not always return normally.
8083         (call_may_noreturn_p): New function.
8084         (deps_analyze_insn): Update last_function_call_may_noreturn list.
8085         (init_deps): Initialize it.
8086         (remove_from_deps): Also remove calls from
8087         last_function_call_may_noreturn list.
8088
8089 2009-09-07  Richard Henderson  <rth@redhat.com>
8090
8091         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
8092         more VR->OPERANDS than LHS operands.  Free LHS before returning.
8093
8094 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8095
8096         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
8097         (attr "addrtype"): New member "spreg".
8098         Use it if mem_spfp_address_operand is true for the address.
8099         (attr "type"): New entry "stall".
8100         (cpu_unit "load"): New.
8101         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
8102         "load".
8103         (insn_reservation "loadsp"): New.
8104         (insn_reservation "load_stall1"): New.
8105         (insn_reservation "load_stall3"): New.
8106         (stall): New insn.
8107         * config/bfin/predicates.md (const1_operand, const3_operand): New.
8108         (mem_p_address_operand): Exclude stack and frame pointer based
8109         addresses.
8110         (mem_spfp_address_operand): New; match them here.
8111         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
8112         (bfin_reorg): Call it if scheduling insns.
8113         (bfin_gen_bundles): Remove dummy insns created by
8114         add_sched_insns_for_speculation.
8115
8116         From Jie Zhang <jie.zhang@analog.com>:
8117         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
8118         bfin_si_revision, bfin_workarounds): Move these ...
8119         * config/bfin/bfin.h: ... here.
8120
8121         From Mike Frysinger  <michael.frysinger@analog.com>
8122         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
8123         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
8124         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
8125         bf547m, bf548m, and bf549m.
8126         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
8127         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
8128         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
8129         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
8130         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
8131         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
8132         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
8133         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
8134         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
8135         bf542m, bf544m, bf547m, bf548m, and bf549m.
8136
8137         From Jie Zhang <jie.zhang@analog.com>:
8138         * config/bfin/predicates.md (p_register_operand): New predicate.
8139         (dp_register_operand): New predicate.
8140         * config/bfin/bfin-protos.h (WA_05000074): Define.
8141         (ENABLE_WA_05000074): Define.
8142         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
8143         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
8144         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
8145         (define_attr addrtype): Allow load/store register to be P register.
8146         (define_attr storereg): New.
8147         (define_cpu_unit anomaly_05000074): New.
8148         (define_insn_reservation dsp32shiftimm): New.
8149         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
8150         (define_insn_reservation loadp): Cannot use slot2.
8151         (define_insn_reservation loadsp): Cannot use slot2.
8152         (define_insn_reservation storep): Cannot use slot2. Does not
8153         apply when working around 05000074.
8154         (define_insn_reservation storep_anomaly_05000074): New.
8155         (define_insn_reservation storei): Does not apply when working
8156         around 05000074.
8157         (define_insn_reservation storei_anomaly_05000074): New.
8158         (define_attr length): Add dsp32shiftimm case.
8159         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
8160         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
8161         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
8162         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
8163         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
8164
8165 2009-09-07  Martin Jambor  <mjambor@suse.cz>
8166
8167         PR middle-end/41282
8168         * tree-sra.c (create_artificial_child_access): Return NULL if
8169         build_ref_for_offset fails.
8170         (propagate_subacesses_accross_link): Allow build_ref_for_offset
8171         and create_artificial_child_access to fail.
8172
8173 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
8174
8175         PR c++/41214
8176         * unwind-dw2.c (uw_init_context_1): Mark noinline.
8177         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
8178         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
8179
8180 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
8181
8182         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
8183         block, ensure it has an exit edge.  Emit a barrier after a jump.
8184
8185 2009-09-07  Nick Clifton  <nickc@redhat.com>
8186
8187         * gcc.c (this_is_linker_script): New variable.  Like
8188         this_is_library_file but for the %T constructor.
8189         (end_going_arg): If this_is_linker_script is set then locate the
8190         script and insert a --script switch before it
8191         (do_spec_2): Initialise this_is_linker_script.
8192         (do_spec_1): Likewise.  Handle %T construct.
8193         (eval_spec_function): Preserve this_is_linker_script.
8194         * doc/invoke.texi: Document %T construct in spec files.
8195         * config/m32c/m32c.h (LIB_SPEC): Use it.
8196
8197 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8198
8199         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
8200         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
8201         when volatile flag is set.
8202         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
8203
8204 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
8205
8206         PR bootstrap/41241
8207         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
8208         (combine_stack_adjustments_for_block): Allow insns between stack
8209         adjustments and stores with corresponding pre-(dec|inc)rement or
8210         pre-modify operation.
8211
8212 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
8213
8214         PR bootstrap/41241
8215         * combine-stack-adj.c (struct csa_memlist): Rename to...
8216         (struct csa_reflist): ... this.  Rename mem field to ref.
8217         (free_csa_memlist): Rename to...
8218         (free_csa_reflist): ... this.
8219         (record_one_stack_memref): Rename to...
8220         (record_one_stack_ref): ... this.  Handle also REG_P.
8221         (try_apply_stack_adjustment): Handle also REG_P.
8222         (struct record_stack_memrefs_data): Rename to...
8223         (struct record_stack_refs_data): ... this.  Rename memlist field to
8224         reflist.
8225         (record_stack_memrefs): Rename to...
8226         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
8227         subexpressions instead of failing when a MEM contains SP references.
8228         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
8229         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
8230
8231 2009-09-06  Richard Guenther  <rguenther@suse.de>
8232
8233         PR middle-end/41144
8234         * tree.c (build_array_type): Do not record types marked
8235         with structural equality in the canonical type hashtable.
8236
8237 2009-09-06  Richard Guenther  <rguenther@suse.de>
8238
8239         PR middle-end/41261
8240         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
8241
8242 2009-09-05  Richard Guenther  <rguenther@suse.de>
8243
8244         PR middle-end/41181
8245         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
8246
8247 2009-09-05  Richard Guenther  <rguenther@suse.de>
8248
8249         PR debug/41273
8250         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
8251
8252 2009-09-05  Richard Guenther  <rguenther@suse.de>
8253
8254         PR middle-end/41271
8255         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
8256         before comparing function argument types.
8257
8258 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8259
8260         PR target/41024
8261         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
8262         the assembler.
8263
8264 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8265
8266         Revert:
8267         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
8268
8269         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
8270         locators before emit_insn is called.
8271
8272 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
8273
8274         PR bootstrap/41241
8275         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
8276         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
8277         (reginfo_init): Don't call allocate_reg_info.
8278
8279 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
8280
8281         PR target/41262
8282         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
8283         NONDEBUG_INSN_P instead of INSN_P.
8284
8285 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8286
8287         PR debug/41225
8288         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
8289
8290 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8291
8292         PR target/41252
8293         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
8294         pattern of the split.
8295
8296 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8297
8298         * toplev.c (process_options): Move setter of flag_var_tracking
8299         before other tests that depend on it.  Move down setter of
8300         flag_rename_registers.  Don't enable var-tracking-assignments
8301         by default if selective scheduling is enabled.  Warn if both
8302         are enabled.
8303
8304 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
8305
8306         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
8307         comment.  Use switch statement to catch overlaps between rtx
8308         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
8309         (IS_DECL_CODE): ... here. Remove.
8310         (check_value_is_not_decl): Remove.
8311         (dv_from_decl, dv_from_value): Check after conversion.
8312
8313 2009-09-04  Richard Guenther  <rguenther@suse.de>
8314
8315         PR middle-end/41257
8316         * (cgraph_finalize_compilation_unit): Move finalizing aliases
8317         after emitting tunks.  Move emitting thunks and ctors from ...
8318         (cgraph_optimize): ... here.  Remove redundant
8319         cgraph_analyze_functions.
8320         * varasm.c (find_decl_and_mark_needed): Remove no longer
8321         necessary check.
8322         (finish_aliases_1): Adjust check for thunk aliases.
8323
8324 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
8325
8326         * config/arm/arm.md (ctzsi2): Added braces
8327         to avoid warning that broke booststrap.
8328
8329 2009-09-04  Martin Jambor  <mjambor@suse.cz>
8330
8331         PR tree-optimization/41112
8332         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
8333         handle variable-bounded arrays.
8334         (expr_with_var_bounded_array_refs_p): New function.
8335         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
8336
8337 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
8338
8339         * config/s390/2097.md: Removed two incorrect bypasses.
8340         (z10_fsimpdf): Fixed latency.
8341         (z10_fhex): New insn_reservation.
8342         (z10_floaddf): Fixed latency.
8343         (z10_floadsf): Fixed latency.
8344         (z10_ftrunctf): Fixed latency.
8345         (z10_ftruncdf): Fixed latency.
8346         * config/s390/s390.c (z10_cost): Fixed values.
8347         (s390_adjust_priority): Added z10 path.
8348         * config/s390/s390.md (type): Added fhex.
8349         (*mov<mode>_64dfp): Updated type attribute.
8350         (*mov<mode>_64): Updated type attribute.
8351         (*mov<mode>_31): Updated type attribute.
8352         (*mov<mode>"): Likewise.
8353         * config/s390/2084.md (x_fsimpdf): Updated condition.
8354
8355 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
8356
8357         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
8358         RTXs in the predicate for operand 1.
8359
8360 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
8361
8362         * config/arm/arm.md (UNSPEC_RBIT): New constant.
8363         (rbitsi2): New insn.
8364         (ctzsi2): New expand.
8365         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
8366
8367 2009-09-03  Martin Jambor  <mjambor@suse.cz>
8368
8369         * tree-sra.c (duplicate_expr_for_different_base): Removed.
8370         (create_artificial_child_access): Use build_ref_for_offset instead
8371         of duplicate_expr_for_different_base.
8372         (propagate_subacesses_accross_link): Likewise.
8373
8374 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
8375
8376         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
8377         of INSN_P.
8378         (mips16e_collect_argument_saves): Skip debug instructions.
8379         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
8380         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
8381         (r10k_insert_cache_barriers): Likewise.
8382         (mips_reorg_process_insns): Likewise.
8383
8384 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
8385
8386         PR bootstrap/41241
8387         * ira.c (update_equiv_reg): Remove check on class likely spill.
8388
8389 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
8390
8391         PR debug/41236
8392         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
8393         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
8394         it or SUBREG.
8395
8396         PR debug/41238
8397         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
8398         the stack slot if it is passed by invisible reference.
8399         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
8400         by invisible reference.
8401
8402 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
8403
8404         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8405         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
8406         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
8407         0.
8408         * config/bfin/sync.md: New file.
8409         * config/bfin/bfin.md: Include it.
8410         (UNSPEC_ATOMIC): New.
8411         (UNSPEC_ONES): Provide a unique number.
8412
8413         From Jie Zhang <jie.zhang@analog.com>:
8414         * config/bfin/bfin.c (ret_regs): New.
8415         (must_save_fp_p): Don't return true because of frame_pointer_needed.
8416         (must_save_rets_p): New.
8417         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
8418         current_function_is_leaf.
8419         (do_link): Likewise.
8420         (do_unlink): Likewise.
8421         (expand_interrupt_handler_prologue): Use ret_regs array.
8422         (expand_interrupt_handler_epilogue): Use ret_regs array and
8423         pass return register to gen_return_internal.
8424         (bfin_expand_epilogue): Pass return register to
8425         gen_return_internal.
8426         (bfin_expand_call): Explicitly clobber RETS.
8427         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
8428         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
8429         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
8430         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
8431         RETS.
8432         (return_internal): Take a reg rtx rather than the register number.
8433
8434 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
8435
8436         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
8437         when comparing against estimated_loop_iterations_int return.
8438
8439 2009-09-03  Richard Guenther  <rguenther@suse.de>
8440
8441         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
8442         eh_personality_libfunc.
8443
8444 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8445
8446         * tree-parloops.c (separate_decls_in_region): Add space.
8447
8448 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8449
8450         * tree-parloops.c (separate_decls_in_region): Change the condition
8451         checking if there are reductions in the loop.
8452
8453 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
8454
8455         PR tree-optimization/38275
8456         * tree-parloops.c (parallelize_loops): Replace profitability condition
8457         for expected number of iterations.
8458
8459 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8460
8461         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
8462         (bootstrap-debug): Explain conditions in which it becomes default.
8463         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
8464         make it add to it.
8465
8466 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
8467
8468         * doc/invoke.texi (Optimize Options): Move
8469         -finline-small-functions to the -O2 list.
8470
8471 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
8472
8473         * toplev.c (process_options): Enable var-tracking-assignments
8474         by default if var-tracking is enabled.
8475
8476 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
8477
8478         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
8479         barrier.
8480         * emit-rtl.c (prev_nonnote_insn_bb): New function.
8481         * rtl.h (prev_nonnote_insn_bb): Declare it.
8482
8483 2009-09-03  Diego Novillo  <dnovillo@google.com>
8484
8485         * cgraph.c (cgraph_node_for_decl): New.
8486         * cgraph.h (cgraph_node_for_decl): Declare.
8487         * tree.c (host_integerp): Return 0 if T is NULL.
8488
8489 2009-09-03  Diego Novillo  <dnovillo@google.com>
8490
8491         * tree.h (struct alias_pair): Move from varasm.c.
8492         (alias_pairs): Likewise.
8493         (TYPE_MAXVAL): Define.
8494         (TYPE_MINVAL): Define.
8495         (iterative_hash_host_wide_int): Declare.
8496         (remove_unreachable_alias_pairs): Declare.
8497         * tree-pass.h (pass_ipa_free_lang_data): Declare.
8498         * diagnostic.c (default_diagnostic_starter): Make extern.
8499         (default_diagnostic_finalizer): Make extern.
8500         * diagnostic.h (default_diagnostic_starter): Declare.
8501         (default_diagnostic_finalizer): Declare.
8502         (default_tree_printer): Declare.
8503         * toplev.c (default_tree_printer): Make extern.
8504
8505 2009-09-03  Richard Guenther  <rguenther@suse.de>
8506             Diego Novillo  <dnovillo@google.com>
8507
8508         * cgraph.c (cgraph_add_new_function): Remove gimplification.
8509         * cgraphunit.c (cgraph_expand_function): Do not emit
8510         associated thunks from here.
8511         (cgraph_emit_thunks): New.
8512         (cgraph_optimize): Call it.
8513         Return if any IPA pass finds an error.
8514         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
8515         by thunks.
8516
8517 2009-09-03  Simon Baldwin  <simonb@google.com>
8518             Rafael Espindola  <espindola@google.com>
8519             Richard Guenther  <rguenther@suse.de>
8520             Doug Kwan  <dougkwan@google.com>
8521             Diego Novillo  <dnovillo@google.com>
8522
8523         * tree.c: Include tree-pass.h, langhooks-def.h,
8524         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
8525         (free_lang_data_in_type): New.
8526         (need_assembler_name_p): New.
8527         (free_lang_data_in_block): New.
8528         (free_lang_data_in_decl): New.
8529         (struct free_lang_data_d): New.
8530         (add_tree_to_fld_list): New.
8531         (find_decls_types_r): New.
8532         (get_eh_types_for_runtime): New.
8533         (find_decls_types_in_eh_region): New.
8534         (find_decls_types_in_node): New.
8535         (find_decls_types_in_var): New.
8536         (free_lang_data_in_cgraph): New.
8537         (free_lang_data): New.
8538         (gate_free_lang_data): New.
8539         (pass_ipa_free_lang_data): New.
8540
8541 2009-09-03  Diego Novillo  <dnovillo@google.com>
8542
8543         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
8544         * langhooks.h (struct lang_hooks): Add field free_lang_data.
8545         (lang_hooks): Remove const qualifier.
8546         * ipa.c (cgraph_remove_unreachable_nodes): Call
8547         remove_unreachable_alias_pairs.
8548         * except.c (add_type_for_runtime): Check if TYPE has
8549         already been converted.
8550         (lookup_type_for_runtime): Likewise.
8551         (check_handled): Handle converted types.
8552         * varasm.c (remove_unreachable_alias_pairs): New.
8553         * gimple.c: Include demangle.h.
8554         (gimple_decl_printable_name): New.
8555         (gimple_fold_obj_type_ref): New.
8556         * gimple.h (gimple_decl_printable_name): Declare.
8557         (gimple_fold_obj_type_ref): Declare.
8558         * passes.c (init_optimization_passes): Add pass
8559         pass_ipa_free_lang_data.
8560         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
8561         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
8562
8563 2009-09-03  Diego Novillo  <dnovillo@google.com>
8564
8565         * c-lang.c (lang_hooks): Remove const qualifier.
8566
8567 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
8568
8569         * doc/install.texi (*-*-freebsd*): Update target information.
8570
8571 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
8572
8573         * hard-reg-set.h (call_fixed_regs): Remove.
8574         * reginfo.c (call_fixed_regs): Remove.
8575         (init_reg_sets_1): Remove initialization of call_fixed_regs.
8576         (globalize_reg): Don't use call_fixed_regs.
8577         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
8578         call_fixed_regs.
8579
8580 2009-09-01  Michael Matz  <matz@suse.de>
8581
8582         * expr.h (emit_storent_insn, expand_expr_real_1,
8583         expand_expr_real_2): Declare.
8584         * expr.c (emit_storent_insn, expand_expr_real_1,
8585         expand_expr_real_2): Export.
8586         (store_expr): Setting and evaluating dont_return_target is useless.
8587         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
8588         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
8589         * except.c (expand_resx_expr): Rename to ...
8590         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
8591         * except.h (expand_resx_stmt): Declare.
8592         * stmt.c: Add include gimple.h
8593         (expand_asm_expr): Rename to ...
8594         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
8595         (expand_case): Rewrite to take gimple statement.
8596         * tree.h (expand_asm_stmt): Declare.
8597         (expand_case): Change prototype.
8598         * Makefile.in (stmt.o): Depend on gimple.h.
8599         * builtins.c (expand_builtin_synchronize): Build gimple asm
8600         statement, not an ASM_EXPR.
8601         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
8602         gimple_to_tree, release_stmt_tree): Remove.
8603         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
8604         ggc_free, but hold comparison code and operands separately.
8605         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
8606         (expand_call_stmt, expand_gimple_stmt_1,
8607         expand_gimple_stmt): New helpers.
8608         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
8609         release_stmt_tree.  Call expand_gimple_stmt instead.
8610         (expand_gimple_basic_block): Ditto.
8611
8612         * calls.c (emit_call_1): Don't look at EH regions here, make
8613         fntree parameter useless.
8614         (expand_call): New local rettype for TREE_TYPE(exp), use it
8615         throughout.  Remove local p, use addr instead.
8616         Don't look at EH regions here.
8617
8618 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
8619
8620         * doc/invoke.texi (-fsched-pressure): Document it.
8621         (-fsched-reg-pressure-heuristic): Remove it.
8622
8623         * reload.c (ira.h): Include.
8624         (find_reloads): Add choosing reload on number of small spilled
8625         classes.
8626
8627         * haifa-sched.c (ira.h): Include.
8628         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
8629         saved_reg_pressure, curr_reg_live, saved_reg_live,
8630         region_ref_regs): New variables.
8631         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
8632         initiate_reg_pressure_info, setup_ref_regs,
8633         initiate_bb_reg_pressure_info, save_reg_pressure,
8634         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
8635         functions.
8636         (setup_insn_reg_pressure_info): New function.
8637         (rank_for_schedule): Add pressure checking and insn issue time.
8638         Remove comparison of insn reg weights.
8639         (ready_sort): Set insn reg pressure info.
8640         (update_register_pressure, setup_insn_max_reg_pressure,
8641         update_reg_and_insn_max_reg_pressure,
8642         sched_setup_bb_reg_pressure_info): New functions.
8643         (schedule_insn): Add code for printing and updating reg pressure info.
8644         (find_set_reg_weight, find_insn_reg_weight): Remove.
8645         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
8646         (debug_ready_list): Print reg pressure info.
8647         (schedule_block): Ditto.  Check insn issue time.
8648         (sched_init): Set up sched_pressure_p.  Allocate and set up some
8649         reg pressure related info.
8650         (sched_finish): Free some reg pressure related info.
8651         (fix_tick_ready): Make insn always ready if pressure_p.
8652         (init_h_i_d): Don't call find_insn_reg_weight.
8653         (haifa_finish_h_i_d): Free insn reg pressure info.
8654
8655         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8656         ira_memory_move_cost, ira_class_hard_regs,
8657         ira_class_hard_regs_num, ira_no_alloc_regs,
8658         ira_available_class_regs, ira_reg_class_cover_size,
8659         ira_reg_class_cover, ira_class_translate): Move to ira.h.
8660
8661         * ira-lives.c (single_reg_class): Check mode to find how many
8662         registers are necessary for operand.
8663         (ira_implicitly_set_insn_hard_regs): New.
8664
8665         * common.opt (fsched-pressure): New options.
8666         (fsched-reg-pressure-heuristic): Remove.
8667
8668         * ira.c (setup_eliminable_regset): Rename to
8669         ira_setup_eliminable_regset.  Make it external.
8670         (expand_reg_info): Pass cover class to setup_reg_classes.
8671         (ira): Call resize_reg_info instead of allocate_reg_info.
8672
8673         * sched-deps.c: Include ira.h.
8674         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
8675         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
8676         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
8677         mark_insn_hard_regno_birth, mark_insn_reg_birth,
8678         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
8679         mark_insn_reg_store, mark_insn_reg_clobber,
8680         setup_insn_reg_pressure_info): New.
8681         (sched_analyze_1): Update implicit_reg_pending_uses.
8682         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
8683         Use them to create dependencies.  Set insn reg uses and pressure
8684         info.  Process reg_pending_uses in one place.
8685         (free_deps): Free implicit sets.
8686         (remove_from_deps): Remove implicit sets if necessary.  Check
8687         implicit sets when clearing reg_last_in_use.
8688         (init_deps_global): Clear implicit_reg_pending_clobbers and
8689         implicit_reg_pending_uses.
8690
8691         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
8692         ira_memory_move_cost, ira_class_hard_regs,
8693         ira_class_hard_regs_num, ira_no_alloc_regs,
8694         ira_available_class_regs, ira_reg_class_cover_size,
8695         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
8696         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
8697         ira_implicitly_set_insn_hard_regs): New prototypes.
8698
8699         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
8700         cost_elements_num): New variables.
8701         (allocno_costs, total_costs): Rename to costs and
8702         total_allocno_costs.
8703         (COSTS_OF_ALLOCNO): Rename to COSTS.
8704         (allocno_pref): Rename to pref.
8705         (allocno_pref_buffer): Rename to pref_buffer.
8706         (common_classes): Rename to regno_cover_class.
8707         (COST_INDEX): New.
8708         (record_reg_classes): Set allocno attributes only if allocno_p.
8709         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
8710         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
8711         and COSTS_OF_ALLOCNO.
8712         (print_costs): Rename to print_allocno_costs.
8713         (print_pseudo_costs): New.
8714         (process_bb_node_for_costs): Split into 2 functions with new
8715         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
8716         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
8717         new parameter dump_file.  Use cost_elements_num instead of
8718         ira_allocnos_num.  Make one iteration if preferred classes were
8719         already calculated for scheduler.  Make 2 versions of code
8720         depending on allocno_p.
8721         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
8722         regno_cover_class and COSTS instead of common_classes and
8723         COSTS_OF_ALLOCNO.
8724         (init_costs, finish_costs): New.
8725         (ira_costs): Set up allocno_p and cost_elements_num.  Call
8726         init_costs and finish_costs.
8727         (ira_set_pseudo_classes): New.
8728
8729         * rtl.h (allocate_reg_info): Remove.
8730         (resize_reg_info): Change return type.
8731         (reg_cover_class): New.
8732         (setup_reg_classes): Add new parameter.
8733
8734         * sched-int.h (struct deps_reg): New member implicit_sets.
8735         (sched_pressure_p, sched_regno_cover_class): New external definitions.
8736         (INCREASE_BITS): New macro.
8737         (struct reg_pressure_data, struct reg_use_data): New.
8738         (struct _haifa_insn_data): Remove reg_weight.  Add members
8739         reg_pressure, reg_use_list, reg_set_list, and
8740         reg_pressure_excess_cost_change.
8741         (struct deps): New member implicit_sets.
8742         (pressure_p): New variable.
8743         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
8744         (struct reg_pressure_data, struct reg_use_data): New.
8745         (INSN_REG_WEIGHT): Remove.
8746         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
8747         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
8748         (sched_init_region_reg_pressure_info,
8749         sched_setup_bb_reg_pressure_info): New prototypes.
8750
8751         * reginfo.c (struct reg_pref): New member coverclass.
8752         (reg_cover_class): New function.
8753         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
8754         (reg_info_size): New variable.
8755         (allocate_reg_info): Make static.  Setup reg_info_size.
8756         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
8757         (setup_reg_classes): Add a new parameter.  Setup cover class too.
8758
8759         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
8760         the dependencies.
8761
8762         * sched-rgn.c (deps_join): Set up implicit_sets.
8763         (schedule_region): Set up region and basic blocks pressure
8764         relative info.
8765
8766         * passes.c (init_optimization_passes): Move
8767         pass_subregs_of_mode_init before pass_sched.
8768
8769 2009-09-02  Martin Jambor  <mjambor@suse.cz>
8770
8771         * tree-sra.c (struct access): New field grp_hint.
8772         (dump_access): Dump grp_hint.
8773         (sort_and_splice_var_accesses): Set grp_hint if a group is read
8774         multiple times.
8775         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
8776         those which have been specifically read and somehow written to.
8777         (propagate_subacesses_accross_link): Set grp_hint of right child and
8778         also possibly of the left child.
8779
8780 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
8781
8782         * tree-object-size.c (addr_object_size): Always use object_size_type
8783         0 or 2 when determining the pointer pointed object size.
8784
8785 2009-09-02  Richard Guenther  <rguenther@suse.de>
8786
8787         Revert
8788         2009-08-31  Richard Guenther  <rguenther@suse.de>
8789
8790         * builtins.c (fold_builtin_memory_op): Use the alias oracle
8791         to query if the memory regions for memmove overlap.
8792         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
8793         asserts on pointers, instead deal with odd trees.
8794         (ptr_derefs_may_alias_p): Likewise.
8795         (refs_may_alias_p_1): Constructor bases also never alias.
8796
8797 2009-08-01  Christian Bruel  <christian.bruel@st.com>
8798
8799         Revert:
8800         2009-07-31  Christian Bruel  <christian.bruel@st.com>
8801         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
8802
8803 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
8804
8805         * doc/invoke.texi (-fvar-tracking-assignments): New.
8806         (-fvar-tracking-assignments-toggle): New.
8807         (-fdump-final-insns=file): Mark filename as optional.
8808         (--param min-nondebug-insn-uid): New.
8809         (-gdwarf-@{version}): Mention version 4.
8810         * opts.c (common_handle_option): Accept it.
8811         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
8812         * regrename.c (regrename_optimize): Drop last.  Don't count debug
8813         insns as uses.  Don't reject change because of debug insn.
8814         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
8815         from the chain starter, and check for inexact matches in DEBUG_INSNS.
8816         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
8817         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
8818         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
8819         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
8820         * doc/gimple.texi (is_gimple_debug): New.
8821         (gimple_debug_bind_p): New.
8822         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
8823         * doc/install.texi (bootstrap-debug): More details.
8824         (bootstrap-debug-big, bootstrap-debug-lean): Document.
8825         (bootstrap-debug-lib): More details.
8826         (bootstrap-debug-ckovw): Update.
8827         (bootstrap-time): New.
8828         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
8829         (insert_phi_nodes_for): Insert debug stmts.
8830         (rewrite_stmt): Take iterator.  Insert debug stmts.
8831         (rewrite_enter_block): Adjust.
8832         (maybe_replace_use_in_debug_stmt): New.
8833         (rewrite_update_stmt): Use it.
8834         (mark_use_interesting): Return early for debug stmts.
8835         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
8836         stmts before replacing stmt.
8837         (move_computations_stmt): Likewise.
8838         * ira-conflicts.c (add_copies): Skip debug insns.
8839         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
8840         (regstat_bb_compute_ri): Skip debug insns.
8841         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
8842         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
8843         check_loop_closed_ssa_stmt): Skip debug stmts.
8844         * tree-tailcall.c (find_tail_calls): Likewise.
8845         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
8846         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
8847         (build_var_debug_value_stat): Declare.
8848         (build_var_debug_value): Define.
8849         (target_for_debug_bind): Declare.
8850         * reload.c (find_equiv_reg): Skip debug insns.
8851         * rtlanal.c (reg_used_between_p): Skip debug insns.
8852         (side_effects_p): Likewise.
8853         (canonicalize_condition): Likewise.
8854         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
8855         insns never depend on debug insns.
8856         (create_ddg_dep_no_link): Likewise.
8857         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
8858         Don't add inter-loop dependencies for debug insns.
8859         (build_intra_loop_deps): Likewise.
8860         (create_ddg): Count debug insns.
8861         * ddg.h (struct ddg::num_debug): New.
8862         (num_backargs): Pair up with previous int field.
8863         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
8864         -fcompare-debug-second.
8865         * final.c (get_attr_length_1): Skip debug insns.
8866         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
8867         * gcc.c (invoke_as): Call compare-debug-dump-opt.
8868         (driver_self_specs): Map -fdump-final-insns to
8869         -fdump-final-insns=..
8870         (get_local_tick): New.
8871         (compare_debug_dump_opt_spec_function): Test for . argument and
8872         compute output name.  Compute temp output spec without flag name.
8873         Compute -frandom-seed.
8874         (OPT): Undef after use.
8875         * cfgloopanal.c (num_loop_insns): Skip debug insns.
8876         (average_num_loop_insns): Likewise.
8877         * params.h (MIN_NONDEBUG_INSN_UID): New.
8878         * gimple.def (GIMPLE_DEBUG): New.
8879         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
8880         * auto-inc-dec.c (merge_in_block): Skip debug insns.
8881         (merge_in_block): Fix whitespace.
8882         * toplev.c (flag_var_tracking): Update comment.
8883         (flag_var_tracking_assignments): New.
8884         (flag_var_tracking_assignments_toggle): New.
8885         (process_options): Don't open final insns dump file if we're not
8886         going to write to it.  Compute defaults for var_tracking.
8887         * df-scan.c (df_insn_rescan_debug_internal): New.
8888         (df_uses_record): Handle debug insns.
8889         * haifa-sched.c (ready): Initialize n_debug.
8890         (contributes_to_priority): Skip debug insns.
8891         (dep_list_size): New.
8892         (priority): Use it.
8893         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
8894         they're ready.  Disregard previous debug insns to make decisions.
8895         (queue_insn): Never queue debug insns.
8896         (ready_add, ready_remove_first, ready_remove): Count debug insns.
8897         (schedule_insn): Don't reject debug insns because of issue rate.
8898         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
8899         (queue_to_ready): Skip and discount debug insns.
8900         (choose_ready): Let debug insns through.
8901         (schedule_block): Check boundary debug insns.  Discount debug
8902         insns, schedule them early.  Adjust whitespace.
8903         (set_priorities): Check for boundary debug insns.
8904         (add_jump_dependencies): Use dep_list_size.
8905         (prev_non_location_insn): New.
8906         (check_cfg): Use it.
8907         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
8908         stmts.
8909         (remove_unused_ivs): Reset debug stmts.
8910         * modulo-sched.c (const_iteration_count): Skip debug insns.
8911         (res_MII): Discount debug insns.
8912         (loop_single_full_bb_p): Skip debug insns.
8913         (sms_schedule): Likewise.
8914         (sms_schedule_by_order): Likewise.
8915         (ps_has_conflicts): Likewise.
8916         * caller-save.c (refmarker_fn): New.
8917         (save_call_clobbered_regs): Replace regs with saved mem in
8918         debug insns.
8919         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
8920         Call refmarker_fn mark for hardregnos.
8921         (mark_reg_as_referenced): New.
8922         (replace_reg_with_saved_mem): New.
8923         * ipa-pure-const.c (check_stmt): Skip debug stmts.
8924         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
8925         searching back.
8926         (cse_extended_basic_block): Skip debug insns.
8927         (count_reg_usage): Likewise.
8928         (is_dead_reg): New, split out of...
8929         (set_live_p): ... here.
8930         (insn_live_p): Use it for debug insns.
8931         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
8932         (execute_optimize_stdarg): Likewise.
8933         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
8934         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
8935         changes in debug stmts as changes.
8936         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
8937         (moveup_expr): Don't move across debug insns.  Don't move
8938         debug insn if it would create a bookkeeping block.
8939         (moveup_expr_cached): Don't use cache for debug insns that
8940         are heads of blocks.
8941         (compute_av_set_inside_bb): Skip debug insns.
8942         (sel_rank_for_schedule): Schedule debug insns first.  Remove
8943         dead code.
8944         (block_valid_for_bookkeeping_p); Support lax searches.
8945         (create_block_for_bookkeeping): Adjust block numbers when
8946         encountering debug-only blocks.
8947         (find_place_for_bookkeeping): Deal with debug-only blocks.
8948         (generate_bookkeeping_insn): Accept no place to insert.
8949         (remove_temp_moveop_nops): New argument full_tidying.
8950         (prepare_place_to_insert): Deal with debug insns.
8951         (advance_state_on_fence): Debug insns don't start cycles.
8952         (update_boundaries): Take fence as argument.  Deal with
8953         debug insns.
8954         (schedule_expr_on_boundary): No full_tidying on debug insns.
8955         (fill_insns): Deal with debug insns.
8956         (track_scheduled_insns_and_blocks): Don't count debug insns.
8957         (need_nop_to_preserve_insn_bb): New, split out of...
8958         (remove_insn_from_stream): ... this.
8959         (fur_orig_expr_not_found): Skip debug insns.
8960         * rtl.def (VALUE): Move up.
8961         (DEBUG_INSN): New.
8962         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
8963         (nearest_common_dominator_of_uses): Take debug_stmts argument.
8964         Set it if debug stmts are found.
8965         (statement_sink_location): Skip debug stmts.  Propagate
8966         moving defs into debug stmts.
8967         * ifcvt.c (first_active_insn): Skip debug insns.
8968         (last_active_insns): Likewise.
8969         (cond_exec_process_insns): Likewise.
8970         (noce_process_if_block): Likewise.
8971         (check_cond_move_block): Likewise.
8972         (cond_move_convert_if_block): Likewise.
8973         (block_jumps_and_fallthru_p): Likewise.
8974         (dead_or_predicable): Likewise.
8975         * dwarf2out.c (debug_str_hash_forced): New.
8976         (find_AT_string): Add comment.
8977         (gen_label_for_indirect_string): New.
8978         (get_debug_string_label): New.
8979         (AT_string_form): Use it.
8980         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
8981         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
8982         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
8983         several operations that cannot be represented with DWARF opcodes.
8984         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
8985         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
8986         (dwarf2out_var_location): Take during-call mark into account.
8987         (output_indirect_string): Update comment.  Output if there are
8988         label and references.
8989         (prune_indirect_string): New.
8990         (prune_unused_types): Call it if debug_str_hash_forced.
8991         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
8992         (dw_long_long_const): Remove.
8993         (struct dw_val_struct): Change val_long_long type to rtx.
8994         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
8995         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
8996         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
8997         component instead of HOST_BITS_PER_LONG.
8998         (output_loc_operands): Likewise.  For const8* assert
8999         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
9000         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
9001         rather than HOST_BITS_PER_LONG is >= 64.
9002         (add_AT_long_long): Remove val_hi and val_lo arguments, add
9003         val_const_double.
9004         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
9005         HOST_BITS_PER_LONG for dw_val_class_long_long.
9006         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
9007         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
9008         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
9009         DW_OP_stack_value.
9010         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
9011         Handle DW_OP_implicit_value.
9012         (extract_int): Move prototype earlier.
9013         (mem_loc_descriptor): For SUBREG punt if inner
9014         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
9015         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
9016         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
9017         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
9018         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
9019         instead of Pmode size.
9020         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
9021         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
9022         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
9023         (concat_loc_descriptor, concatn_loc_descriptor,
9024         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
9025         (add_location_or_const_value_attribute): Likewise.  For single
9026         location loc_lists attempt to use add_const_value_attribute
9027         for constant decls.  Add DW_AT_const_value even if
9028         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
9029         in its expression.
9030         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
9031         (control_flow_insn_p): Likewise.
9032         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
9033         (separate_decls_in_region_debug_bind): New.
9034         (separate_decls_in_region): Process debug bind stmts afterwards.
9035         * recog.c (verify_changes): Handle debug insns.
9036         (extract_insn): Likewise.
9037         (peephole2_optimize): Skip debug insns.
9038         * dse.c (scan_insn): Skip debug insns.
9039         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
9040         Pass it on.
9041         (setup_id_for_insn): Handle debug insns.
9042         (maybe_tidy_empty_bb): Adjust whitespace.
9043         (tidy_control_flow): Skip debug insns.
9044         (sel_remove_insn): Adjust for debug insns.
9045         (sel_estimate_number_of_insns): Skip debug insns.
9046         (create_insn_rtx_from_pattern): Handle debug insns.
9047         (create_copy_of_insn_rtx): Likewise.
9048         * sel-sched-.h (sel_bb_end): Declare.
9049         (sel_bb_empty_or_nop_p): New.
9050         (get_all_loop_exits): Use it.
9051         (_eligible_successor_edge_p): Likewise.
9052         (return_nop_to_pool): Adjust.
9053         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
9054         * ira-lives.c (process_bb_node_lives): Skip debug insns.
9055         * gimple-pretty-print.c (dump_gimple_debug): New.
9056         (dump_gimple_stmt): Use it.
9057         (dump_bb_header): Skip gimple debug stmts.
9058         * regmove.c (optimize_reg_copy_1): Discount debug insns.
9059         (fixup_match_2): Likewise.
9060         (regmove_backward_pass): Likewise.  Simplify combined
9061         replacement.  Handle debug insns.
9062         * function.c (instantiate_virtual_regs): Handle debug insns.
9063         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
9064         * print-rtl.h: Include cselib.h.
9065         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
9066         * df.h (df_inns_rescan_debug_internal): Declare.
9067         * gcse.c (alloc_hash_table): Estimate n_insns.
9068         (cprop_insn): Don't regard debug insns as changes.
9069         (bypass_conditional_jumps): Skip debug insns.
9070         (one_pre_gcse_pass): Adjust.
9071         (one_code_hoisting_pass): Likewise.
9072         (compute_ld_motion_mems): Skip debug insns.
9073         (one_cprop_pass): Adjust.
9074         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
9075         (if_convertible_stmt_p): Handle debug stmts.
9076         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
9077         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
9078         * ira-build.c (create_bb_allocnos): Skip debug insns.
9079         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
9080         (has_single_use): Likewise.
9081         (single_imm_use): Likewise.
9082         (num_imm_uses): Likewise.
9083         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
9084         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
9085         (create_outofssa_var_map): Likewise.
9086         * lower-subreg.c (adjust_decomposed_uses): New.
9087         (resolve_debug): New.
9088         (decompose_multiword_subregs): Use it.
9089         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
9090         * emit-rtl.c: Include params.h.
9091         (cur_debug_insn_uid): Define.
9092         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
9093         (copy_rtx_if_shared_1): Handle debug insns.
9094         (reset_used_flags): Likewise.
9095         (set_used_flags): LIkewise.
9096         (get_max_insn_count): New.
9097         (next_nondebug_insn): New.
9098         (prev_nondebug_insn): New.
9099         (make_debug_insn_raw): New.
9100         (emit_insn_before_noloc): Handle debug insns.
9101         (emit_jump_insn_before_noloc): Likewise.
9102         (emit_call_insn_before_noloc): Likewise.
9103         (emit_debug_insn_before_noloc): New.
9104         (emit_insn_after_noloc): Handle debug insns.
9105         (emit_jump_insn_after_noloc): Likewise.
9106         (emit_call_insn_after_noloc): Likewise.
9107         (emit_debug_insn_after_noloc): Likewise.
9108         (emit_insn_after): Take loc from earlier non-debug insn.
9109         (emit_jump_insn_after): Likewise.
9110         (emit_call_insn_after): Likewise.
9111         (emit_debug_insn_after_setloc): New.
9112         (emit_debug_insn_after): New.
9113         (emit_insn_before): Take loc from later non-debug insn.
9114         (emit_jump_insn_before): Likewise.
9115         (emit_call_insn_before): Likewise.
9116         (emit_debug_insn_before_setloc): New.
9117         (emit_debug_insn_before): New.
9118         (emit_insn): Handle debug insns.
9119         (emit_debug_insn): New.
9120         (emit_jump_insn): Handle debug insns.
9121         (emit_call_insn): Likewise.
9122         (emit): Likewise.
9123         (init_emit): Take min-nondebug-insn-uid into account.
9124         Initialize cur_debug_insn_uid.
9125         (emit_copy_of_insn_after): Handle debug insns.
9126         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
9127         location of single rhs in place.
9128         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
9129         (floor_sdiv_adjust): New.
9130         (cell_sdiv_adjust): New.
9131         (cell_udiv_adjust): New.
9132         (round_sdiv_adjust): New.
9133         (round_udiv_adjust): New.
9134         (wrap_constant): Moved from cselib.
9135         (unwrap_constant): New.
9136         (expand_debug_expr): New.
9137         (expand_debug_locations): New.
9138         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
9139         debug bind stmts.
9140         (gimple_expand_cfg): Expand debug locations.
9141         * cselib.c: Include tree-pass.h.
9142         (struct expand_value_data): New.
9143         (cselib_record_sets_hook): New.
9144         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
9145         (cselib_clear_table): Move, and implemnet in terms of...
9146         (cselib_reset_table_with_next_value): ... this.
9147         (cselib_get_next_unknown_value): New.
9148         (discard_useless_locs): Don't discard preserved values.
9149         (cselib_preserve_value): New.
9150         (cselib_preserved_value_p): New.
9151         (cselib_preserve_definitely): New.
9152         (cselib_clear_preserve): New.
9153         (cselib_preserve_only_values): New.
9154         (new_cselib_val): Take rtx argument.  Dump it in details.
9155         (cselib_lookup_mem): Adjust.
9156         (expand_loc): Take regs_active in struct.  Adjust.  Silence
9157         dumps unless details are requested.
9158         (cselib_expand_value_rtx_cb): New.
9159         (cselib_expand_value_rtx): Rename and reimplment in terms of...
9160         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
9161         without details.  Copy more subregs.  Try to resolve values
9162         using a callback.  Wrap constants.
9163         (cselib_subst_to_values): Adjust.
9164         (cselib_log_lookup): New.
9165         (cselib_lookup): Call it.
9166         (cselib_invalidate_regno): Don't count preserved values as useless.
9167         (cselib_invalidate_mem): Likewise.
9168         (cselib_record_set): Likewise.
9169         (struct set): Renamed to cselib_set, moved to cselib.h.
9170         (cselib_record_sets): Adjust.  Call hook.
9171         (cselib_process_insn): Reset table when it would be cleared.
9172         (dump_cselib_val): New.
9173         (dump_cselib_table): New.
9174         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
9175         (remove_forwarder_block): Support moving debug stmts.
9176         * cselib.h (cselib_record_sets_hook): Declare.
9177         (cselib_expand_callback): New type.
9178         (cselib_expand_value_rtx_cb): Declare.
9179         (cselib_reset_table_with_next_value): Declare.
9180         (cselib_get_next_unknown_value): Declare.
9181         (cselib_preserve_value): Declare.
9182         (cselib_preserved_value_p): Declare.
9183         (cselib_preserve_only_values): Declare.
9184         (dump_cselib_table): Declare.
9185         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
9186         (try_crossjump_to_edge): Likewise.
9187         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
9188         dominated blocks when debug stmts are present.
9189         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
9190         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
9191         (set_var_live_on_entry): Likewise.
9192         * loop-invariant.c (find_invariants_bb): Skip debug insns.
9193         * cfglayout.c (curr_location, last_location): Make static.
9194         (set_curr_insn_source_location): Don't avoid bouncing.
9195         (get_curr_insn_source_location): New.
9196         (get_curr_insn_block): New.
9197         (duplicate_insn_chain): Handle debug insns.
9198         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
9199         into debug stmts.
9200         * common.opt (fcompare-debug): Move to sort order.
9201         (fdump-unnumbered-links): Likewise.
9202         (fvar-tracking-assignments): New.
9203         (fvar-tracking-assignments-toggle): New.
9204         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
9205         because of debug stmts.
9206         (mark_stmt_if_obviously_necessary): Mark debug stmts.
9207         (eliminate_unnecessary_stmts): Walk dominated blocks before
9208         dominators.
9209         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
9210         * ira.c (memref_used_between_p): Skip debug insns.
9211         (update_equiv_regs): Likewise.
9212         * sched-deps.c (sd_lists_size): Accept empty list.
9213         (sd_init_insn): Mark debug insns.
9214         (sd_finish_insn): Unmark them.
9215         (sd_add_dep): Reject non-debug deps on debug insns.
9216         (fixup_sched_groups): Give debug insns group treatment.
9217         Skip debug insns.
9218         (sched_analyze_reg): Don't mark debug insns for sched before call.
9219         (sched_analyze_2): Handle debug insns.
9220         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
9221         insns.
9222         (deps_analyze_insn): Handle debug insns.
9223         (deps_start_bb): Skip debug insns.
9224         (init_deps): Initialize last_debug_insn.
9225         * tree-ssa.c (target_for_debug_bind): New.
9226         (find_released_ssa_name): New.
9227         (propagate_var_def_into_debug_stmts): New.
9228         (propagate_defs_into_debug_stmts): New.
9229         (verify_ssa): Skip debug bind stmts without values.
9230         (warn_uninialized_vars): Skip debug stmts.
9231         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
9232         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
9233         (rtx_equal_p): Likewise.
9234         * ira-costs.c (scan_one_insn): Skip debug insns.
9235         (process_bb_node_for_hard_reg_moves): Likewise.
9236         * rtl.h (DEBUG_INSN_P): New.
9237         (NONDEBUG_INSN_P): New.
9238         (MAY_HAVE_DEBUG_INSNS): New.
9239         (INSN_P): Accept debug insns.
9240         (RTX_FRAME_RELATED_P): Likewise.
9241         (INSN_DELETED_P): Likewise
9242         (PAT_VAR_LOCATION_DECL): New.
9243         (PAT_VAR_LOCATION_LOC): New.
9244         (PAT_VAR_OCATION_STATUS): New.
9245         (NOTE_VAR_LOCATION_DECL): Reimplement.
9246         (NOTE_VAR_LOCATION_LOC): Likewise.
9247         (NOTE_VAR_LOCATION_STATUS): Likewise.
9248         (INSN_VAR_LOCATION): New.
9249         (INSN_VAR_LOCATION_DECL): New.
9250         (INSN_VAR_LOCATION_LOC): New.
9251         (INSN_VAR_LOCATION_STATUS): New.
9252         (gen_rtx_UNKNOWN_VAR_LOC): New.
9253         (VAR_LOC_UNKNOWN_P): New.
9254         (NOTE_DURING_CALL_P): New.
9255         (SCHED_GROUP_P): Accept debug insns.
9256         (emit_debug_insn_before): Declare.
9257         (emit_debug_insn_before_noloc): Declare.
9258         (emit_debug_insn_beore_setloc): Declare.
9259         (emit_debug_insn_after): Declare.
9260         (emit_debug_insn_after_noloc): Declare.
9261         (emit_debug_insn_after_setloc): Declare.
9262         (emit_debug_insn): Declare.
9263         (make_debug_insn_raw): Declare.
9264         (prev_nondebug_insn): Declare.
9265         (next_nondebug_insn): Declare.
9266         (delegitimize_mem_from_attrs): Declare.
9267         (get_max_insn_count): Declare.
9268         (wrap_constant): Declare.
9269         (unwrap_constant): Declare.
9270         (get_curr_insn_source_location): Declare.
9271         (get_curr_insn_block): Declare.
9272         * tree-inline.c (insert_debug_decl_map): New.
9273         (processing_debug_stmt): New.
9274         (remap_decl): Don't create new mappings in debug stmts.
9275         (remap_gimple_op_r): Don't add references in debug stmts.
9276         (copy_tree_body_r): Likewise.
9277         (remap_gimple_stmt): Handle debug bind stmts.
9278         (copy_bb): Skip debug stmts.
9279         (copy_edges_for_bb): Likewise.
9280         (copy_debug_stmt): New.
9281         (copy_debug_stmts): New.
9282         (copy_body): Copy debug stmts at the end.
9283         (insert_init_debug_bind): New.
9284         (insert_init_stmt): Take id.  Skip and emit debug stmts.
9285         (setup_one_parameter): Remap variable earlier, register debug mapping.
9286         (estimate_num_insns): Skip debug stmts.
9287         (expand_call_inline): Preserve debug_map.
9288         (optimize_inline_calls): Check for no debug_stmts left-overs.
9289         (unsave_expr_now): Preserve debug_map.
9290         (copy_gimple_seq_and_replace_locals): Likewise.
9291         (tree_function_versioning): Check for no debug_stmts left-overs.
9292         Init and destroy debug_map as needed.  Split edges unconditionally.
9293         (build_duplicate_type): Init and destroy debug_map as needed.
9294         * tree-inline.h: Include gimple.h instead of pointer-set.h.
9295         (struct copy_body_data): Add debug_stmts and debug_map.
9296         * sched-int.h (struct ready_list): Add n_debug.
9297         (struct deps): Add last_debug_insn.
9298         (DEBUG_INSN_SCHED_P): New.
9299         (BOUNDARY_DEBUG_INSN_P): New.
9300         (SCHEDULE_DEBUG_INSN_P): New.
9301         (sd_iterator_cond): Accept empty list.
9302         * combine.c (create_log_links): Skip debug insns.
9303         (combine_instructions): Likewise.
9304         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
9305         return value is always unshared.
9306         (struct rtx_subst_pair): New.
9307         (auto_adjust_pair): New.
9308         (propagate_for_debug_subst): New.
9309         (propagate_for_debug): New.
9310         (try_combine): Skip debug insns.  Propagate removed defs into
9311         debug insns.
9312         (next_nonnote_nondebug_insn): New.
9313         (distribute_notes): Use it.  Skip debug insns.
9314         (distribute_links): Skip debug insns.
9315         * tree-outof-ssa.c (set_location_for_edge): Likewise.
9316         * resource.c (mark_target_live_regs): Likewise.
9317         * var-tracking.c: Include cselib.h and target.h.
9318         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
9319         MO_VAL_SET.
9320         (micro_operation_type_name): New.
9321         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
9322         (struct micro_operation_def): Update comments.
9323         (decl_or_value): New type.  Use instead of decls.
9324         (struct emit_note_data_def): Add vars.
9325         (struct attrs_def): Use decl_or_value.
9326         (struct variable_tracking_info_def): Add permp, flooded.
9327         (struct location_chain_def): Update comment.
9328         (struct variable_part_def): Use decl_or_value.
9329         (struct variable_def): Make var_part a variable length array.
9330         (valvar_pool): New.
9331         (scratch_regs): New.
9332         (cselib_hook_called): New.
9333         (dv_is_decl_p): New.
9334         (dv_is_value_p): New.
9335         (dv_as_decl): New.
9336         (dv_as_value): New.
9337         (dv_as_opaque): New.
9338         (dv_onepart_p): New.
9339         (dv_pool): New.
9340         (IS_DECL_CODE): New.
9341         (check_value_is_not_decl): New.
9342         (dv_from_decl): New.
9343         (dv_from_value): New.
9344         (dv_htab_hash): New.
9345         (variable_htab_hash): Use it.
9346         (variable_htab_eq): Support values.
9347         (variable_htab_free): Free from the right pool.
9348         (attrs_list_member, attrs_list_insert): Use decl_or_value.
9349         (attrs_list_union): Adjust.
9350         (attrs_list_mpdv_union): New.
9351         (tie_break_pointers): New.
9352         (canon_value_cmp): New.
9353         (unshare_variable): Return possibly-modified slot.
9354         (vars_copy_1): Adjust.
9355         (var_reg_decl_set): Adjust.  Split out of...
9356         (var_reg_set): ... this.
9357         (get_init_value): Adjust.
9358         (var_reg_delete_and_set): Adjust.
9359         (var_reg_delete): Adjust.
9360         (var_regno_delete): Adjust.
9361         (var_mem_decl_set): Split out of...
9362         (var_mem_set): ... this.
9363         (var_mem_delete_and_set): Adjust.
9364         (var_mem_delete): Adjust.
9365         (val_store): New.
9366         (val_reset): New.
9367         (val_resolve): New.
9368         (variable_union): Adjust.  Speed up merge of 1-part vars.
9369         (variable_canonicalize): Use unshared slot.
9370         (VALUED_RECURSED_INTO): New.
9371         (find_loc_in_1pdv): New.
9372         (struct dfset_merge): New.
9373         (insert_into_intersection): New.
9374         (intersect_loc_chains): New.
9375         (loc_cmp): New.
9376         (canonicalize_loc_order_check): New.
9377         (canonicalize_values_mark): New.
9378         (canonicalize_values_star): New.
9379         (variable_merge_over_cur): New.
9380         (variable_merge_over_src): New.
9381         (dataflow_set_merge): New.
9382         (dataflow_set_equiv_regs): New.
9383         (remove_duplicate_values): New.
9384         (struct dfset_post_merge): New.
9385         (variable_post_merge_new_vals): New.
9386         (variable_post_merge_perm_vals): New.
9387         (dataflow_post_merge_adjust): New.
9388         (find_mem_expr_in_1pdv): New.
9389         (dataflow_set_preserve_mem_locs): New.
9390         (dataflow_set_remove_mem_locs): New.
9391         (dataflow_set_clear_at_call): New.
9392         (onepart_variable_different_p): New.
9393         (variable_different_p): Use it.
9394         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
9395         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
9396         if not needed.
9397         (track_loc_p): Pass it true.
9398         (struct count_use_info): New.
9399         (find_use_val): New.
9400         (replace_expr_with_values): New.
9401         (log_op_type): New.
9402         (use_type): New, partially split out of...
9403         (count_uses): ... this.  Count new micro-ops.
9404         (count_uses_1): Adjust.
9405         (count_stores): Adjust.
9406         (count_with_sets): New.
9407         (VAL_NEEDS_RESOLUTION): New.
9408         (VAL_HOLDS_TRACK_EXPR): New.
9409         (VAL_EXPR_IS_COPIED): New.
9410         (VAL_EXPR_IS_CLOBBERED): New.
9411         (add_uses): Adjust.  Generate new micro-ops.
9412         (add_uses_1): Adjust.
9413         (add_stores): Generate new micro-ops.
9414         (add_with_sets): New.
9415         (find_src_status): Adjust.
9416         (find_src_set_src): Adjust.
9417         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
9418         Handle new micro-ops.  Canonicalize value equivalances.
9419         (vt_find_locations): Compute total size of hash tables for
9420         dumping.  Perform merge for var-tracking-assignments.  Don't
9421         disregard single-block loops.
9422         (dump_attrs_list): Handle decl_or_value.
9423         (dump_variable): Take variable.  Deal with decl_or_value.
9424         (dump_variable_slot): New.
9425         (dump_vars): Use it.
9426         (dump_dataflow_sets): Adjust.
9427         (set_slot_part): New, extended to support one-part variables
9428         after splitting out of...
9429         (set_variable_part): ... this.
9430         (clobber_slot_part): New, split out of...
9431         (clobber_variable_part): ... this.
9432         (delete_slot_part): New, split out of...
9433         (delete_variable_part): .... this.
9434         (check_wrap_constant): New.
9435         (vt_expand_loc_callback): New.
9436         (vt_expand_loc): New.
9437         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
9438         EMIT_NOTE_AFTER_CALL_INSN.
9439         (emit_notes_for_differences_1): Adjust.  Handle values.
9440         (emit_notes_for_differences_2): Likewise.
9441         (emit_notes_for_differences): Adjust.
9442         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
9443         Adjust.  Handle new micro-ops.
9444         (vt_add_function_parameters): Adjust.  Create and bind values.
9445         (vt_initialize): Adjust.  Initialize scratch_regs and
9446         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
9447         operations.  Move some code to count_with_sets and add_with_sets.
9448         (delete_debug_insns): New.
9449         (vt_debug_insns_local): New.
9450         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
9451         cselib.
9452         (var_tracking_main): If var-tracking-assignments is enabled
9453         but var-tracking isn't, delete debug insns and leave.  Likewise
9454         if we exceed limits or fail the stack adjustments tests, and
9455         after all var-tracking processing.
9456         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
9457         (dataflow_set): Add traversed_vars.
9458         (value_chain, const_value_chain): New typedefs.
9459         (value_chain_pool, value_chains): New variables.
9460         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
9461         add_value_chains, add_cselib_value_chains, remove_value_chain,
9462         remove_value_chains, remove_cselib_value_chains): New functions.
9463         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
9464         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
9465         static inlines.
9466         (shared_hash_find_slot_unshare, shared_hash_find_slot,
9467         shared_hash_find_slot_noinsert, shared_hash_find): Update.
9468         (dst_can_be_shared): New variable.
9469         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
9470         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
9471         different from set->vars, look up slot again instead of using the
9472         passed in slot.
9473         (dataflow_set_init): Initialize traversed_vars.
9474         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
9475         lookup if set->vars is shared.  Don't keep slot cleared before
9476         calling unshare_variable.  Unshare set->vars if needed.  Adjust
9477         unshare_variable callers.  Clear dst_can_be_shared if needed.
9478         Even ->refcount == 1 vars must be unshared if set->vars is shared
9479         and var needs to be modified.
9480         (dataflow_set_union): Set traversed_vars during canonicalization.
9481         (VALUE_CHANGED, DECL_CHANGED): Define.
9482         (set_dv_changed, dv_changed_p): New static inlines.
9483         (track_expr_p): Clear DECL_CHANGED.
9484         (dump_dataflow_sets): Set it.
9485         (variable_was_changed): Call set_dv_changed.
9486         (emit_note_insn_var_location): Likewise.
9487         (changed_variables_stack): New variable.
9488         (check_changed_vars_1, check_changed_vars_2): New functions.
9489         (emit_notes_for_changes): Do nothing if changed_variables is
9490         empty.  Traverse changed_variables with check_changed_vars_1,
9491         call check_changed_vars_2 on each changed_variables_stack entry.
9492         (emit_notes_in_bb): Add SET argument.  Just clear it at the
9493         beginning, use it instead of local &set, don't destroy it at the end.
9494         (vt_emit_notes): Call dataflow_set_clear early on all
9495         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
9496         computed set, dataflow_set_clear also VTI(bb)->in when we are
9497         done with the basic block.  Initialize changed_variables_stack,
9498         free it afterwards.  If ENABLE_CHECKING verify that after noting
9499         differences to an empty set value_chains hash table is empty.
9500         (vt_initialize): Initialize value_chains and value_chain_pool.
9501         (vt_finalize): Delete value_chains htab, free value_chain_pool.
9502         (variable_tracking_main): Call dump_dataflow_sets before calling
9503         vt_emit_notes, not after it.
9504         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
9505         (propagate_var_def_into_debug_stmts): Declare.
9506         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
9507         (df_set_note): Reject debug insns.
9508         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
9509         add notes to debug insns.
9510         (df_note_bb_compute): Adjust.  Likewise.
9511         (df_simulate_uses): Skip debug insns.
9512         (df_simulate_initialize_backwards): Likewise.
9513         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
9514         (subst_stack_regs_pat): Reject debug insns.
9515         (convert_regs_1): Handle debug insns.
9516         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
9517         (print-rtl.o): Depend on cselib.h.
9518         (cselib.o): Depend on TREE_PASS_H.
9519         (var-tracking.o): Depend on cselib.h and TARGET_H.
9520         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
9521         (init_ready_list): Skip boundary debug insns.
9522         (add_branch_dependences): Skip debug insns.
9523         (free_block_dependencies): Check for blocks with only debug insns.
9524         (compute_priorities): Likewise.
9525         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
9526         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
9527         all callers.
9528         (gimple_build_debug_bind_stat): New.
9529         (empty_body_p): Skip debug stmts.
9530         (gimple_has_side_effects): Likewise.
9531         (gimple_rhs_has_side_effects): Likewise.
9532         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
9533         (gimple_build_debug_bind_stat): Declare.
9534         (gimple_build_debug_bind): Define.
9535         (is_gimple_debug): New.
9536         (gimple_debug_bind_p): New.
9537         (gimple_debug_bind_get_var): New.
9538         (gimple_debug_bind_get_value): New.
9539         (gimple_debug_bind_get_value_ptr): New.
9540         (gimple_debug_bind_set_var): New.
9541         (gimple_debug_bind_set_value): New.
9542         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
9543         (gimple_debug_bind_reset_value): New.
9544         (gimple_debug_bind_has_value_p): New.
9545         (gsi_next_nondebug): New.
9546         (gsi_prev_nondebug): New.
9547         (gsi_start_nondebug_bb): New.
9548         (gsi_last_nondebug_bb): New.
9549         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
9550         (print_insn): Handle DEBUG_INSN.
9551         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
9552         of first insn prevail.
9553         (first_stmt): Skip debug stmts.
9554         (first_non_label_stmt): Likewise.
9555         (last_stmt): Likewise.
9556         (has_zero_uses_1): New.
9557         (single_imm_use_1): New.
9558         (verify_gimple_debug): New.
9559         (verify_types_in_gimple_stmt): Handle debug stmts.
9560         (verify_stmt): Likewise.
9561         (debug_loop_num): Skip debug stmts.
9562         (remove_edge_and_dominated_blocks): Remove dominators last.
9563         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
9564         (linearize_expr): Likewise.
9565         * config/i386/i386.c (ix86_delegitimize_address): Call
9566         default implementation.
9567         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
9568         (group_barrier_needed): Skip debug insns.
9569         (emit_insn_group_barriers): Likewise.
9570         (emit_all_insn_group_barriers): Likewise.
9571         (ia64_variable_issue): Handle debug insns.
9572         (ia64_dfa_new_cycle): Likewise.
9573         (final_emit_insn_group_barriers): Skip debug insns.
9574         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
9575         def cfa without frame.
9576         (process_set): Likewise.
9577         (process_for_unwind_directive): Pass frame on.
9578         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
9579         (rs6000_delegitimize_address): New.
9580         (rs6000_debug_adjust_cost): Handle debug insns.
9581         (is_microcoded_insn): Likewise.
9582         (is_cracked_insn): Likewise.
9583         (is_nonpipeline_insn): Likewise.
9584         (insn_must_be_first_in_group): Likewise.
9585         (insn_must_be_last_in_group): Likewise.
9586         (force_new_group): Likewise.
9587         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
9588         contains only debug insns.
9589         (rtl_merge_blocks): Skip debug insns.
9590         (purge_dead_edges): Likewise.
9591         (rtl_block_ends_with_call_p): Skip debug insns.
9592         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
9593         (mark_reg_dependencies): Skip debug insns.
9594         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
9595         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
9596         * tree-ssa-threadedge.c
9597         (record_temporary_equivalences_from_stmts): Skip debug stmts.
9598         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
9599         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
9600         (copyprop_hardreg_forward_1): Handle debug insns.
9601         * reload1.c (reload): Skip debug insns.  Replace unassigned
9602         pseudos in debug insns with their equivalences.
9603         (eliminate_regs_in_insn): Skip debug insns.
9604         (emit_input_reload_insns): Skip debug insns at first, adjust
9605         them later.
9606         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
9607         (get_indirect_ref_operands): Pass opf_no_vops on.
9608         (get_expr_operands): Likewise.  Skip debug stmts.
9609         (parse_ssa_operands): Scan debug insns with opf_no_vops.
9610
9611 2009-09-01  Richard Henderson  <rth@redhat.com>
9612
9613         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
9614         stmt_ends_pp_p statements at least once.
9615         * tree-vrp.c (vrp_initialize): Likewise.
9616         (vrp_visit_stmt): Be prepared for non-interesting stmts.
9617
9618 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
9619
9620         PR bootstrap/41205
9621         Fix AIX bootstrap after PR debug/30161
9622         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
9623         that is a GNU extension.
9624         (tmpl_value_parm_die_table): Move the definition of this global
9625         outside #ifdef DWARF2_DEBUGGING_INFO region.
9626
9627 2009-09-01  Richard Guenther  <rguenther@suse.de>
9628
9629         * tree.c (tree_expr_size): New function.
9630         * tree.h (tree_expr_size): Declare.
9631         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
9632         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
9633         * langhooks.c (lhd_expr_size): Remove.
9634         * langhooks.h (struct lang_hooks): Remove expr_size.
9635         * explow.c (expr_size): Use tree_expr_size.
9636         (int_expr_size): Likewise.
9637         * langhooks-def.h (lhd_expr_size): Remove.
9638         (LANG_HOOKS_EXPR_SIZE): Likewise.
9639         (LANG_HOOKS_INITIALIZER): Adjust.
9640
9641 2009-09-01  Richard Guenther  <rguenther@suse.de>
9642
9643         * tree-flow.h (mark_addressable): Move declaration ...
9644         * tree.h (mark_addressable): ... here.
9645         * stmt.c (expand_asm_operands): Use mark_addressable, not
9646         lang_hooks.mark_addressable.
9647         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
9648         LANG_HOOKS_MARK_ADDRESSABLE.
9649         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
9650         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
9651
9652 2009-08-31  Chris Demetriou  <cgd@google.com>
9653
9654         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
9655         vectorize if not TARGET_SSE2.
9656
9657 2009-08-31  DJ Delorie  <dj@redhat.com>
9658
9659         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
9660         registers if no coprocessor is enabled.
9661
9662 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
9663
9664         PR debug/30161
9665         * cgraph.h (cgraph_get_node): Declare ...
9666         * cgraph.c (cgraph_get_node): ... new function.
9667         * dwarf2out.c (gen_generic_params_dies,
9668         generic_parameter_die, tree_add_const_value_attribute_for_decl,
9669         make_ith_pack_parameter_name,
9670         append_entry_to_tmpl_value_parm_die_table,
9671         gen_remaining_tmpl_value_param_die_attribute): New functions.
9672         (gen_subprogram_die): Generate debug info for template parameters
9673         if debug info level is higher than DINFO_LEVEL_TERSE.
9674         Use tree_add_const_value_attribute_for_decl instead of
9675         tree_add_const_value_attribute.
9676         (gen_const_die): Use tree_add_const_value_attribute_for_decl
9677         instead of tree_add_const_value_attribute.
9678         (gen_struct_or_union_type_die): Generate debug
9679         info for template parameters if debug info level is higher than
9680         DINFO_LEVEL_TERSE.
9681         (tree_add_const_value_attribute): Handle integral and pointer
9682         constants. Update comment.
9683         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
9684         (dwarf_attr_name): Support DW_AT_GNU_template_name.
9685         (reference_to_unused): Fix thinko. Remove redundant predicates from
9686         tests.
9687         (tree_add_const_value_attribute): Make this work for constant
9688         expressions only.
9689         tree_add_const_value_attribute_for_decl is to be used for variable
9690         DECLs now.
9691         (add_location_or_const_value_attribute): Use
9692         tree_add_const_value_attribute_for_decl now.
9693         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
9694         DW_TAG_template_value_param DIEs after function DIEs have been
9695         emitted.
9696         * langhooks.h (lang_hooks_for_types): Add
9697         get_argument_pack_elems.
9698         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
9699         (lang_hooks): Added get_innermost_generic_parms,
9700         get_innermost_generic_args.
9701         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
9702         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
9703         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
9704         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
9705
9706 2009-08-31  DJ Delorie  <dj@redhat.com>
9707
9708         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
9709         it once we start generating the prologue or epilogue.
9710         (mep_call_saves_register): If the frame is locked, re-use
9711         cached values.
9712         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
9713         (mep_expand_prologue): Call it.
9714         (mep_expand_epilogue): Likewise.
9715         (mep_start_function): Use the same logic as mep_expand_prologue.
9716         (mep_pass_by_reference): Make logic more readable.
9717         (mep_return_in_memory): Zero-sized objects are passed in memory.
9718         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
9719
9720 2009-08-31  Richard Guenther  <rguenther@suse.de>
9721
9722         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9723         to query if the memory regions for memmove overlap.
9724         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
9725         asserts on pointers, instead deal with odd trees.
9726         (ptr_derefs_may_alias_p): Likewise.
9727         (refs_may_alias_p_1): Constructor bases also never alias.
9728
9729 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
9730
9731         * doc/install.texi (Final install): Adjust reference on where to
9732         order printed manuals.
9733
9734 2009-08-30  Olivier Hainque  <hainque@adacore.com>
9735
9736         * dwarf2out.c (switch_to_frame_table_section): Move
9737         definition prior to first use.
9738
9739 2009-08-30  Richard Guenther  <rguenther@suse.de>
9740
9741         PR tree-optimization/41186
9742         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
9743         (ao_ref_init_from_ptr_and_size): New function.
9744         (ref_maybe_used_by_call_p_1): Be more precise tracking
9745         used ranges for builtin functions.
9746         (ref_maybe_used_by_call_p): Adjust.
9747         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
9748         ranges for builtin functions.
9749         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
9750
9751 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
9752
9753         PR target/41081
9754         * fwprop.c (get_reg_use_in): Delete.
9755         (free_load_extend): New function.
9756         (forward_propagate_subreg): Use it.
9757
9758 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9759
9760         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
9761
9762 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
9763
9764         PR/41184
9765         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
9766         padding.
9767
9768 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
9769
9770         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
9771         fini or fini_array section.
9772
9773 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9774
9775         * graphite-dependences.c (graphite_legal_transform_bb): Call
9776         pbb_remove_duplicate_pdrs.
9777         * graphite-poly.c (can_collapse_pdr): Removed.
9778         (pdr_find_duplicate): Removed.
9779         (can_collapse_pdrs): New.
9780         (pbb_remove_duplicate_pdrs): New.
9781         (new_poly_dr): Do not look for duplicates.
9782         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
9783         (PBB_PDR_DUPLICATES_REMOVED): New.
9784         (pbb_remove_duplicate_pdrs): Declared.
9785
9786 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9787
9788         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
9789         the strides by multiplying by PDR_NB_REFS.
9790         * graphite-poly.c (can_collapse_pdr): New.
9791         (pdr_find_duplicate): New.
9792         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
9793         Initialize PDR_NB_REFS.
9794         * graphite-poly.h (struct poly_dr): Add field nb_refs.
9795         (PDR_NB_REFS): New.
9796         (new_poly_dr): Number of subscripts is a graphite_dim_t.
9797
9798 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9799
9800         PR middle-end/40965
9801         * graphite-poly.c (apply_poly_transforms): Remove legality test before
9802         any transform.
9803
9804 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9805
9806         * graphite-dependences.c (pddr_original_scattering): Return NULL
9807         for read-read dependence relations.
9808         * graphite-poly.h (enum poly_dr_type): Fix comment.
9809         (pdr_read_p): New.
9810         (pdr_write_p): New.
9811         (pdr_may_write_p): New.
9812
9813 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9814
9815         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
9816         (struct poly_dr): Same.
9817         (new_poly_dr): Same.
9818         * graphite-poly.c (new_poly_dr): Same.
9819         * graphite-dependences.c (dot_deps): Disable call to system.
9820
9821 2009-08-28  Cary Coutant  <ccoutant@google.com>
9822
9823         PR debug/41063
9824         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
9825         struct/union/enum types local to a function.
9826
9827 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9828             Sebastian Pop  <sebastian.pop@amd.com>
9829
9830         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
9831         pbb_strip_mine_time_depth.  Changed the implementation so that
9832         transformation is expressed as a transformation on
9833         time (scatttering) dimensions.  Also, ensures that the 2d+1
9834         scheduling format is preserved.
9835         (pbb_strip_mine_profitable_p): Profitability is based on the
9836         iteration number of a given time (scattering) dimension,
9837         and not on a original loop depth dimension.
9838         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
9839         (pbb_do_strip_mine): Call psct_dynamic_dim.
9840         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
9841         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
9842         (pbb_nb_dynamic_scattering_transform): New.
9843         (psct_dynamic_dim): New.
9844
9845 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
9846
9847         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9848         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
9849         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
9850         * graphite-interchange.c (build_linearized_memory_access): Same.
9851         (memory_stride_in_loop): Same.
9852
9853 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9854
9855         * graphite-dependences.c (pddr_original_scattering): New.
9856         (graphite_legal_transform_dr): Call pddr_original_scattering.
9857         (dot_deps_1): New.
9858         (dot_deps): New.
9859         * graphite-dependences.h (dot_deps): Declared.
9860         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
9861         (print_pdr): Print PDR_ID.
9862         * graphite-poly.h (struct poly_dr): Add field id.
9863         (PDR_ID): New.
9864         (pbb_index): New.
9865         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
9866
9867 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9868
9869         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
9870         not delete the original dependence relation.
9871
9872 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9873
9874         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
9875         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
9876         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
9877         (free_poly_ddr): New.
9878         (pddr_is_empty): New.
9879         (dependence_polyhedron_1): Now returns a poly_ddr_p.
9880         (dependence_polyhedron): Same.  Remove useless gcc_assert.
9881         Remove fprintfs.
9882         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
9883         (graphite_carried_dependence_level_k): Call pddr_is_empty.
9884         * graphite-dependences.h (enum poly_dependence_kind): New.
9885         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
9886         (PDRP_SOURCE): Renamed PDDR_SOURCE.
9887         (PDRP_SINK): Renamed PDDR_SINK.
9888         (PDRP_DDP): Renamed PDDR_DDP.
9889         (PDDR_KIND): New.
9890         (free_poly_ddr): Declared.
9891         * graphite-poly.c (new_scop): Use the new hash function names.
9892         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
9893         into original_pddrs.
9894         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
9895
9896 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9897
9898         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
9899         bounds with LT_EXPR to make niter analysis more precise on code
9900         generated by Graphite.
9901
9902 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
9903
9904         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
9905         (graphite_legal_transform_bb): Same.
9906         (poly_drs_may_alias_p): Same.
9907
9908 2009-08-28  Richard Guenther  <rguenther@suse.de>
9909
9910         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
9911
9912 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9913
9914         * config/i386/netware.c: Include langhooks.h.
9915         (i386_nlm_encode_section_info): Simplify.
9916         (netware_override_options): Delete.
9917         * config/i386/netware.h (netware_override_options): Delete
9918         declaration.
9919         (OVERRIDE_OPTIONS): Delete definition.
9920         (SUBTARGET_OVERRIDE_OPTIONS): Define.
9921         (ASM_COMMENT_START): Define.
9922         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
9923
9924 2009-08-28  Jan Beulich  <jbeulich@novell.com>
9925
9926         * configure.ac: For in-tree ld, do a plain version check to
9927         determine whether comdat groups are supported.
9928         * configure: Regenerate.
9929
9930 2009-08-28  Olivier Hainque  <hainque@adacore.com>
9931
9932         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
9933         always defined.  Reflect definition or absence of such for
9934         COLLECT_EXPORT_LIST.  Readability helper.
9935         (scanfilter): New enum, to help control what symbols
9936         are to be considered or ignored by scan_prog_file.
9937         (enum pass): Rename as "scanpass", moved together with scanfilter
9938         prior to scan_prog_file's prototype.
9939         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
9940         Group prototype with the scanpass/scanfilter definitions, factorize
9941         head comments for the several implementations at the prototype.
9942         (main): Reorganize the first pass link control to let AIX
9943         drag only the needed frame tables in executables.  Prevent
9944         frame tables collection during the scan aimed at static ctors.
9945         Pre-link and scan for frame tables later to compensate.
9946         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
9947         A C statement to issue assembly directives that create a reference
9948         to the given DWARF table identifier label from the current function
9949         section.
9950         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
9951         to differentiate first time section entry.  Only emit a .data
9952         tables start identifier label the first time around.
9953         (switch_to_frame_table_section): New function.  Helper for
9954         output_call_frame_info to switch possibly BACK into the eh_frame
9955         or the debug_frame section depending on FOR_EH.
9956         (output_call_frame_info): Use helper to first enter the proper
9957         frame section.
9958         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
9959         emit a link to the frame table start label from each function
9960         section.
9961         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
9962         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
9963         * config/rs6000/rs6000-protos.h: Declare it.
9964         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
9965
9966 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9967
9968         * config/sh/sh.c (split_branches): Check the result of
9969         next_active_insn.
9970
9971 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
9972
9973         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
9974         using -pthread -fopenmp
9975
9976 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
9977
9978         * doc/service.texi (service directory): Update URL.
9979
9980 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
9981
9982         PR rtl-optimization/40861
9983         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
9984         extract word from a multi-word subreg for negative byte positions.
9985
9986 2009-08-27  Tristan Gingold  <gingold@adacore.com>
9987             Douglas B Rupp  <rupp@gnat.com>
9988
9989         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
9990         (SECTION_VMS_OVERLAY): Define.
9991         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
9992         attribute.
9993         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
9994         for common_object.
9995         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
9996         common_object declarations.
9997         (ia64_section_type_flags): Set section flag for common_object.
9998         * config/ia64/ia64-protos.h
9999         (ia64_vms_output_aligned_decl_common): Declare.
10000         (ia64_vms_elf_asm_named_section): Declare.
10001
10002 2009-08-27  Michael Matz  <matz@suse.de>
10003
10004         * expr.c (expand_expr_real_2): New function taking exploded
10005         unary or binary expression, split out from ...
10006         (expand_expr_real_1): ... here.  Move over all unary/binary
10007         switch parts to above function, in particular these codes:
10008         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
10009         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
10010         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
10011         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
10012         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
10013         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
10014         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
10015         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
10016         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
10017         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
10018         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
10019         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
10020         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
10021         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
10022         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
10023         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
10024         VEC_PACK_FIX_TRUNC_EXPR.
10025         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
10026         full expression.
10027
10028 2009-08-27  Richard Guenther  <rguenther@suse.de>
10029
10030         * gengtype.c (main): Handle uint64_t.
10031         * ipa-utils.c (get_base_var): Indent properly.
10032         * tree-ssa-live.c (debug_scope_block): New function.
10033         * tree-flow.h (debug_scope_block): Declare.
10034         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
10035         * basic-block.h (enum profile_status): Rename to
10036         enum profile_status_d.
10037         (x_profile_status): Adjust type.
10038
10039 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
10040
10041         PR debug/41170
10042         * dwarf2out.c (get_context_die): Declare this static function.
10043         (gen_type_die_with_usage): Make sure a DIE is a generated for
10044         the context of a typedef.
10045
10046 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
10047
10048         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
10049         switch.
10050
10051 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
10052
10053         * config/mips/mips-protos.h (mips_output_sync): Declare.
10054         (mips_sync_loop_insns): Likewise.
10055         (mips_output_sync_loop): Replace first two parameters with an rtx.
10056         * config/mips/mips.c (mips_multi_member): New structure.
10057         (mips_multi_members): New variable.
10058         (mips_multi_start): New function.
10059         (mips_multi_add): Likewise.
10060         (mips_multi_add_insn): Likewise.
10061         (mips_multi_add_label): Likewise.
10062         (mips_multi_last_index): Likewise.
10063         (mips_multi_copy_insn): Likewise.
10064         (mips_multi_set_operand): Likewise.
10065         (mips_multi_write): Likewise.
10066         (mips_print_operand_punctuation): Remove '%|' and '%-'.
10067         (mips_init_print_operand_punct): Update accordingly.
10068         (mips_start_ll_sc_sync_block): New function.
10069         (mips_end_ll_sc_sync_block): Likewise.
10070         (mips_output_sync): Likewise.
10071         (mips_sync_insn1_template): Likewise.
10072         (mips_sync_insn2_template): Likewise.
10073         (mips_get_sync_operand): Likewise.
10074         (mips_process_sync_loop): Likewise.
10075         (mips_output_sync_loop): Use mips_process_sync_loop.
10076         (mips_sync_loop_insns): New function.
10077         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
10078         (MIPS_COMPARE_AND_SWAP_12): Likewise.
10079         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
10080         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
10081         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
10082         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
10083         (MIPS_SYNC_OLD_OP_12): Likewise.
10084         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
10085         (MIPS_SYNC_NEW_OP_12): Likewise.
10086         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
10087         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
10088         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
10089         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
10090         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
10091         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
10092         * config/mips/mips.md (sync_mem): New attribute.
10093         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
10094         (sync_exclusive_mask, sync_required_oldval): Likewise.
10095         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
10096         (sync_release_barrier): Likewise.
10097         (length): Handle sync loops.
10098         (sync): Use mips_output_sync.
10099         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
10100         (sync_compare_and_swap<mode>): Set the new sync_* attributes
10101         and use mips_output_sync_loop.
10102         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
10103         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
10104         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
10105         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
10106         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
10107         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
10108         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
10109         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
10110         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
10111
10112 2009-08-26  Richard Guenther  <rguenther@suse.de>
10113
10114         PR middle-end/41163
10115         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
10116         the types to not match.
10117         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
10118         verification.
10119         * tree-ssa.c (useless_type_conversion_p): Conversions to
10120         pointers to unprototyped functions are useless.
10121
10122 2009-08-26  Richard Guenther  <rguenther@suse.de>
10123
10124         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
10125         whole-program condition, prepare to be called for non-globals.
10126         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
10127         params build a representative with known type and track its fields.
10128
10129 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
10130
10131         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
10132         clearing by a taken branch.
10133         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
10134         effectively after bbro pass.
10135         (sync_nand<mode>): Ditto.
10136         (sync_old_<fetchop_name><mode>): Ditto.
10137         (sync_old_nand<mode>): Ditto.
10138         (sync_new_<fetchop_name><mode>): Dito.
10139         (sync_new_nand<mode>): Ditto.
10140         (sync_compare_and_swap<mode>_1): Ditto.
10141         (*sync_compare_and_swap<mode>): Ditto.
10142         (sync_lock_test_and_set<mode>_1): Ditto.
10143         ("sync_lock_test_and_set<mode>): Ditto.
10144
10145 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
10146
10147         * hwint.h (HOST_LONG_FORMAT): New macro
10148         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
10149         Use HOST_PTR_PRINTF.
10150         * system.h (HOST_PTR_PRINTF): Resurrect old macro
10151         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
10152         (HOST_PTR_PRINTF): Document.
10153
10154 2009-08-25 Jan Hubicka  <jh@suse.cz>
10155
10156         * config/i386/bmmintrin.h: Replace by #error.
10157
10158         Revert:
10159         Michael Meissner  <michael.meissner@amd.com>
10160         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10161         Tony Linthicum  <tony.linthicum@amd.com>
10162
10163         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
10164         (TARGET_ROUND): New macro for the round/ptest instructions which
10165         are shared between SSE4.1 and SSE5.
10166         (OPTION_MASK_ISA_ROUND): Ditto.
10167         (OPTION_ISA_ROUND): Ditto.
10168         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
10169         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
10170
10171         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
10172         (-mfused-madd): New switch to give users control over whether the
10173         compiler optimizes to use the multiply/add SSE5 instructions.
10174
10175         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
10176         (ix86_handle_option): Turn off 3dnow if -msse5.
10177         (override_options): Add SSE5 support.
10178         (print_operand): %Y prints comparison codes for SSE5 com/pcom
10179         instructions.
10180         (ix86_expand_sse_movcc): Add SSE5 support.
10181         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
10182         vector type to the next largest size.
10183         (ix86_expand_sse5_pack): New function to use pperm to pack a
10184         vector type to the next smallest size.
10185         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
10186         (IX86_BUILTIN_FMADDSD): Ditto.
10187         (IX86_BUILTIN_FMADDPS): Ditto.
10188         (IX86_BUILTIN_FMADDPD): Ditto.
10189         (IX86_BUILTIN_FMSUBSS): Ditto.
10190         (IX86_BUILTIN_FMSUBSD): Ditto.
10191         (IX86_BUILTIN_FMSUBPS): Ditto.
10192         (IX86_BUILTIN_FMSUBPD): Ditto.
10193         (IX86_BUILTIN_FNMADDSS): Ditto.
10194         (IX86_BUILTIN_FNMADDSD): Ditto.
10195         (IX86_BUILTIN_FNMADDPS): Ditto.
10196         (IX86_BUILTIN_FNMADDPD): Ditto.
10197         (IX86_BUILTIN_FNMSUBSS): Ditto.
10198         (IX86_BUILTIN_FNMSUBSD): Ditto.
10199         (IX86_BUILTIN_FNMSUBPS): Ditto.
10200         (IX86_BUILTIN_FNMSUBPD): Ditto.
10201         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
10202         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
10203         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
10204         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
10205         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
10206         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
10207         (IX86_BUILTIN_PPERM): Ditto.
10208         (IX86_BUILTIN_PERMPS): Ditto.
10209         (IX86_BUILTIN_PERMPD): Ditto.
10210         (IX86_BUILTIN_PMACSSWW): Ditto.
10211         (IX86_BUILTIN_PMACSWW): Ditto.
10212         (IX86_BUILTIN_PMACSSWD): Ditto.
10213         (IX86_BUILTIN_PMACSWD): Ditto.
10214         (IX86_BUILTIN_PMACSSDD): Ditto.
10215         (IX86_BUILTIN_PMACSDD): Ditto.
10216         (IX86_BUILTIN_PMACSSDQL): Ditto.
10217         (IX86_BUILTIN_PMACSSDQH): Ditto.
10218         (IX86_BUILTIN_PMACSDQL): Ditto.
10219         (IX86_BUILTIN_PMACSDQH): Ditto.
10220         (IX86_BUILTIN_PMADCSSWD): Ditto.
10221         (IX86_BUILTIN_PMADCSWD): Ditto.
10222         (IX86_BUILTIN_PHADDBW): Ditto.
10223         (IX86_BUILTIN_PHADDBD): Ditto.
10224         (IX86_BUILTIN_PHADDBQ): Ditto.
10225         (IX86_BUILTIN_PHADDWD): Ditto.
10226         (IX86_BUILTIN_PHADDWQ): Ditto.
10227         (IX86_BUILTIN_PHADDDQ): Ditto.
10228         (IX86_BUILTIN_PHADDUBW): Ditto.
10229         (IX86_BUILTIN_PHADDUBD): Ditto.
10230         (IX86_BUILTIN_PHADDUBQ): Ditto.
10231         (IX86_BUILTIN_PHADDUWD): Ditto.
10232         (IX86_BUILTIN_PHADDUWQ): Ditto.
10233         (IX86_BUILTIN_PHADDUDQ): Ditto.
10234         (IX86_BUILTIN_PHSUBBW): Ditto.
10235         (IX86_BUILTIN_PHSUBWD): Ditto.
10236         (IX86_BUILTIN_PHSUBDQ): Ditto.
10237         (IX86_BUILTIN_PROTB): Ditto.
10238         (IX86_BUILTIN_PROTW): Ditto.
10239         (IX86_BUILTIN_PROTD): Ditto.
10240         (IX86_BUILTIN_PROTQ): Ditto.
10241         (IX86_BUILTIN_PROTB_IMM): Ditto.
10242         (IX86_BUILTIN_PROTW_IMM): Ditto.
10243         (IX86_BUILTIN_PROTD_IMM): Ditto.
10244         (IX86_BUILTIN_PROTQ_IMM): Ditto.
10245         (IX86_BUILTIN_PSHLB): Ditto.
10246         (IX86_BUILTIN_PSHLW): Ditto.
10247         (IX86_BUILTIN_PSHLD): Ditto.
10248         (IX86_BUILTIN_PSHLQ): Ditto.
10249         (IX86_BUILTIN_PSHAB): Ditto.
10250         (IX86_BUILTIN_PSHAW): Ditto.
10251         (IX86_BUILTIN_PSHAD): Ditto.
10252         (IX86_BUILTIN_PSHAQ): Ditto.
10253         (IX86_BUILTIN_FRCZSS): Ditto.
10254         (IX86_BUILTIN_FRCZSD): Ditto.
10255         (IX86_BUILTIN_FRCZPS): Ditto.
10256         (IX86_BUILTIN_FRCZPD): Ditto.
10257         (IX86_BUILTIN_CVTPH2PS): Ditto.
10258         (IX86_BUILTIN_CVTPS2PH): Ditto.
10259         (IX86_BUILTIN_COMEQSS): Ditto.
10260         (IX86_BUILTIN_COMNESS): Ditto.
10261         (IX86_BUILTIN_COMLTSS): Ditto.
10262         (IX86_BUILTIN_COMLESS): Ditto.
10263         (IX86_BUILTIN_COMGTSS): Ditto.
10264         (IX86_BUILTIN_COMGESS): Ditto.
10265         (IX86_BUILTIN_COMUEQSS): Ditto.
10266         (IX86_BUILTIN_COMUNESS): Ditto.
10267         (IX86_BUILTIN_COMULTSS): Ditto.
10268         (IX86_BUILTIN_COMULESS): Ditto.
10269         (IX86_BUILTIN_COMUGTSS): Ditto.
10270         (IX86_BUILTIN_COMUGESS): Ditto.
10271         (IX86_BUILTIN_COMORDSS): Ditto.
10272         (IX86_BUILTIN_COMUNORDSS): Ditto.
10273         (IX86_BUILTIN_COMFALSESS): Ditto.
10274         (IX86_BUILTIN_COMTRUESS): Ditto.
10275         (IX86_BUILTIN_COMEQSD): Ditto.
10276         (IX86_BUILTIN_COMNESD): Ditto.
10277         (IX86_BUILTIN_COMLTSD): Ditto.
10278         (IX86_BUILTIN_COMLESD): Ditto.
10279         (IX86_BUILTIN_COMGTSD): Ditto.
10280         (IX86_BUILTIN_COMGESD): Ditto.
10281         (IX86_BUILTIN_COMUEQSD): Ditto.
10282         (IX86_BUILTIN_COMUNESD): Ditto.
10283         (IX86_BUILTIN_COMULTSD): Ditto.
10284         (IX86_BUILTIN_COMULESD): Ditto.
10285         (IX86_BUILTIN_COMUGTSD): Ditto.
10286         (IX86_BUILTIN_COMUGESD): Ditto.
10287         (IX86_BUILTIN_COMORDSD): Ditto.
10288         (IX86_BUILTIN_COMUNORDSD): Ditto.
10289         (IX86_BUILTIN_COMFALSESD): Ditto.
10290         (IX86_BUILTIN_COMTRUESD): Ditto.
10291         (IX86_BUILTIN_COMEQPS): Ditto.
10292         (IX86_BUILTIN_COMNEPS): Ditto.
10293         (IX86_BUILTIN_COMLTPS): Ditto.
10294         (IX86_BUILTIN_COMLEPS): Ditto.
10295         (IX86_BUILTIN_COMGTPS): Ditto.
10296         (IX86_BUILTIN_COMGEPS): Ditto.
10297         (IX86_BUILTIN_COMUEQPS): Ditto.
10298         (IX86_BUILTIN_COMUNEPS): Ditto.
10299         (IX86_BUILTIN_COMULTPS): Ditto.
10300         (IX86_BUILTIN_COMULEPS): Ditto.
10301         (IX86_BUILTIN_COMUGTPS): Ditto.
10302         (IX86_BUILTIN_COMUGEPS): Ditto.
10303         (IX86_BUILTIN_COMORDPS): Ditto.
10304         (IX86_BUILTIN_COMUNORDPS): Ditto.
10305         (IX86_BUILTIN_COMFALSEPS): Ditto.
10306         (IX86_BUILTIN_COMTRUEPS): Ditto.
10307         (IX86_BUILTIN_COMEQPD): Ditto.
10308         (IX86_BUILTIN_COMNEPD): Ditto.
10309         (IX86_BUILTIN_COMLTPD): Ditto.
10310         (IX86_BUILTIN_COMLEPD): Ditto.
10311         (IX86_BUILTIN_COMGTPD): Ditto.
10312         (IX86_BUILTIN_COMGEPD): Ditto.
10313         (IX86_BUILTIN_COMUEQPD): Ditto.
10314         (IX86_BUILTIN_COMUNEPD): Ditto.
10315         (IX86_BUILTIN_COMULTPD): Ditto.
10316         (IX86_BUILTIN_COMULEPD): Ditto.
10317         (IX86_BUILTIN_COMUGTPD): Ditto.
10318         (IX86_BUILTIN_COMUGEPD): Ditto.
10319         (IX86_BUILTIN_COMORDPD): Ditto.
10320         (IX86_BUILTIN_COMUNORDPD): Ditto.
10321         (IX86_BUILTIN_COMFALSEPD): Ditto.
10322         (IX86_BUILTIN_COMTRUEPD): Ditto.
10323         (IX86_BUILTIN_PCOMEQUB): Ditto.
10324         (IX86_BUILTIN_PCOMNEUB): Ditto.
10325         (IX86_BUILTIN_PCOMLTUB): Ditto.
10326         (IX86_BUILTIN_PCOMLEUB): Ditto.
10327         (IX86_BUILTIN_PCOMGTUB): Ditto.
10328         (IX86_BUILTIN_PCOMGEUB): Ditto.
10329         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
10330         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
10331         (IX86_BUILTIN_PCOMEQUW): Ditto.
10332         (IX86_BUILTIN_PCOMNEUW): Ditto.
10333         (IX86_BUILTIN_PCOMLTUW): Ditto.
10334         (IX86_BUILTIN_PCOMLEUW): Ditto.
10335         (IX86_BUILTIN_PCOMGTUW): Ditto.
10336         (IX86_BUILTIN_PCOMGEUW): Ditto.
10337         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
10338         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
10339         (IX86_BUILTIN_PCOMEQUD): Ditto.
10340         (IX86_BUILTIN_PCOMNEUD): Ditto.
10341         (IX86_BUILTIN_PCOMLTUD): Ditto.
10342         (IX86_BUILTIN_PCOMLEUD): Ditto.
10343         (IX86_BUILTIN_PCOMGTUD): Ditto.
10344         (IX86_BUILTIN_PCOMGEUD): Ditto.
10345         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
10346         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
10347         (IX86_BUILTIN_PCOMEQUQ): Ditto.
10348         (IX86_BUILTIN_PCOMNEUQ): Ditto.
10349         (IX86_BUILTIN_PCOMLTUQ): Ditto.
10350         (IX86_BUILTIN_PCOMLEUQ): Ditto.
10351         (IX86_BUILTIN_PCOMGTUQ): Ditto.
10352         (IX86_BUILTIN_PCOMGEUQ): Ditto.
10353         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
10354         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
10355         (IX86_BUILTIN_PCOMEQB): Ditto.
10356         (IX86_BUILTIN_PCOMNEB): Ditto.
10357         (IX86_BUILTIN_PCOMLTB): Ditto.
10358         (IX86_BUILTIN_PCOMLEB): Ditto.
10359         (IX86_BUILTIN_PCOMGTB): Ditto.
10360         (IX86_BUILTIN_PCOMGEB): Ditto.
10361         (IX86_BUILTIN_PCOMFALSEB): Ditto.
10362         (IX86_BUILTIN_PCOMTRUEB): Ditto.
10363         (IX86_BUILTIN_PCOMEQW): Ditto.
10364         (IX86_BUILTIN_PCOMNEW): Ditto.
10365         (IX86_BUILTIN_PCOMLTW): Ditto.
10366         (IX86_BUILTIN_PCOMLEW): Ditto.
10367         (IX86_BUILTIN_PCOMGTW): Ditto.
10368         (IX86_BUILTIN_PCOMGEW): Ditto.
10369         (IX86_BUILTIN_PCOMFALSEW): Ditto.
10370         (IX86_BUILTIN_PCOMTRUEW): Ditto.
10371         (IX86_BUILTIN_PCOMEQD): Ditto.
10372         (IX86_BUILTIN_PCOMNED): Ditto.
10373         (IX86_BUILTIN_PCOMLTD): Ditto.
10374         (IX86_BUILTIN_PCOMLED): Ditto.
10375         (IX86_BUILTIN_PCOMGTD): Ditto.
10376         (IX86_BUILTIN_PCOMGED): Ditto.
10377         (IX86_BUILTIN_PCOMFALSED): Ditto.
10378         (IX86_BUILTIN_PCOMTRUED): Ditto.
10379         (IX86_BUILTIN_PCOMEQQ): Ditto.
10380         (IX86_BUILTIN_PCOMNEQ): Ditto.
10381         (IX86_BUILTIN_PCOMLTQ): Ditto.
10382         (IX86_BUILTIN_PCOMLEQ): Ditto.
10383         (IX86_BUILTIN_PCOMGTQ): Ditto.
10384         (IX86_BUILTIN_PCOMGEQ): Ditto.
10385         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
10386         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
10387         (enum multi_arg_type): New enum for describing the various SSE5
10388         intrinsic argument types.
10389         (bdesc_multi_arg): New table for SSE5 intrinsics.
10390         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
10391         (ix86_expand_multi_arg_builtin): New function for creating SSE5
10392         intrinsics.
10393         (ix86_expand_builtin): Add SSE5 intrinsic support.
10394         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
10395         operand instructions.
10396         (ix86_expand_sse5_multiple_memory): New function to split the
10397         second memory reference from SSE5 instructions.
10398         (type_has_variadic_args_p): Delete in favor of stdarg_p.
10399         (ix86_return_pops_args): Use stdarg_p to determine if the function
10400         has variable arguments.
10401         (ix86_setup_incoming_varargs): Ditto.
10402         (x86_this_parameter): Ditto.
10403
10404         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
10405         declaration.
10406         (ix86_expand_sse5_pack): Ditto.
10407         (ix86_sse5_valid_op_p): Ditto.
10408         (ix86_expand_sse5_multiple_memory): Ditto.
10409
10410         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
10411         constant for SSE5 support.
10412         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
10413         (UNSPEC_SSE5_TRUEFALSE): Ditto.
10414         (UNSPEC_SSE5_PERMUTE): Ditto.
10415         (UNSPEC_SSE5_ASHIFT): Ditto.
10416         (UNSPEC_SSE5_LSHIFT): Ditto.
10417         (UNSPEC_FRCZ): Ditto.
10418         (UNSPEC_CVTPH2PS): Ditto.
10419         (UNSPEC_CVTPS2PH): Ditto.
10420         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
10421         (PCOM_TRUE): Ditto.
10422         (COM_FALSE_S): Ditto.
10423         (COM_FALSE_P): Ditto.
10424         (COM_TRUE_S): Ditto.
10425         (COM_TRUE_P): Ditto.
10426         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
10427         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
10428         types.
10429         (memory attribute): Ditto.
10430         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10431         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
10432         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
10433         (floor<mode>2): Ditto.
10434         (ceil<mode>2): Ditto.
10435         (btrunc<mode>2): Ditto.
10436         (nearbyintdf2): Ditto.
10437         (nearbyintsf2): Ditto.
10438         (sse_setccsf): Disable if SSE5.
10439         (sse_setccdf): Ditto.
10440         (sse5_setcc<mode>): New support for SSE5 conditional move.
10441         (sse5_pcmov_<mode>): Ditto.
10442
10443         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
10444         (SSEMODEF4): Ditto.
10445         (SSEMODEF2P): Ditto.
10446         (ssemodesuffixf4): New mode attribute for SSE5.
10447         (ssemodesuffixf2s): Ditto.
10448         (ssemodesuffixf2c): Ditto.
10449         (sserotatemax): Ditto.
10450         (ssescalarmode): Ditto.
10451         (sse_maskcmpv4sf3): Disable if SSE5.
10452         (sse_maskcmpv2df3): Ditto.
10453         (sse_vmmaskcmpv4sf3): Ditto.
10454         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
10455         (sse5_vmfmadd<mode>4): Ditto.
10456         (sse5_fmsub<mode>4): Ditto.
10457         (sse5_vmfmsub<mode>4): Ditto.
10458         (sse5_fnmadd<mode>4): Ditto.
10459         (sse5_vmfnmadd<mode>4): Ditto.
10460         (sse5_fnmsub<mode>4): Ditto.
10461         (sse5_vmfnmsub<mode>4): Ditto.
10462         (sse5i_fmadd<mode>4): Ditto.
10463         (sse5i_fmsub<mode>4): Ditto.
10464         (sse5i_fnmadd<mode>4): Ditto.
10465         (sse5i_fnmsub<mode>4): Ditto.
10466         (sse5i_vmfmadd<mode>4): Ditto.
10467         (sse5i_vmfmsub<mode>4): Ditto.
10468         (sse5i_vmfnmadd<mode>4): Ditto.
10469         (sse5i_vmfnmsub<mode>4): Ditto.
10470         (mulv16qi3): Add SSE5 support.
10471         (mulv4si3): Ditto.
10472         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
10473         (sse2_mulv4si3): Disable if SSE5.
10474         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
10475         (sse4_1_roundps): Ditto.
10476         (sse4_1_roundsd): Ditto.
10477         (sse4_1_roundss): Ditto.
10478         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
10479         be generated.
10480         (sse_maskcmpsf3): Ditto.
10481         (sse_vmmaskcmpv4sf3): Ditto.
10482         (sse2_maskcmpv2df3): Ditto.
10483         (sse2_maskcmpdf3): Ditto.
10484         (sse2_vmmaskcmpv2df3): Ditto.
10485         (sse2_eq<mode>3): Ditto.
10486         (sse2_gt<mode>3): Ditto.
10487         (sse5_pcmov_<mode>): Add SSE5 support.
10488         (vec_unpacku_hi_v16qi): Ditto.
10489         (vec_unpacks_hi_v16qi): Ditto.
10490         (vec_unpacku_lo_v16qi): Ditto.
10491         (vec_unpacks_lo_v16qi): Ditto.
10492         (vec_unpacku_hi_v8hi): Ditto.
10493         (vec_unpacks_hi_v8hi): Ditto.
10494         (vec_unpacku_lo_v8hi): Ditto.
10495         (vec_unpacks_lo_v8hi): Ditto.
10496         (vec_unpacku_hi_v4si): Ditto.
10497         (vec_unpacks_hi_v4si): Ditto.
10498         (vec_unpacku_lo_v4si): Ditto.
10499         (vec_unpacks_lo_v4si): Ditto.
10500         (sse5_pmacsww): New SSE5 intrinsic insn.
10501         (sse5_pmacssww): Ditto.
10502         (sse5_pmacsdd): Ditto.
10503         (sse5_pmacssdd): Ditto.
10504         (sse5_pmacssdql): Ditto.
10505         (sse5_pmacssdqh): Ditto.
10506         (sse5_pmacsdqh): Ditto.
10507         (sse5_pmacsswd): Ditto.
10508         (sse5_pmacswd): Ditto.
10509         (sse5_pmadcsswd): Ditto.
10510         (sse5_pmadcswd): Ditto.
10511         (sse5_pcmov_<move>): Conditional move support on SSE5.
10512         (sse5_phaddbw): New SSE5 intrinsic insn.
10513         (sse5_phaddbd): Ditto.
10514         (sse5_phaddbq): Ditto.
10515         (sse5_phaddwd): Ditto.
10516         (sse5_phaddwq): Ditto.
10517         (sse5_phadddq): Ditto.
10518         (sse5_phaddubw): Ditto.
10519         (sse5_phaddubd): Ditto.
10520         (sse5_phaddubq): Ditto.
10521         (sse5_phadduwd): Ditto.
10522         (sse5_phadduwq): Ditto.
10523         (sse5_phaddudq): Ditto.
10524         (sse5_phsubbw): Ditto.
10525         (sse5_phsubwd): Ditto.
10526         (sse5_phsubdq): Ditto.
10527         (sse5_pperm): Ditto.
10528         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
10529         (sse5_pperm_zero_v16qi_v8hi): Ditto.
10530         (sse5_pperm_sign_v8hi_v4si): Ditto.
10531         (sse5_pperm_zero_v8hi_v4si): Ditto.
10532         (sse5_pperm_sign_v4si_v2di): Ditto.
10533         (sse5_pperm_sign_v4si_v2di): Ditto.
10534         (sse5_pperm_pack_v2di_v4si): Ditto.
10535         (sse5_pperm_pack_v4si_v8hi): Ditto.
10536         (sse5_pperm_pack_v8hi_v16qi): Ditto.
10537         (sse5_perm<mode>): New SSE5 intrinsic insn.
10538         (rotl<mode>3): Ditto.
10539         (sse5_rotl<mode>3): Ditto.
10540         (sse5_ashl<mode>3): Ditto.
10541         (sse5_lshl<mode>3): Ditto.
10542         (sse5_frcz<mode>2): Ditto.
10543         (sse5s_frcz<mode>2): Ditto.
10544         (sse5_cvtph2ps): Ditto.
10545         (sse5_cvtps2ph): Ditto.
10546         (sse5_vmmaskcmp<mode>3): Ditto.
10547         (sse5_com_tf<mode>3): Ditto.
10548         (sse5_maskcmp<mode>3): Ditto.
10549         (sse5_maskcmp_uns<mode>3): Ditto.
10550         (sse5_maskcmp_uns2<mode>3): Ditto.
10551         (sse5_pcom_tf<mode>3): Ditto.
10552
10553         * config/i386/predicates.md (sse5_comparison_float_operator):
10554         New predicate to match the comparison operators supported by
10555         the SSE5 com instruction.
10556         (ix86_comparison_int_operator): New predicate to match just the
10557         signed int comparisons.
10558         (ix86_comparison_uns_operator): New predicate to match just the
10559         unsigned int comparisons.
10560
10561         * doc/invoke.texi (-msse5): Add documentation.
10562         (-mfused-madd): Ditto.
10563
10564         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
10565
10566         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
10567         mmintrin-common.h.
10568         (x86_64-*-*): Ditto.
10569
10570         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
10571
10572         * config/i386/bmmintrin.h: New file, provide common x86 compiler
10573         intrinisics for SSE5.
10574
10575         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
10576         mmintrin-common.h.
10577
10578         * config/i386/mmintrin-common.h: New file, to contain common
10579         instructions between SSE4.1 and SSE5.
10580
10581         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
10582         FOREACH_FUNCTION_ARGS to iterate over the argument list.
10583         (gen_regparm_prefix): Ditto.
10584
10585         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
10586         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
10587         prototype_p to determine if a function is prototyped.
10588
10589 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
10590
10591         * c-common.c (c_common_reswords) add the alignof keyword,
10592         with same RID as __alignof and __alignof__
10593
10594 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
10595
10596         * hooks.h (hook_bool_const_int_const_int_true): Declare.
10597         * hooks.c (hook_bool_const_int_const_int_true): New function.
10598         * target.h (struct gcc_target): Add can_eliminate field.
10599         * target-def.h (TARGET_CAN_ELIMINATE): Define.
10600         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
10601         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
10602         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
10603         (elim_table): Revise comment.
10604         * system.h (CAN_ELIMINATE): Poison.
10605         * defaults.h (CAN_ELIMINATE): Remove.
10606         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
10607
10608         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
10609         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
10610         Define macro.
10611         (alpha_vms_can_eliminate): Declare as static, change return type to
10612         bool.
10613         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
10614
10615         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
10616         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
10617         (arm_can_eliminate): New function.
10618
10619         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
10620         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
10621         (avr_can_eliminate): Declare as static.
10622         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
10623
10624         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
10625         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
10626         (bfin_can_eliminate): New function.
10627
10628         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
10629         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
10630         (crx_can_eliminate): New function.
10631
10632         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
10633         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
10634         (fr30_can_eliminate): New function.
10635
10636         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
10637         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
10638         (frv_can_eliminate): New function.
10639
10640         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
10641         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
10642         (h8300_can_eliminate): New function.
10643
10644         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
10645         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
10646         (i386_can_eliminate): Declare as static, change return type to bool.
10647         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
10648
10649         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
10650         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
10651         (ia64_can_eliminate): New function.
10652
10653         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
10654         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
10655         (iq2000_can_eliminate): New function.
10656
10657         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
10658         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
10659         (m32r_can_eliminate): New function.
10660
10661         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
10662         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
10663         (m68hc11_can_eliminate): New function.
10664
10665         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
10666         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
10667         (m68k_can_eliminate): New function.
10668
10669         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
10670         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
10671         (mep_can_eliminate): New function.
10672
10673         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
10674         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
10675         (mips_can_eliminate): New function.
10676
10677         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
10678         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
10679         (rs6000_can_eliminate): New function.
10680
10681         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
10682         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
10683         (s390_can_eliminate): Declare as static.
10684         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
10685
10686         * config/score/score.h (CAN_ELIMINATE): Remove macro.
10687         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
10688         (score_can_eliminate): New function.
10689
10690         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
10691         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
10692         (sparc_can_eliminate): Declare as static.
10693         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
10694
10695         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
10696         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
10697         (xstormy16_can_eliminate): New function.
10698
10699         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
10700         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
10701         (v850_can_eliminate): New function.
10702
10703 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
10704
10705         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
10706         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
10707         (*movdfcc_ext[1234]): Disable for IEEE mode.
10708
10709 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
10710
10711         * gimplify.c (prepare_gimple_addressable): New static function.
10712         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
10713         it addressable.
10714         (gimplify_addr_expr): Invoke it similarly on the operand instead of
10715         manually fiddling with it.
10716
10717 2009-08-25  Michael Matz  <matz@suse.de>
10718
10719         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
10720         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
10721         full expression.
10722         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
10723         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
10724         (do_jump): Split out code for simple binary comparisons into ...
10725         (do_jump_1): ... this, taking the individual operands and code.
10726         Change callers to helper function above accordingly.
10727         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
10728         comparisons.
10729
10730 2009-08-25  Michael Matz  <matz@suse.de>
10731
10732         * expr.h (struct separate_ops, sepops): New type for passing
10733         around an exploded simple expression.
10734         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
10735         Use this structure instead of expression tree.
10736         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
10737         expression, only its type.
10738         (expand_vec_cond_expr): Take type and individual operands instead
10739         of full expression.
10740         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
10741         expand_vec_shift_expr): Change prototype accordingly.
10742         * tree-vect-stmts.c (vectorizable_condition): Change call of
10743         expand_vec_cond_expr_p to pass only type.
10744         * expr.c (do_store_flags): Change prototype and implementation
10745         to take an exploded expression.
10746         (expand_expr_real_1): New local ops initialized with details
10747         of the full expression.  Use it instead of full
10748         expression in calls to do_store_flags, expand_vec_cond_expr,
10749         expand_widen_pattern_expr and expand_vec_shift_expr.
10750
10751 2009-08-25  Michael Matz  <matz@suse.de>
10752
10753         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
10754         treeop2 initialized with first three operands of the full expression.
10755         Substitute all TREE_OPERAND (exp, [012]) calls with them.
10756
10757 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
10758
10759         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
10760         (__gthread_objc_condition_allocate): Mark arguments as unused.
10761         (__gthread_objc_condition_deallocate): Likewise.
10762         (__gthread_objc_condition_wait): Likewise.
10763         (__gthread_objc_condition_broadcast): Likewise.
10764         (__gthread_objc_condition_signal): Likewise.
10765         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
10766         (__gthread_objc_thread_id): Likewise.
10767
10768 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
10769
10770         PR middle-end/41149
10771         * tree-pretty-print.c (print_call_name): Print the correct call name
10772         for procedure pointer components.
10773
10774 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
10775
10776         * config/ia64/ia64.c (ia64_promote_function_mode): Call
10777         default_promote_function_mode when not VMS.
10778
10779 2009-08-24  Olivier Hainque  <hainque@adacore.com>
10780
10781         * convert.c (convert_to_integer): Don't assume an input pointer is
10782         POINTER_SIZE wide.  Fetch from the type instead.
10783
10784 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10785
10786         * configure.ac (AC_PREREQ): Bump to 2.64.
10787
10788 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
10789
10790         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
10791         (process_command): Don't search standard_exec_prefix_1 and
10792         standard_exec_prefix_2.
10793
10794 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10795
10796         * config/arm/arm.c (output_return_instruction): Handle for
10797         unified syntax.
10798
10799 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10800
10801         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
10802
10803 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10804
10805         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
10806         (*arm_movdf_vfp): Likewise.
10807
10808 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10809
10810         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
10811         (vashr<mode>3): Rename from ashr<mode>3.
10812         (vlshr<mode>3): Rename from lshr<mode>3.
10813
10814 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
10815
10816         PR/40786
10817         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
10818         (check_format_info_main): Use scalar_identify_flag.
10819         (check_format_types): Check for scalar size identity if
10820         scalar_identify_flag is set.
10821         (printf_length_specs): Extend by new field.
10822         (asm_fprintf_length_specs): Likewise.
10823         (gcc_diag_length_specs): Likewise.
10824         (scanf_length_specs): Likewise.
10825         (strfmon_length_specs): Likewise.
10826         (gcc_gfc_length_specs): Likewise.
10827         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
10828         (ms_printf_flag_specs): Likewise.
10829         * c-format.h (format_length_info): Add new member scalar_identity_flag.
10830
10831 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
10832
10833         PR target/40718
10834         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
10835         (*call_value_pop_1): Ditto.
10836         (*sibcall_pop_1): New insn pattern.
10837         (*sibcall_value_pop_1): Ditto.
10838
10839 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10840
10841         PR target/41081
10842         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
10843         ashrsi3_64): New.
10844
10845 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
10846
10847         PR target/41081
10848         * fwprop.c (try_fwprop_subst): Allow multiple sets.
10849         (get_reg_use_in): New function.
10850         (forward_propagate_subreg): Propagate through subreg of zero_extend
10851         or sign_extend.
10852
10853 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
10854
10855         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
10856         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
10857
10858 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10859
10860         * configure.ac: Remove --with-datarootdir, --with-docdir,
10861         --with-htmldir switches.  No need to call AC_SUBST for
10862         datarootdir, docdir, htmldir any more.
10863         * configure: Regenerate.
10864         * doc/install.texi (Configuration): Document --datarootdir,
10865         --docdir, --htmldir, --pdfdir; update documentation for
10866         --infodir, --mandir.
10867         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
10868         M4 to 1.4.6.
10869
10870         * aclocal.m4: Regenerate.
10871         * config.in: Regenerate.
10872         * configure: Regenerate.
10873
10874 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
10875             Olivier Hainque  <hainque@adacore.com>
10876
10877         * config/ia64/ia64.c: Include libfuncs.h.
10878         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
10879         (ia64_expand_call): Use reg 25 on VMS.
10880         (ia64_initialize_trampoline): Fix for VMS ABI.
10881         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
10882         (ia64_function_arg): Initialize reg 25 on VMS.
10883         Fix OpenVMS ABI issues for varargs.
10884         For OpenVMS, emit the Argument Information register set in the
10885         incoming/sibcall case as well.
10886         (ia64_arg_type): New function.
10887         (ia64_function_arg_advance): Keep track of cum->words.
10888         Fix OpenVMS ABI issues for varargs.
10889         (ia64_function_value): On VMS, promote mode of non-aggregate types.
10890         (ia64_override_options): Set flag_no_common on VMS.
10891         (ia64_init_builtins): Disable FWRITE builtin.
10892         (ia64_asm_output_external): Call DO_CRTL_NAMES.
10893         (ia64_vms_init_libfuncs): Add decc$ routines.
10894         (ia64_vms_valid_pointer_mode): New function.
10895         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
10896         (ia64_promote_function_mode): New function
10897         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
10898         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
10899         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
10900         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
10901         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
10902         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
10903         Suppress trailing '#' if VALUE is numeric.
10904         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
10905         ia64_promote_function_mode.
10906         (TARGET_VALID_POINTER_MODE): Define.
10907
10908 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
10909
10910         PR target/40671
10911         * config/rs6000/rs6000.c (rs6000_override_options): Use
10912         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
10913
10914         PR target/41145
10915         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
10916         reporting of vector + decimal/boolean/complex error.
10917
10918 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
10919
10920         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
10921         __vector double TYPE_DECL.
10922
10923 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
10924
10925         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
10926         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
10927         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
10928         to pointer to enum machine_mode.  Update all callers as needed.
10929
10930 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
10931
10932         * config/alpha/alpha.md (exception_receiver): Emit alternative
10933         GP load sequence if flag_reorder_blocks_and_partition is set.
10934         (*exception_receiver_2): Also enable when
10935         flag_reorder_blocks_and_partition is set.
10936
10937 2009-08-20  Matt Rice  <ratmice@gmail.com>
10938             Diego Novillo  <dnovillo@google.com>
10939
10940         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
10941         tree-ssa-sccvn.h.
10942
10943 2009-08-20  Richard Guenther  <rguenther@suse.de>
10944
10945         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
10946         * c-tree.h (c_dup_lang_specific_decl): Remove.
10947         (struct lang_decl, struct lang_type): Move definitions ...
10948         * c-lang.h: ... here.  New file.
10949         * c-decl.c: Include c-lang.h.
10950         (c_dup_lang_specific_decl): Remove.
10951         * c-typeck.c: Include c-lang.h.
10952         * Makefile.in (c-decl.o): Add c-lang.h dependency.
10953         (c-typeck.o): Likewise.
10954         * c-config-lang.in (gtfiles): Add c-lang.h.
10955         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
10956         like c-tree.h.
10957
10958 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
10959
10960         * config/alpha/alpha.c (alpha_end_function): Do not clear
10961         crtl->emit structure and free insn locators if cfun->is_thunk is true,
10962         this is now handled in generic code.
10963
10964 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10965
10966         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
10967         (s390_z10_fix_long_loop_prediction): New function.
10968         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
10969         (s390_reorg): Walk over the INSNs and invoke
10970         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
10971
10972 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
10973
10974         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
10975         "*brx_64bit", "*brx_31bit"): New patterns.
10976         * config/s390/s390.c ('E'): New output modifier.
10977
10978 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10979             Richard Earnshaw  <richard.earnshaw@arm.com>
10980
10981         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
10982         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
10983
10984 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10985
10986         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
10987         patterns.
10988         * pa.c (emit_move_sequence): Check if address of operand1 is valid
10989         for mode mode of operand0 when doing secondary reload for SAR.
10990
10991 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
10992
10993         PR middle-end/41123
10994         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
10995         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
10996
10997 2009-08-19  Jason Merrill  <jason@redhat.com>
10998
10999         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
11000         supported template depth in C++0x.
11001
11002 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
11003
11004         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
11005         free_after_compilation.
11006         * config/score/score7.c (score7_output_mi_thunk): Likewise.
11007         * config/score/score3.c (score3_output_mi_thunk): Likewise.
11008         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
11009         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11010         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11011         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11012         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11013
11014 2009-08-19  Ian Lance Taylor  <iant@google.com>
11015
11016         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
11017         of (plus (mult (neg B) C) A).
11018
11019 2009-08-18  Michael Matz  <matz@suse.de>
11020
11021         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
11022         instead of comparing TYPE_MAIN_VARIANT for equality.
11023         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
11024         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
11025         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
11026         * gimplify.c (goa_lhs_expr_p): Ditto and use
11027         STRIP_USELESS_TYPE_CONVERSION.
11028
11029 2009-08-18  Michael Matz  <matz@suse.de>
11030
11031         * tree-ssa-structalias.c (create_variable_info_for): Also mark
11032         first field in a struct.
11033         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
11034
11035 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
11036
11037         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
11038         locators before emit_insn is called.  Remove assert that
11039         cfun->is_thunk.
11040         (alpha_end_function): Clear crtl->emit structure and free insn
11041         locators if cfun->is_thunk is true.
11042
11043 2009-08-18  Jason Merrill  <jason@redhat.com>
11044
11045         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
11046         type if available.
11047         * configure.ac: Test for it.
11048         * configure, config.in: Regenerate.
11049         * doc/install.texi: Document --enable-gnu-unique-object.
11050
11051 2009-08-18  Richard Guenther  <rguenther@suse.de>
11052
11053         PR middle-end/41094
11054         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
11055         pow(x,y*z) only if x is nonnegative.
11056
11057 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
11058
11059         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
11060         on jumps.
11061
11062         PR target/40971
11063         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
11064         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
11065
11066 2009-08-17  DJ Delorie  <dj@redhat.com>
11067
11068         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
11069         * config/m32c/prologue.md (epilogue_freit): New.
11070         (fset_b): New.
11071         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
11072         (bank_switch_p): Likewise.
11073         (fast_interrupt_p): Likewise.
11074         (interrupt_p): Likewise.
11075         (m32c_conditional_register_usage): Round memregs size up.
11076         (need_to_save): We only need to save $a0 when we use ENTER.
11077         (interrupt_p): Check for fast_interrupt too.
11078         (bank_switch_p): New.
11079         (fast_interrupt_p): New.
11080         (m32c_attribute_table): Add bank_switch and fast_interrupt.
11081         (m32c_emit_prolog): Support bank switching and fast interrupts.
11082         * doc/extend.texi (Function Attributes): Add bank_switch and
11083         fast_interrupt.
11084
11085 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
11086
11087         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
11088         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
11089
11090 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
11091
11092         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
11093         (menu): Add IA-64/VMS Options.
11094         (IA-64/VMS Options): Likewise.
11095
11096 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11097
11098         PR target/38599
11099         * config/mips/mips.md (*lwxs): Use :P for pointer values.
11100
11101 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
11102
11103         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
11104         (mips_pop_asm_switch): Likewise.
11105         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
11106         with...
11107         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11108         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
11109         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
11110         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
11111         instead of set_noreorder.
11112         (mips_output_function_prologue): Use the new functions.
11113         (mips_output_function_epilogue): Likewise.
11114         (mips_need_noat_wrapper_p): New function, split out from...
11115         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
11116         Use mips_push_asm_switch and mips_pop_asm_switch.
11117         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
11118         and mips_pop_asm_switch.
11119         (ASM_OUTPUT_REG_POP): Likewise.
11120         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
11121         Use mips_pop_asm_switch.
11122         (mips_asm_switch): New structure.
11123         (set_noreorder, set_nomacro): Replace with...
11124         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
11125         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
11126         instead of set_nomacro.
11127         (fix_truncsfsi2_macro): Likewise.
11128         (cprestore): Likewise.
11129         (hazard): Use mips_noreorder instead of set_noreorder.
11130         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
11131
11132 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
11133
11134         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
11135         from prev_active_insn.
11136
11137 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
11138
11139         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
11140         * config/avr/avr.c (avr_override_options): Initialize
11141         avr_current_arch variable.
11142         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
11143         __AVR_HAVE_16BIT_SP__ according to the device type.
11144         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
11145         TARGET_TINY_STACK.
11146         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
11147         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
11148
11149 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
11150
11151         PR debug/37801
11152         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
11153         generating inlined subroutine die only. We shouldn't be
11154         called for anything else.
11155         (gen_block_die): Don't generate inline subroutine debug info for
11156         abstract blocks.
11157
11158 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11159
11160         * graphite-poly.c (print_pbb): Print PBB index.
11161
11162 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
11163
11164         PR middle-end/40981
11165         * graphite-interchange.c (ppl_max_for_le): Moved...
11166         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
11167         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
11168         ppl_Pointset_Powerset_C_Polyhedron_maximize.
11169         * graphite-ppl.h (ppl_max_for_le): Declared.
11170
11171 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
11172
11173         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
11174         supported on all platforms.
11175         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
11176         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
11177         * c-pragma.c: Likewise.
11178         * target-def.h (TARGET_INITIALIZER): Remove
11179         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11180         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
11181
11182 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11183
11184         * config/ia64/fde-vms.c: New file.
11185         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
11186         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
11187         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
11188         (uw_frame_state_for): Only register a personality routine if it is
11189         known to be compatible with our expectations.
11190         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
11191         Declare unw_table_entry stack variable and
11192         mod all calls to _Unwind_FindTableEntry to add arg.
11193         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
11194         (_Unwind_FindTableEntry): Add arg to prototype.
11195
11196 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
11197
11198         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
11199         field 'signal_pfs_loc'.
11200         (uw_frame_state_for): Remove duplicate code dealing with leaf
11201         procedures without unwind info.
11202         If in the frame after unwinding through a signal handler, restore
11203         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
11204         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
11205         'pfs_loc' to the AR.PFS location in the signal context; instead
11206         set 'signal_pfs_loc'.
11207         Manually generate the unwind info for the AR.PFS register.
11208         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
11209         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
11210         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
11211         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
11212         instead set 'signal_pfs_loc'.
11213         Remove code preventing the AR.PFS register from being restored
11214         from the signal context.
11215
11216 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
11217             Tristan Gingold  <gingold@adacore.com>
11218
11219         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
11220         * config/ia64/t-vms: New file.
11221         * config/ia64/vms64.h: New file.
11222         * config/ia64/vms.h: New file.
11223         * config/ia64/vms-crtinit.asm: New file.
11224         * config/ia64/vms_symvec_libgcc_s.opt: New file.
11225         * config/ia64/vms-unwind.h: New file.
11226
11227 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11228
11229         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
11230         TFmode compares.
11231
11232 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11233
11234         PR middle-end/30789
11235         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
11236         Move declaration...
11237         * real.h (do_mpc_arg2): ... here.
11238         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
11239         and RDIV_EXPR.
11240
11241 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
11242
11243         * final.c (add_debug_prefix_map): Don't use GC memory for
11244         old_prefix and new_prefix.
11245
11246 2009-08-14  Richard Guenther  <rguenther@suse.de>
11247
11248         * ipa-prop.c (compute_complex_pass_through): If we cannot
11249         compute a non-varying offset for IPA_JF_ANCESTOR punt.
11250
11251 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11252
11253         * c-lex.c (c_lex_with_flags): Increase size of local variable
11254         to avoid memory clobber.
11255
11256 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
11257
11258         PR target/40934
11259         * config/i386/i386.c (ix86_fp_comparison_strategy):
11260         Only enable/disable sahf at function granularity.
11261
11262 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
11263
11264         PR rtl-optimization/41064
11265         * reload1.c (reload_as_needed): Don't call extract_insn
11266         for known invalid replacements after calling
11267         validate_replace_rtx_group and verify_changes.
11268
11269 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
11270
11271         PR target/41019
11272         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
11273         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
11274         ix86_expand_fp_vcond.
11275         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
11276         Assert that operation is supported by ix86_expand_int_vcond.
11277         (vcondu<SSEMODE124C8:mode>): Ditto.
11278
11279 2009-08-13  DJ Delorie  <dj@redhat.com>
11280
11281         * config/i386/djgpp-stdint.h: New.
11282         * config.gcc (djgpp): Use it.
11283
11284 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11285
11286         * config/sh/sh.c (sh_override_options): When flag_exceptions or
11287         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
11288
11289 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
11290
11291         * tree-ssa-loop-prefetch.c
11292         (prune_ref_by_group_reuse): Enhance probabilistic analysis
11293         for long-stride pruning.
11294         (compute_miss_rate): New function to compute the probability
11295         that two memory references access different cache lines.
11296
11297 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
11298
11299         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
11300
11301 2009-08-13  Richard Guenther  <rguenther@suse.de>
11302
11303         PR middle-end/41047
11304         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
11305         use the constant pointer type.
11306         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
11307         of CV qualifiers on the target pointer type.
11308         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
11309         conversion check before restrict check.
11310
11311 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11312
11313         PR target/41029
11314         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
11315
11316 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11317
11318         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
11319
11320 2009-08-12  Richard Guenther  <rguenther@suse.de>
11321
11322         PR tree-optimization/41011
11323         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
11324         and reference constructing.
11325
11326 2009-08-12  Xinliang David Li  <davidxl@google.com>
11327
11328         PR tree-optimization/41012
11329         * tree-flow.h : New external interface.
11330         * gimple-low.c (check_call_arg): Change to public function.
11331         Remove argument mismatch check in lowering.
11332         * tree-inline.h (tree_can_inline_p): Interface change.
11333         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
11334         into this function.
11335         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
11336         Call change to tree_can_inline_p function.
11337         (cgraph_decide_inlining_incrementally): Ditto.
11338
11339 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
11340
11341         PR tree-optimization/41031
11342         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
11343         on the partition variable rather than promote_mode on the source
11344         type.  Assert that the partition variable's type has the same
11345         mode as the source value's.
11346
11347 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
11348
11349         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
11350         for for_return == 2.
11351         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
11352         comments.
11353         * calls.c (expand_call): Fix typo.
11354         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
11355         and PARM_DECL.
11356         * stmt.c (expand_value_return): Use promote_function_mode to copy out
11357         of pseudo.
11358         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
11359         * config/cris/cris.c (cris_promote_function_mode): Likewise.
11360         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
11361         * config/pa/pa.c (pa_promote_function_mode): Likewise.
11362
11363 2009-08-12  Andrew Haley  <aph@redhat.com>
11364
11365         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
11366
11367 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11368
11369         PR bootstrap/40103
11370         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
11371
11372 2009-08-12  Richard Guenther  <rguenther@suse.de>
11373
11374         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
11375         * gimplify.c (gimplify_modify_expr): Do not use
11376         lang_hooks.types_compatible_p.
11377         * tree-ssa.c (useless_type_conversion_p): For aggregates
11378         just return false if the canonical types differ.
11379
11380 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11381
11382         PR middle-end/40980
11383         * sese.c (convert_for_phi_arg): New.
11384         (add_guard_exit_phis): Use convert_for_phi_arg.
11385
11386 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11387
11388         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
11389         unknown subscript upper bounds.
11390
11391 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11392             Pranav Garg  <pranav.garg2107@gmail.com>
11393
11394         * graphite-interchange.c (gather_access_strides): Removed.
11395         (ppl_max_for_le): New.
11396         (build_linearized_memory_access): New.
11397         (memory_stride_in_loop): New.
11398         (pbb_interchange_profitable_p): Reimplemented.
11399         * graphite-ppl.h (ppl_new_id_map): New.
11400         (ppl_interchange): New.
11401
11402 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11403
11404         * graphite-interchange.c (compute_subscript): Removed.
11405         (compute_array_size_cstr): Removed.
11406         (compute_array_size_poly): Removed.
11407         (compute_array_size): Removed.
11408         (gather_access_strides_poly): Removed.
11409         (gather_access_strides): Empty.
11410
11411 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11412
11413         * graphite-dependences.c (dependence_polyhedron_1): Replace
11414         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
11415         (graphite_legal_transform_dr): Same.
11416         (graphite_carried_dependence_level_k): Same.
11417         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
11418         Initialize PDR_NB_SUBSCRIPTS.
11419         (print_pdr_access_layout): Replace pdr_nb_subscripts with
11420         PDR_NB_SUBSCRIPTS.
11421         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
11422         (PDR_NB_SUBSCRIPTS): New.
11423         (pdr_nb_subscripts): Removed.
11424         (pdr_dim): Simplified.
11425         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
11426         with PDR_NB_SUBSCRIPTS.
11427
11428 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11429
11430         * graphite-interchange.c (compute_array_size): Remove use of
11431         PDR_DATA_CONTAINER.
11432         * graphite-poly.c (new_poly_dr): Remove argument data_container.
11433         Do not initialize PDR_DATA_CONTAINER.
11434         (print_pdr): Do not print PDR_DATA_CONTAINER.
11435         * graphite-poly.h (struct poly_dr): Remove data_container field.
11436         (PDR_DATA_CONTAINER): Removed.
11437         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
11438         PDR_DATA_CONTAINER.
11439         (build_poly_dr): Same.
11440
11441 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11442             Sebastian Pop  <sebastian.pop@amd.com>
11443
11444         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
11445         copy of the dependence polyhedron.  Free the temporary objects.
11446         (graphite_carried_dependence_level_k): Free unused objects before
11447         returning.
11448
11449 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11450
11451         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
11452         Early return without analyzing the data dependences if no
11453         transform has been done.  Call restore_scattering if the transform
11454         is not legal.
11455         (graphite-interchange.c): Same.
11456         * graphite-poly.c (print_scattering_function): Test for
11457         PBB_TRANSFORMED.
11458         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
11459         (apply_poly_transforms): Do not gcc_assert that
11460         the transform is legal.
11461         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
11462         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
11463         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
11464         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
11465         * graphite-poly.h (struct poly_scattering): New.
11466         (struct poly_bb): Add original, transformed, and saved fields.
11467         Remove transformed_scattering, original_scattering,
11468         nb_local_variables and nb_scattering_transform fields.
11469         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
11470         (poly_scattering_new): New.
11471         (poly_scattering_free): New.
11472         (poly_scattering_copy): New.
11473         (store_scattering_pbb): New.
11474         (store_scattering): New.
11475         (restore_scattering_pbb): New.
11476         (restore_scattering): New.
11477         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
11478         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
11479
11480 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11481
11482         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
11483         (print_scop): Same.
11484
11485 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11486
11487         * Makefile.in (graphite.o): Depends on PREDICT_H.
11488         * graphite.c: Include predict.h.
11489         (graphite_finalize): Call tree_estimate_probability.
11490         * predict.c (predict_loops): Do not call scev_initialize and
11491         scev_finalize.
11492         (tree_estimate_probability_bb): New.
11493         (tree_estimate_probability): Do not initialize loops: move that
11494         code to the driver.  Call tree_estimate_probability_bb.
11495         (tree_estimate_probability_driver): New.
11496         (pass_profile): Use tree_estimate_probability_driver.
11497         * predict.h (tree_estimate_probability): Declared.
11498
11499 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
11500
11501         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
11502         * graphite-dependences.c (graphite_legal_transform): Add time to
11503         TV_GRAPHITE_DATA_DEPS.
11504         (dependency_between_pbbs_p): Same.
11505         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
11506
11507 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
11508
11509         PR rtl-optimization/41033
11510         * alias.c (nonoverlapping_component_refs_p): Punt when strict
11511         aliasing is disabled.
11512
11513 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11514
11515         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
11516         si_mask_operand, and_load_operand, low_bitmask_operand,
11517         and_reg_operand, and_operand): New predicates.
11518         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
11519         * config/mips/mips.c (and_operands_ok): New function.
11520         * config/mips/mips-protos.h (and_operands_ok): Declare it.
11521         * config/mips/mips.md (move_type): Add ext_ins and logical.
11522         (type): Handle them.
11523         (and<mode>3): Use and_reg_operand as the second operand's predicate.
11524         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
11525         shift_shift.  Remove commutative constraint modifier.
11526         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
11527         shift_shift.
11528         (*clear_upper32_dext): Remove define_insn_and_split.
11529         (*clear_upper32): Turn this define_insn_and_split ...
11530         (splitter for ANDing register with 0xffff_ffff): .. into this.
11531
11532 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
11533
11534         * combine.c (try_widen_shift_mode): Factor out code to check if an
11535         integer constant is a low-order bitmask from here ...
11536         * rtlanal.c (low_bitmask_len): ... to here.
11537         * rtl.h (low_bitmask_len): Declare.
11538
11539 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
11540
11541         PR target/8603
11542         * config/alpha/alpha.md (addsi3): Remove expander.
11543         (addsi3): Rename from *addsi3_internal insn pattern.
11544         (subsi3): Remove expander.
11545         (subsi3): Rename from *subsi3_internal insn pattern.
11546
11547 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
11548
11549         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
11550         FWRITE_UNLOCKED.
11551
11552 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
11553             Eric Botcazou  <botcazou@adacore.com>
11554             Douglas B Rupp  <rupp@gnat.com>
11555
11556         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
11557         that records that fit in 64 bits are returned by immediate value,
11558         as required by OpenVMS Calling Standard.
11559         (function_value): Adjust for above modification.
11560         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
11561         virtual_incoming_args_rtx as base object, not next_arg.
11562         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
11563
11564 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11565
11566         * reload.c (find_reloads_subreg_address): Check the original
11567         req_equiv_mem address to detect the case where an address is
11568         not valid in the outer mode.
11569
11570 2009-08-11  Richard Guenther  <rguenther@suse.de>
11571
11572         PR bootstrap/40788
11573         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
11574
11575 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
11576
11577         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
11578         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
11579
11580 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
11581             Douglas B Rupp  <rupp@gnat.com>
11582
11583         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
11584         PT_STACK when frame_pointer_needed on OpenVMS.
11585         (alpha_pv_save_size, alpha_using_fp): Remove.
11586         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
11587         with proper processing for PT_NULL.
11588         (alpha_vms_initial_elimination_offset): New function. Support for
11589         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
11590         (alpha_sa_size): Force procedure type to PT_STACK when
11591         frame_pointer_needed on OpenVMS.
11592         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
11593         (alpha_using_fp): Likewise.
11594         (alpha_vms_can_eliminate): Add prototype.
11595         (alpha_vms_initial_elimination_offset): Likewise.
11596         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
11597         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
11598
11599 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
11600             Douglas B Rupp  <rupp@gnat.com>
11601
11602         * config/alpha/alpha.c (common_object_handler): New function.
11603         (vms_attribute_table): Declare a single attribute "common_object".
11604         (vms_output_aligned_decl_common): New global function.
11605         (SECTION_VMS_OVERLAY): Delete.
11606         (SECTION_VMS_GLOBAL): Likewise.
11607         (SECTION_VMS_INITIALIZE): Likewise.
11608         (vms_asm_named_section): Remove support for above flags.
11609         (vms_section_type_flags): Delete.
11610         (TARGET_SECTION_TYPE_FLAGS): Likewise.
11611         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
11612         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
11613         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
11614
11615 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
11616
11617         PR target/41015
11618         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
11619         (sub_ddmmss): Likewise.
11620
11621 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
11622
11623         PR bootstrap/41018
11624         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
11625         year.
11626
11627 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11628
11629         PR target/37053
11630         * reload1.c (reload_as_needed): Use cancel_changes to completely
11631         undo a failed replacement attempt.
11632
11633 2009-08-10  Richard Guenther  <rguenther@suse.de>
11634
11635         PR middle-end/41006
11636         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
11637         (useless_type_conversion_p): ... here.  Require pointer targets
11638         to be compatible.
11639
11640 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
11641
11642         PR c++/40866
11643         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
11644         loose the original type of the statement list.
11645
11646 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11647
11648         * config/alpha/alpha.c: Include libfuncs.h
11649         (avms_asm_output_extern): New function.
11650         (alpha_init_libfuncs): Init some decc libfuncs.
11651         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
11652         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
11653         (DO_CRTL_NAMES): Define.
11654         (LIB_SPEC): Remove.
11655         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
11656         (LONG_TYPE_SIZE): Define.
11657         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
11658         (SUBTARGET_SWITCHES): Define malloc64 switch.
11659         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
11660         (MASK_RETURN_ADDR): Define.
11661         doc/invoke.texi (mmalloc64): Document switch.
11662
11663 2009-08-09  Olivier Hainque  <hainque@adacore.com>
11664             Douglas B Rupp  <rupp@gnat.com>
11665
11666         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
11667         uses_condition_handler.
11668         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
11669         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
11670         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
11671         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
11672         (code_for_builtin): New insn codes for the new alpha_builtins.
11673         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
11674         (alpha_sa_size): Account for uses_condition_handler.
11675         (alpha_expand_prologue): Likewise.
11676         (alpha_start_function): Likewise.
11677         (alpha_expand_epilogue): Likewise.
11678         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
11679         establish/revert expanders.
11680         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
11681         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
11682         New expander, resorting to the alpha.c associated function.
11683         (builtin_revert_vms_condition_handler): Likewise.
11684         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
11685         __gcc_shell_handler, the static VMS condition handler used as
11686         an indirection wrapper to the current dynamically established
11687         handler.
11688         * config/alpha/vms-unwind.h: Complete rewrite.
11689         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
11690         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
11691
11692 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
11693             Douglas B Rupp  <rupp@gnat.com>
11694
11695         * config/alpha/alpha.c (alpha_links): Add 'target' field.
11696         (alpha_need_linkage): Handle aliases.  Return function symbol.
11697         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
11698         Use ultimate alias target for the linkage name.
11699         * config/alpha/alpha.md (movmemdi): Use the symbol returned
11700         by alpha_need_linkage for the function symbol.
11701         (setmemdi): Likewise.
11702
11703 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11704
11705         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
11706         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
11707         (ASM_WEAKEN_LABEL): Define.
11708         (CRT_CALL_STATIC_FUNCTION): Define.
11709         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
11710         (ENDFILE_SPEC): Define.
11711         (INIT_SECTION_ASM_OP): Define.
11712         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
11713         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
11714         crtend.o crtendS.o.
11715         (MULTILIB_OSDIRNAMES): Define.
11716         (shlib_version): Define.
11717         (SHLIB_EXT): Define.
11718         (SHLIB_OBJS): Define.
11719         (SHLIB_NAME): Define.
11720         (SHLIB_MULTILIB): Define.
11721         (SHLIB_INSTALL): Define.
11722         (SHLIB_SYMVEC): Define.
11723         (SHLIB_SYMVECX2): Define.
11724         (SHLIB_LINK): Define.
11725
11726 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11727
11728         * config/alpha/alpha.c (alpha_initialize_trampoline):
11729         Initialize VMS trampoline IAW ABI for bounded procedure calls.
11730         (alpha_start_function): Emit transfer address on nested functions
11731         for VMS trampoline call.
11732         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
11733         since no longer used.
11734         * config/alpha/vms-tramp.asm: Remove.
11735         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
11736         since now only data initialized at runtime.
11737
11738 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11739
11740         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
11741         (LINK_GCC_C_SEQUENCE_SPEC): Define.
11742         (MD_EXEC_PREFIX): Remove, no longer used.
11743         (MD_STARTFILE_PREFIX): Likewise.
11744         (INCLUDE_DEFAULTS): Likewise.
11745         * config/alpha/t-vms:
11746         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
11747
11748 2009-08-09  Richard Guenther  <rguenther@suse.de>
11749
11750         PR tree-optimization/41016
11751         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
11752         (operand_precision): Remove.
11753         (integral_operand_p): Likewise.
11754         (recognize_single_bit_test): Adjust.
11755
11756 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11757
11758         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
11759         operation overflows.  Likewise non-cast unary arithmetic.
11760         If one arm of a conditional expression is always taken,
11761         inhibit evaluation warnings for the other arm.  Likewise inhibit
11762         evaluation warnings for the second && or || operand if the first
11763         operand is enough to determine the result.
11764         * c-typeck.c (build_conditional_expr): Apply the same inhibition
11765         rules here.
11766         (build_binary_op): Prevent duplicate evaluation warnings.
11767
11768 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
11769
11770         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
11771         and destination have different modes, Use promote_mode to
11772         determine the signedness of the conversion.  Assert that the
11773         promoted source mode matches the destination mode.  Don't pass
11774         the destination and destination mode to expand_expr if the source
11775         mode is different.  Simplify conversion logic.
11776
11777 2009-08-09  Ira Rosen  <irar@il.ibm.com>
11778
11779         PR tree-optimization/41008
11780         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
11781         from condition only in case it's a comparison. Adjust checks.
11782
11783 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
11784
11785         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
11786         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
11787         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
11788         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
11789         (dump_cand): Handle them.
11790         (struct iv_cand): New members COST_STEP and AINC_USE.
11791         (stmt_after_increment): Likewise.
11792         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
11793         callers changed.  Use gimple_uid comparison instead of scanning.
11794         (add_candidate_1): When looking for identical candidates, take
11795         AINC_USE into account.  Set it for new candidates.
11796         (force_expr_to_var_cost): Cast target_spill_cost to int.
11797         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
11798         All callers changed.  Check for availability of autoinc addressing
11799         modes, both in general for a given mode, and in the specific use case.
11800         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
11801         changed.
11802         (get_computation_cost): Likewise.
11803         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
11804         add_autoinc_candidates): New static functions.
11805         (add_candidate): Call add_autoinc_candidates for candidates based on
11806         a USE_ADDRESS use.
11807         (find_iv_candidates): Call set_autoinc_for_original_candidates.
11808         (determine_use_iv_cost_address): If we have an autoinc candidate at
11809         the matching use, verify autoinc is possible and subtract the cost
11810         of the candidate's step from the cost.
11811         (determine_iv_cost): Record the cost of the increment in the COST_STEP
11812         member of the candidate.
11813         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
11814         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
11815
11816 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
11817
11818         * config.build (ia64-hp-*vms*): New target.
11819         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11820         with ia64-hp-*vms*.
11821         * config.gcc (ia64-hp-*vms*): New target.
11822         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11823         with ia64-hp-*vms*.
11824         * config.host (ia64-hp-*vms*): New target.
11825         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
11826         with ia64-hp-*vms*.
11827
11828 2009-08-08  Richard Guenther  <rguenther@suse.de>
11829
11830         PR tree-optimization/40991
11831         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
11832
11833 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
11834
11835         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
11836         mode check.  Do truncations in an integer mode.
11837         (force_to_mode): Handle subregs for all mode types.  Only do
11838         arithmetic simplifications on integer modes.
11839
11840 2009-08-07  Richard Guenther  <rguenther@suse.de>
11841
11842         PR tree-optimization/40999
11843         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
11844         (maybe_fold_reference): Lookup constant initializers.
11845         (fold_gimple_assign): Likewise.
11846
11847 2009-08-07  Richard Guenther  <rguenther@suse.de>
11848
11849         * tree-ssa.c (useless_type_conversion_p_1): Only for types
11850         that require structural equality defer to the langhook.
11851
11852 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11853
11854         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
11855         comments.
11856         (struct ipa_pass_through_data): New type.
11857         (struct ipa_ancestor_jf_data): New type.
11858         (union jump_func_value): Removed field formal_id, added fields
11859         pass_through and ancestor.
11860         (struct ipa_param_call_note): Changed type of formal_id to int from
11861         unsigned.
11862         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
11863         operations jump functions and ancestor jump functions.
11864         (compute_complex_pass_through): New function.
11865         (compute_scalar_jump_functions): Call compute_complex_pass_through,
11866         reflect changes in the jump function strucutre.
11867         (update_jump_functions_after_inlining): Ignore complex pass-through
11868         and ancestor jump functions.
11869         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
11870         polynomial pass-through with operation jump functions.
11871
11872 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
11873
11874         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
11875         fde->dw_fde_begin as begin label instead of hot/cold label.
11876         Use LLSDAC label instead of LLSDA for second section lsda.
11877         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
11878         label instead of LLSDA if it is true.
11879         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
11880         callers.
11881         * except.c (add_call_site, dw2_size_of_call_site_table): Add
11882         SECTION argument.  Use it as index into crtl->eh.call_site_record
11883         array.
11884         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
11885         use it to determine how to print table entries instead of using
11886         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
11887         label instead of normal begin label as base.
11888         (sjlj_assign_call_site_values): Adjust add_call_site caller.
11889         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
11890         ensure no EH range spans between sections and that landing pads
11891         are always in the corresponding section.
11892         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
11893         for crtl->eh.call_site_record being an array rather than scalar.
11894         (output_one_function_exception_table): New function, copied
11895         from output_function_exception_table.  Adjust
11896         dw2_size_of_call_site_table, dw2_output_call_site_table
11897         callers.  For SECOND section use *C suffixed labels.
11898         (output_function_exception_table): Call
11899         output_one_function_exception_table and, when doing hot/cold
11900         partitioning, also another time for the second section.
11901         * opts.c: Include except.h.
11902         (decode_options): Allow -freorder-blocks-and-partition with
11903         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
11904         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
11905         * function.h (struct rtl_eh): Change call_site_record from
11906         scalar into array of 2 elements.
11907
11908 2009-08-07  Martin Jambor  <mjambor@suse.cz>
11909
11910         * ipa-prop.c (count_formal_params_1): New function.
11911         (ipa_get_vector_of_formal_parms): New function.
11912         (get_vector_of_formal_parm_types): New function.
11913         (ipa_modify_formal_parameters): New function.
11914         (ipa_modify_call_arguments): New function.
11915         (index_in_adjustments_multiple_times_p): New function.
11916         (ipa_combine_adjustments): New function.
11917         (ipa_dump_param_adjustments): New function.
11918         * ipa-prop.h (struct ipa_parm_adjustment): New type.
11919         (ipa_get_vector_of_formal_parms): Declare.
11920         (ipa_modify_formal_parameters): Declare.
11921         (ipa_modify_call_arguments): Declare.
11922         (ipa_combine_adjustments): Declare.
11923         (ipa_dump_param_adjustments): Declare.
11924         (build_ref_for_offset): Declare.
11925         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
11926         * tree-sra.c: Include ipa-prop.c.
11927         (build_ref_for_offset): Make public.
11928
11929 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
11930
11931         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
11932
11933 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
11934
11935         * gcc/doc/extend.texi (__builtin_extract_return_address)
11936         (__builtin_frob_return_address): Document.
11937
11938 2009-08-06  Paul Brook  <paul@codesourcery.com>
11939
11940         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
11941         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
11942         implementation on ARMv6-M.
11943
11944 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11945
11946         * doc/extend.texi (pcs): Document new attribute for ARM.
11947
11948 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11949
11950         * arm.c (pcs_attribute_args): Comment out unsupported attribute
11951         variants.
11952
11953 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11954
11955         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
11956         warning ().
11957
11958 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11959
11960         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
11961
11962 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
11963
11964         Merge ARM/hard_vfp_branch to trunk.
11965
11966         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
11967
11968         * arm.c (libcall_eq): New function.
11969         (libcall_hash): New function.
11970         (add_libcall): New function.
11971         (arm_libcall_uses_aapcs_base): New function.
11972         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
11973         libcalls using the base PCS.
11974         (arm_init_cumulative_args): Likewise.
11975
11976         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
11977
11978         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
11979         Use base ABI for conversion libfuncs between HFmode and SFmode.
11980
11981         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11982
11983         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
11984         V4SImode as representatives of all 64-bit and 128-bit vector
11985         types.  Allow vector types without vector modes.
11986         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
11987         without vector modes like BLKmode.
11988         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
11989         BLKmode.  Avoid unsupported vector modes or TImode moves for
11990         non-TARGET_NEON.
11991         (aapcs_vfp_allocate_return_reg): Likewise.
11992         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
11993         V8QImode if TARGET_NEON || TARGET_IWMMXT.
11994
11995         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
11996
11997         * config/arm/arm.c (arm_handle_pcs_attribute): New.
11998         (arm_get_pcs_model): Pass attribute arguments to
11999         arm_pcs_from_attribute.
12000         (arm_init_cumulative_args): Use base AAPCS for conversions from
12001         floating-point types to DImode.
12002         (arm_attribute_table): Add pcs attribute.
12003         (arm_handle_pcs_attribute): New.
12004         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
12005         conversions from floating-point types to DImode, also declare them
12006         to use base AAPCS and declare functions they call to use base
12007         AAPCS and their RTABI names.
12008
12009         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
12010
12011         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
12012         -mfloat-abi=hard not being supported for VFP.
12013
12014         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
12015
12016         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
12017         SYMBOL_REF to hard_libcall_value.
12018
12019         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12020             Richard Earnshaw  <rearnsha@arm.com>
12021
12022         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
12023         has been put on the stack, all remaining co-processory arguments for
12024         that co-processor also go on the stack.
12025
12026         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
12027
12028         * config/arm/arm.c (arm_return_in_memory): Handle returning
12029         vectors of suitable size in registers also for AAPCS case.
12030
12031         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
12032
12033         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
12034
12035         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
12036
12037         ARM Hard-VFP calling convention
12038         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
12039         * target.h (gcc_target): Add libcall_value to table of call hooks.
12040         * targhooks.h (default_libcall_value): Default implementation.
12041         * targhooks.c (default_libcall_value): Likewise.
12042         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
12043         * optabs.c (expand_unop): Use it.
12044         * expr.h (hard_libcall_value): Pass the function RTX through.
12045         * calls.c (emit_library_call_value_1): Update call to
12046         hard_libcall_value.
12047         * explow.c (hard_libcall_value): Use new target hook.
12048         * config/arm/arm.c: Include cgraph.h
12049         (TARGET_FUNCTION_VALUE): Override default hook.
12050         (arm_pcs_default): New variable.
12051         (arm_override_options): Don't fault hard calling convention with VFP.
12052         Add support for AAPCS variants.
12053         (arm_function_value): Make static.  Handle AAPCS variants.
12054         (arm_libcall_value): New function.
12055         (arm_apply_result_size): Handle VFP registers in results.
12056         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
12057         conventions.
12058         (pcs_attribute_args): New variable.
12059         (arm_pcs_from_attribute): New function.
12060         (arm_get_pcs_model): New function.
12061         (aapcs_vfp_cum_init): New function.
12062         (aapcs_vfp_sub_candidate): New function.
12063         (aapcs_vfp_is_return_candidate): New function.
12064         (aapcs_vfp_is_call_candidate): New function.
12065         (aapcs_vfp_allocate): New function.
12066         (aapcs_vfp_allocate_return_reg): New function.
12067         (aapcs_vfp_advance): New function.
12068         (aapcs_cp_arg_layout): New variable.
12069         (aapcs_select_call_coproc): New function.
12070         (aapcs_select_return_coproc): New function.
12071         (aapcs_allocate_return_reg): New function.
12072         (aapcs_libcall_value): New function.
12073         (aapcs_layout_arg): New function.
12074         (arm_init_cumulative_args): Initialize AAPCS args data.
12075         (arm_function_arg): Handle AAPCS variants using new interface.
12076         (arm_arg_parital_bytes): Likewise.
12077         (arm_function_arg_advance): New function.
12078         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
12079         calling conventions.
12080         (arm_setup_incoming_varargs): Handle new AAPCS args data.
12081         * arm.h (NUM_VFP_ARG_REGS): Define.
12082         (LIBCALL_VALUE): Update.
12083         (FUNCTION_VALUE): Delete.
12084         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
12085         (arm_pcs): New enum.
12086         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
12087         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
12088         (FUNCTION_ARG_REGNO_P): Add VFP regs.
12089         * arm-protos.h (arm_function_arg_advance): Add.
12090         (aapcs_libcall_value): Add.
12091         (arm_function_value): Delete.
12092
12093 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
12094             H.J. Lu  <hongjiu.lu@intel.com>
12095
12096         PR target/40957
12097         * config/i386/i386.c (standard_sse_mode_p): Remove.
12098         (standard_sse_constant_p): Return 2 for integer mode
12099         vector_all_ones_operand when SSE2 is enabled.
12100         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
12101         (ix86_expand_vector_move): Do not check for negative values from
12102         standard_sse_constant_p.
12103
12104 2009-08-06  Richard Guenther  <rguenther@suse.de>
12105
12106         * tree-ssa.c (useless_type_conversion_p_1): Make function and
12107         array type comparisons frontend independent.
12108         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
12109         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
12110         out array reference lower bound and element size operands.
12111         (ao_ref_init_from_vn_reference): Properly compute the offset
12112         for ARRAY_RANGE_REF.
12113         (vn_reference_fold_indirect): Fill out array reference lower
12114         bound and element size operands.
12115         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
12116         a non gimple valued reference operand which can happen for
12117         array reference lower bound or element size.
12118         (create_component_ref_by_pieces_1): Properly generate the
12119         element size operand for array references.
12120
12121 2009-08-06  Richard Guenther  <rguenther@suse.de>
12122
12123         PR tree-optimization/40964
12124         * tree.c (iterative_hash_host_wide_int): Export.
12125         * tree.h (iterative_hash_host_wide_int): Declare.
12126         * tree-ssa-structalias.c (heapvar_map): New struct.
12127         (heapvar_map_eq): New function.
12128         (heapvar_map_hash): Likewise.
12129         (heapvar_lookup): Adjust.
12130         (heapvar_insert): Likewise.
12131         (make_constraint_from_heapvar): Allow multiple heap variables
12132         per decl at different offsets.
12133         (init_alias_heapvars): Adjust.
12134
12135 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
12136
12137         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
12138         * mips_output_sync_loop (mips_output_sync_loop): Only emit
12139         trailing sync if TARGET_SYNC_AFTER_SC.
12140
12141 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
12142
12143         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
12144         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
12145         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
12146         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
12147         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
12148         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
12149         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
12150         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
12151         test_and_set_12): Rewrite calls to mips_output_sync_loop.
12152         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
12153         the prototype declaration match the definition.
12154         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
12155         instructions explicitly.  Add barrier_before and operands
12156         parameters.
12157         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
12158         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
12159         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
12160         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
12161         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
12162         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
12163
12164 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
12165
12166         * tree-ssa-alias.c: Fix intervals to use [) syntax.
12167
12168 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
12169             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
12170
12171         PR target/40906
12172         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
12173         source operand.
12174
12175 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
12176
12177         PR rtl-optimization/40924
12178         * dse.c (canon_address): Before calling cselib_expand_value_rtx
12179         make sure canon_rtx (mem_address) isn't simpler than
12180         canon_rtx (expanded_mem_address).
12181
12182 2009-08-05  Li Feng  <nemokingdom@gmail.com>
12183
12184         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
12185         for each poly_bb_p.
12186         (build_scop_drs): Build alias set for each SCoP.
12187
12188 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
12189
12190         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
12191         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
12192         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
12193         (MIPS_ARCH_FLOAT_SPEC): Likewise.
12194         (BASE_DRIVER_SELF_SPECS): Likewise.
12195
12196 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
12197
12198         * tree-ssa-alias.c: Fix some comment typos.
12199
12200 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12201
12202         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
12203         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
12204
12205 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
12206
12207         PR c/39902
12208         * simplify-rtx.c (simplify_binary_operation_1): Disable
12209         simplifications for decimal float operations.
12210
12211 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
12212
12213         PR middle-end/40943
12214         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
12215         operand of INDIRECT_REF.
12216
12217 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
12218
12219         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
12220         constants referencing TLS symbols.
12221
12222 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12223
12224         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
12225         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
12226
12227 2009-08-03  Richard Guenther  <rguenther@suse.de>
12228
12229         * tree.c (make_vector_type): Build a main variant first,
12230         get the canonical one and then build the variant.
12231         * tree-ssa.c (useless_type_conversion_p_1): Handle
12232         fixed-point types.
12233         (useless_type_conversion_p): Conversions to pointers to
12234         incomplete record types are useless.
12235
12236 2009-08-03  Richard Guenther  <rguenther@suse.de>
12237
12238         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
12239         file will be created.
12240         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
12241         * toplev.c (compile_file): Adjust comment.
12242
12243 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12244
12245         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
12246         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
12247         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12248         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12249         (sh_promote_function_mode): Fix typo.
12250
12251 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
12252
12253         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
12254
12255 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12256
12257         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
12258         declaration arguments.
12259
12260 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
12261
12262         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
12263         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
12264         (ix86_split_ashl): Ditto.
12265         (ix86_expand_vector_init_one_nonzero): Ditto.
12266         (ix86_expand_vector_set): Ditto.
12267         (ix86_expand_reduc_v4sf): Ditto.
12268
12269 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
12270
12271         * explow.c (promote_function_mode): Remove assert.
12272         * config/sh/sh.c (sh_promote_function_mode): Declare.
12273
12274 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12275
12276         * config/pa/pa.c (pa_promote_function_mode): Declare.
12277         Change to static.  Fix promote_mode call.
12278
12279         * gthr-dce.h (CONST_CAST2): Define if not defined.
12280         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
12281
12282         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
12283
12284 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
12285
12286         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12287         now write-only variable unsignedp.
12288         (expand_expr_real_1): Use promote_decl_mode.
12289         * expr.h (promote_function_mode, promote_decl_mode): New.
12290         (promote_mode): Remove last argument.
12291         * function.c (assign_temp): Drop last argument of promote_mode.
12292         (assign_parm_find_data_types): Use promote_function_mode.
12293         (assign_parm_setup_reg): Likewise.
12294         (expand_function_end): Use promote_function_mode.
12295         * calls.c (initialize_argument_information): Use promote_function_mode.
12296         (precompute_arguments): Use promote_mode instead of checking if
12297         only PROMOTE_FUNCTION_MODE is defined.
12298         (expand_call): When making sibcall decisions, use promote_function_mode.
12299         Below, remove an if for targetm.calls.promote_function_return and
12300         and use promote_function_mode.
12301         (emit_library_call_value_1): Use promote_function_mode, fix bug
12302         where promote_mode was passed FOR_CALL == 0 for a return value in an
12303         assertion.
12304         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12305         * explow.c (promote_function_mode, promote_decl_mode): New.
12306         (promote_mode): Keep only the FOR_CALL == 0 case.
12307         * combine.c (setup_incoming_promotion): Remove test of
12308         promote_function_args.  Use promote_function_mode.
12309         * stmt.c (expand_value_return): Use promote_decl_mode.
12310         (expand_decl): Use promote_decl_mode.
12311
12312         * expr.c (store_constructor): Use promote_decl_mode.  Remove
12313         now write-only variable unsignedp.
12314         (expand_expr_real_1): Use promote_decl_mode.
12315         * expr.h (promote_function_mode, promote_decl_mode): New.
12316         (promote_mode): Remove last argument.
12317         * function.c (assign_temp): Drop last argument of promote_mode.
12318         (assign_parm_find_data_types): Use promote_function_mode.
12319         (assign_parm_setup_reg): Likewise.
12320         (expand_function_end): Use promote_function_mode.
12321         * calls.c (initialize_argument_information): Use promote_function_mode.
12322         (precompute_arguments): Use promote_mode instead of checking if
12323         only PROMOTE_FUNCTION_MODE is defined.
12324         (expand_call): When making sibcall decisions, use promote_function_mode.
12325         Below, remove an if for targetm.calls.promote_function_return and
12326         and use promote_function_mode.
12327         (emit_library_call_value_1): Use promote_function_mode, fix bug
12328         where promote_mode was passed FOR_CALL == 0 for a return value in an
12329         assertion.
12330         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
12331         * explow.c (promote_function_mode, promote_decl_mode): New.
12332         (promote_mode): Keep only the FOR_CALL == 0 case.
12333         * combine.c (setup_incoming_promotion): Remove test of
12334         promote_function_args.  Use promote_function_mode.
12335         * stmt.c (expand_value_return): Use promote_decl_mode.
12336         (expand_decl): Use promote_decl_mode.
12337
12338         * explow.c (promote_function_mode): Just call the target hook.
12339         * targhooks.c (default_promote_function_mode,
12340         default_promote_function_mode_always_promote): New.
12341         * targhooks.h (default_promote_function_mode,
12342         default_promote_function_mode_always_promote): Declare.
12343         * target.h (promote_function_args, promote_function_return): Remove.
12344         (promote_function_mode): New.
12345         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
12346         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12347         (TARGET_PROMOTE_FUNCTION_MODE): New.
12348         (TARGET_CALLS): Adjust.
12349         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
12350         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
12351
12352         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
12353         * config/s390/s390.c (s390_promote_function_mode): ... here,
12354         with pointer handling.
12355         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12356         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12357
12358         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
12359         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
12360         with pointer handling.
12361         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12362         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12363
12364         * config/sh/sh-protos.h (sh_promote_function_mode): New.
12365         * config/sh/sh.c (sh_promote_function_mode): New.
12366         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12367         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12368
12369         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
12370         * config/cris/cris.c (cris_promote_function_mode): ... here.
12371         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12372         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12373
12374         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
12375         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
12376         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12377         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
12378
12379         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
12380         * config/arm/arm.c (arm_promote_function_mode): ... here, without
12381         complex type handling.
12382         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12383         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12384
12385         * config/pa/pa.c (pa_promote_function_mode): New.
12386         (TARGET_PROMOTE_FUNCTION_MODE): Define.
12387         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12388
12389         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
12390         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
12391         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
12392         * config/xtensa/xtensa.c: Likewise.
12393         * config/stormy16/stormy16.c: Likewise.
12394         * config/iq2000/iq2000.c: Likewise.
12395         * config/rs6000/rs6000.c: Likewise.
12396         * config/picochip/picochip.c: Likewise.
12397         * config/arc/arc.c: Likewise.
12398         * config/mcore/mcore.c: Likewise.
12399         * config/score/score.c: Likewise.
12400         * config/mips/mips.c: Likewise.
12401         * config/bfin/bfin.c: Likewise.
12402         * config/ia64/ia64.c: Likewise (disabled though).
12403
12404         * config/frv/frv.h: Remove pointless remark.
12405
12406         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
12407         TARGET_PROMOTE_FUNCTION_ARGS,
12408         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
12409         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
12410
12411 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
12412
12413         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
12414         -floop-parallelize-all.
12415         * toplev.c (process_options): Rename flag_graphite_force_parallel to
12416         flag_loop_parallelize_all.
12417         * tree-ssa-loop.c (gate_graphite_transforms): Same.
12418         * graphite.c (graphite_transform_loops): Same.
12419         * common.opt: Same.
12420         * graphite-poly.c (apply_poly_transforms): Same.
12421
12422 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
12423
12424         PR tree-optimization/40914
12425         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
12426         if set, then check the delta field of the PMF record.
12427         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
12428         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
12429         call is stored in the delta.
12430
12431 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
12432
12433         * config/mips/mips.md (*clear_upper32_dext): New pattern.
12434
12435 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
12436
12437         * config/i386/bsd.h (ASM_BYTE): New define.
12438         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
12439         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
12440         .byte.  Use fputs or putc instead of fprintf where appropriate.
12441         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
12442         fputs or putc instead of fprintf where appropriate.
12443         * config/i386/i386elf.h: Ditto.
12444         * config/i386/sysv4.h: Ditto.
12445
12446         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
12447         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
12448         (*tls_global_dynamic_64): Ditto.
12449
12450 2009-07-31  Christian Bruel  <christian.bruel@st.com>
12451
12452         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
12453
12454 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12455
12456         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
12457         Remove dead code for MINUS.
12458
12459 2009-07-31  Anthony Green  <green@moxielogic.com>
12460
12461         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
12462         $r12 in prologue.
12463         (moxie_expand_epilogue): Ditto for epilogue.
12464         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
12465         incoming arguments.
12466         (moxie_function_arg): Ditto.
12467         (moxie_pass_by_reference): Ditto.
12468         (moxie_arg_partial_bytes): Ditto.
12469         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
12470         (FUNCTION_ARG_ADVANCE) Ditto.
12471         (REG_PARM_STACK_SPACE) Ditto.
12472         (FUNCTION_ARG_REGNO_P) Dito.
12473
12474         * config.gcc: Add moxie linux config support.
12475         * gcc/config/moxie/uclinux.h: New file.
12476
12477 2009-07-31  DJ Delorie  <dj@redhat.com>
12478
12479         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
12480         (UNSPECV_SP_SWITCH_E): New.
12481         (sp_switch_1): Change to an unspec.
12482         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
12483         replace $r15.
12484         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
12485         reference the new stack's address
12486
12487 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12488
12489         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
12490         graphite-clast-to-gimple.o, graphite-dependences.o,
12491         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12492         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
12493         (graphite-blocking.o,
12494         graphite-clast-to-gimple.o, graphite-dependences.o,
12495         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
12496         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
12497         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
12498         * cfgloop.h (struct loop): Add can_be_parallel field.
12499         * common.opt (fgraphite-identity): Moved up.
12500         (fgraphite-force-parallel): New flag.
12501         * graphite.c: Rewrite.
12502         * graphite.h: Rewrite.
12503         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
12504         after Graphite.
12505         * toplev.c (graphite_out_file): New file descriptor.
12506         (graphite_in_file): New.
12507         (process_options): flag_graphite_force_parallel cannot be used without
12508         Graphite.
12509         * tree-ssa-loop.c: Include toplev.h.
12510         (gate_graphite_transforms): Enable flag_graphite for
12511         flag_graphite_force_parallel.
12512
12513 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12514
12515         * ChangeLog.graphite: New.
12516         * graphite-blocking.c: New.
12517         * graphite-clast-to-gimple.c: New.
12518         * graphite-clast-to-gimple.h: New.
12519         * graphite-dependences.c: New.
12520         * graphite-dependences.h: New.
12521         * graphite-interchange.c: New.
12522         * graphite-poly.c: New.
12523         * graphite-poly.h: New.
12524         * graphite-ppl.c: New.
12525         * graphite-ppl.h: New.
12526         * graphite-scop-detection.c: New.
12527         * graphite-scop-detection.h: New.
12528         * graphite-sese-to-poly.c: New.
12529         * graphite-sese-to-poly.h: New.
12530         * sese.c: New.
12531         * sese.h: New.
12532
12533 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12534
12535         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
12536         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
12537
12538 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12539
12540         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
12541         (scev_is_linear_expression): Return false if the evolution is not
12542         affine multivariate.
12543
12544 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12545
12546         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
12547         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
12548
12549 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12550
12551         * tree-data-ref.c (debug_data_references): New.
12552         (debug_data_reference): New.
12553         * tree-data-ref.h (debug_data_references): Declared.
12554         (debug_data_reference): Declared.
12555
12556 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12557
12558         * tree-data-ref.c (stmt_simple_memref_p: Removed.
12559         * tree-data-ref.h (scop_p): Removed.
12560         (struct data_reference): Remove field scop.
12561         (DR_SCOP): Removed.
12562         (stmt_simple_memref_p): Removed.
12563
12564 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12565
12566         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
12567         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
12568         basic block empty.
12569
12570 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12571
12572         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
12573
12574 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12575
12576         * doc/invoke.texi (-fgraphite-identity): Documented.
12577
12578 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12579
12580         * tree-scalar-evolution.c: Fix comment.
12581         (instantiate_scev_1): Return unknow from scev instantiation if the
12582         result is not above instantiate_below.
12583
12584 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
12585
12586         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
12587         static anymore.  Instantiate the symbols that may have been introduced
12588         by chrec_apply.
12589         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
12590         Declared.
12591
12592 2009-07-30  DJ Delorie  <dj@redhat.com>
12593
12594         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
12595         .vliw directive to VLIW sections.
12596
12597 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12598
12599         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
12600         New variables.
12601         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
12602         (AUTOHEADER): New variable.
12603         ($(srcdir)/cstamp-h.in): Use it.
12604
12605 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
12606             Pat Haugen  <pthaugen@us.ibm.com>
12607             Revital Eres <ERES@il.ibm.com>
12608
12609         * config/rs6000/vector.md (VEC_F): Add VSX support.
12610         (VEC_A): Ditto.
12611         (VEC_N): Ditto.
12612         (mov<mode>): Ditto.
12613         (vector_load_<mode>): Ditto.
12614         (vector_store_<mode>): Ditto.
12615         (vector GPR move split): Ditto.
12616         (vec_reload_and_plus_<mptrsize>): Ditto.
12617         (vec_reload_and_reg_<mptrsize>): Ditto.
12618         (add<mode>3): Ditto.
12619         (sub<mode>3): Ditto.
12620         (mul<mode>3): Ditto.
12621         (neg<mode>2): Ditto.
12622         (abs<mode>2): Ditto.
12623         (smin<mode>3): Ditto.
12624         (smax<mode>3): Ditto.
12625         (vector_eq<mode>): Ditto.
12626         (vector_gt<mode>): Ditto.
12627         (vector_ge<mode>): Ditto.
12628         (vector_gtu<mode>): Ditto.
12629         (vector_select_<mode>_uns): Ditto.
12630         (vector_eq_<mode>_p): Ditto.
12631         (vector_gt_<mode>_p): Ditto.
12632         (vector_ge_<mode>_p): Ditto.
12633         (vector_gtu_<mode>_p): Ditto.
12634         (cr6_test_for_zero): Ditto.
12635         (cr6_test_for_zero_reverse): Ditto.
12636         (cr6_test_for_lt): Ditto.
12637         (cr6_test_for_lt_reverse): Ditto.
12638         (xor<mode>3): Ditto.
12639         (ior<mode>3): Ditto.
12640         (and<mode>3): Ditto.
12641         (one_cmpl<mode>2): Ditto.
12642         (nor<mode>2): Ditto.
12643         (andc<mode>2): Ditto.
12644         (float<VEC_int<mode>2): Ditto.
12645         (unsigned_float<VEC_int><mode>2): Ditto.
12646         (fix_trunc<mode><VEC_int>2): Ditto.
12647         (fixuns_trunc<mode><VEC_int>2): Ditto.
12648         (vec_init<mode>):
12649         (vec_set<mode>): Ditto.
12650         (vec_extract<mode>): Ditto.
12651         (vec_interleave_highv4sf): Ditto.
12652         (vec_interleave_lowv4sf): Ditto.
12653         (vec_realign_load_<mode>): Ditto.
12654         (vec_shl_<mode>): Ditto.
12655         (vec_shr_<mode>): Ditto.
12656         (div<mode>3): New patterns for VSX.
12657         (vec_interleave_highv2df): Ditto.
12658         (vec_interleave_lowv2df): Ditto.
12659         (vec_pack_trunc_v2df): Ditto.
12660         (vec_pack_sfix_trunc_v2df): Ditto.
12661         (vec_pack_ufix_trunc_v2df): Ditto.
12662         (vec_unpacks_hi_v4sf): Ditto.
12663         (vec_unpacks_lo_v4sf): Ditto.
12664         (vec_unpacks_float_hi_v4si): Ditto.
12665         (vec_unpacks_float_lo_v4si): Ditto.
12666         (vec_unpacku_float_hi_v4si): Ditto.
12667         (vec_unpacku_float_lo_v4si): Ditto.
12668         (movmisalign<mode>): Ditto.
12669         (vector_ceil<mode>2): New patterns for vectorizing math library.
12670         (vector_floor<mode>2): Ditto.
12671         (vector_btrunc<mode>2): Ditto.
12672         (vector_copysign<mode>3): Ditto.
12673
12674         * config/rs6000/predicates.md (easy_vector_constant_msb): New
12675         predicate for setting the high bit in each word, used for copysign.
12676
12677         * config/rs6000/ppc-asm.h (f19): Whitespace.
12678         (f32-f63): Define if VSX.
12679         (v0-v31): Define if Altivec.
12680         (vs0-vs63): Define if VSX.
12681
12682         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
12683
12684         * config/rs6000/power7.md: New file, provide tuning parameters for
12685         -mcpu=power7.
12686
12687         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
12688         (rs6000_cpu_cpp_builtins): Ditto.
12689         (altivec_overloaded_builtins): Ditto.
12690         (altivec_resolve_overloaded_builtin): Ditto.
12691
12692         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
12693         debug switch to disable vectorizing simple math builtin
12694         functions.
12695
12696         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
12697         Vectorize simple math builtin functions.
12698         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
12699         hook to vectorize math builtins.
12700         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
12701         (rs6000_builtin_conversion): Add VSX/power7 support.
12702         (rs6000_builtin_vec_perm): Ditto.
12703         (vsplits_constant): Add support for loading up a vector constant
12704         with just the high bit set in each part.
12705         (rs6000_expand_vector_init): Add VSX/power7 support.
12706         (rs6000_expand_vector_set): Ditto.
12707         (rs6000_expand_vector_extract): Ditto.
12708         (rs6000_emit_move): Ditto.
12709         (bdesc_3arg): Ditto.
12710         (bdesc_2arg): Ditto.
12711         (bdesc_1arg): Ditto.
12712         (rs6000_expand_ternop_builtin): Ditto.
12713         (altivec_expand_builtin): Ditto.
12714         (rs6000_expand_unop_builtin): Ditto.
12715         (rs6000_init_builtins): Ditto.
12716         (altivec_init_builtins): Ditto.
12717         (builtin_function_type): Ditto.
12718         (rs6000_common_init_builtins): Ditto.
12719         (rs6000_handle_altivec_attribute); Ditto.
12720         (rs6000_mangle_type): Ditto.
12721         (rs6000_vector_mode_supported_p): Ditto.
12722         (rs6000_mode_dependent_address): Altivec addresses with AND -16
12723         are mode dependent.
12724
12725         * config/rs6000/vsx.md: New file for VSX support.
12726
12727         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
12728         identifing values with just the most significant bit set.
12729         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
12730         vectorized builtins.
12731
12732         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
12733         (UNSPEC_VRFIM): Delete.
12734         (splitter for loading up vector with most significant bit): New
12735         splitter for vectorizing copysign.
12736         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
12737         vectorizing simple math functions.
12738         (altivec_vrfip): Add support for vectorizing simple math functions.
12739         (altivec_vrfim): Ditto.
12740         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
12741
12742         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
12743         (power7.md, vsx.md): Include for power7 support.
12744         (copysigndf3): Use VSX instructions if -mvsx.
12745         (negdf2_fpr): Ditto.
12746         (absdf2_fpr): Ditto.
12747         (nabsdf2_fpr): Ditto.
12748         (adddf3_fpr): Ditto.
12749         (subdf3_fpr): Ditto.
12750         (muldf3_fpr): Ditto.
12751         (divdf3_fpr): Ditto.
12752         (fix_truncdfdi2_fpr): Ditto.
12753         (cmpdf_internal1): Ditto.
12754         (fred, fred_fpr): Convert into expander/insn to add VSX support.
12755         (btruncdf2, btruncdf2_fpr): Ditto.
12756         (ceildf2, ceildf2_fpr): Ditto.
12757         (floordf2, floordf2_fpr): Ditto.
12758         (floatdidf2, floatdidf2_fpr): Ditto.
12759         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
12760         (fmsubdf4_fpr): Ditto.
12761         (fnmadddf4_fpr_1): Ditto.
12762         (fnmadddf4_fpr_2): Ditto.
12763         (fnmsubdf4_fpr_1): Ditto.
12764         (fnmsubdf4_fpr_2): Ditto.
12765         (fixuns_truncdfdi2): Add expander for VSX support.
12766         (fix_truncdfdi2): Ditto.
12767         (fix_truncdfsi2): Ditto.
12768         (ftruncdf2): Ditto.
12769         (btruncsf2): Whitespace.
12770         (movdf_hardfloat32): Add support for VSX registers.
12771         (movdf_softfloat32): Ditto.
12772         (movdf_hardfloat64): Ditto.
12773         (movdf_hardfloat64_mfpgpr): Ditto.
12774         (movdf_softfloat64): Ditto.
12775         (movti splitters): Add check for vector registers supporting
12776         TImode in the future.
12777         (bpermd): Add power7 bpermd instruction.
12778
12779         * config/rs6000/altivec.h (vec_div): Define if VSX.
12780         (vec_mul): Ditto.
12781         (vec_msub): Ditto.
12782         (vec_nmadd): Ditto.
12783         (vec_nearbyint): Ditto.
12784         (vec_rint): Ditto.
12785         (vec_sqrt): Ditto.
12786         (all predicates): Use the generic builtin function, and not the V4SF
12787         specific function so that the predicates will work with VSX's V2DF.
12788         (vec_all_*): Ditto.
12789         (vec_any_*): Ditto.
12790
12791         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
12792         Document new VSX functions and types.
12793
12794         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
12795         switches.
12796
12797         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
12798         "wa", and "j" constraints.  Modify "v" to talk about Altivec
12799         instead of just vector.
12800
12801 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
12802
12803         PR debug/26475
12804         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
12805         location for phi arguments.
12806         (rewrite_update_phi_arguments): Find locations for reaching defs.
12807         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
12808         Add location to add_phi_arg calls.
12809         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
12810         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
12811         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
12812         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
12813         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
12814         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
12815         * tree-phinodes.c (make_phi_node): Initialize location.
12816         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
12817         (add_phi_arg): Add location parameter.
12818         (remove_phi_arg_num): Move location when moving phi argument.
12819         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
12820         location.
12821         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
12822         slpeel_update_phi_nodes_for_guard1,
12823         slpeel_update_phi_nodes_for_guard2,
12824         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
12825         vect_loop_versioning): Set locations.
12826         * tree-parloops.c (create_phi_for_local_result,
12827         transform_to_exit_first_loop, create_parallel_loop): Add locations.
12828         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
12829         * tree-vect-loop.c (get_initial_def_for_induction,
12830         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
12831         locations.
12832         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
12833         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
12834         (gimple_phi_arg_set_location): New.  Set locus.
12835         (gimple_phi_arg_has_location): New.  Check for locus.
12836         (redirect_edge_var_map_location): New.  Return locus from var_map.
12837         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
12838         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
12839         combining PHI arguments.
12840         (cond_store_replacement): Set location.
12841         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
12842         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
12843         scop_add_exit_phis_edge): Add locations.
12844         * tree-cfgcleanup.c (remove_forwarder_block,
12845         remove_forwarder_block_with_phi): Add locations.
12846         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
12847         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
12848         locations.
12849         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
12850         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
12851         flush_pending_stmts): Add source location.
12852         * lambda-code.c (perfect_nestify): Maintain location stack with argument
12853         stack to preserve locations.
12854         * tree-vect-stmts.c (vectorizable_load): Add location.
12855         * tree-inline.c (copy_phis_for_bb): Copy locus.
12856         (setup_one_parameter): Add call locus to inlined parameter stmts.
12857         (initialize_inlined_parameters): Pass in call location as parameter
12858         assignment locus.
12859         (tree_function_versioning): Pass location to setup_one_parameter.
12860         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
12861         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
12862         copy and edge lists.
12863         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
12864         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
12865         locus parameter and override the stmt default if provided.
12866         (new_elim_graph, clear_elim_graph, delete_elim_graph,
12867         elim_graph_add_edge, elim_graph_remove_succ_edge,
12868         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
12869         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
12870         eliminate_phi):  Add locus info in elimination graph for each edge and
12871         value copy.
12872         (insert_backedge_copies): Copy locus if present.
12873         * tree-flow.h (struct _edge_var_map): Add locus field.
12874         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
12875         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
12876         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
12877         locations.
12878         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
12879
12880 2009-07-30  Martin Jambor  <mjambor@suse.cz>
12881
12882         PR tree-optimization/40570
12883         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
12884         use inlining loops.
12885
12886 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
12887
12888         * ssa-loop-manip.c: Include langhooks.h.
12889         (rewrite_phi_with_iv): New.
12890         (rewrite_all_phi_nodes_with_iv): New.
12891         (canonicalize_loop_ivs): Move here from tree-parloops.c.
12892         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
12893         * tree-parloops.c (loop_parallel_p): Move out all conditions
12894         except dependency check.
12895         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
12896         (gen_parallel_loop): Call canonicalize_loop_ivs without
12897         reduction_list argument.
12898         (build_new_reduction): New.
12899         (gather_scalar_reductions): New.
12900         (try_get_loop_niter): New.
12901         (try_create_reduction_list): New.
12902         (parallleize_loops): Change the parallel conditions check.
12903         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
12904         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
12905
12906 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
12907
12908         * opt-functions.awk (opt_args): Allow argument to be enclosed in
12909         curly braces.
12910         * doc/options.texi (Option properties):  Mention new quoting syntax.
12911
12912 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12913
12914         * config/alpha/alpha.c (alpha_start_function):
12915         Handle VMS_DEBUG_MAIN_POINTER
12916         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
12917         * doc/invoke.texi: Document -mdebug-main switch.
12918
12919 2009-07-29  Richard Henderson  <rth@redhat.com>
12920
12921         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
12922         (cgraph_create_edge_including_clones): Likewise.
12923         * tree-inline.c (copy_bb): Operate on the correct edges
12924         when updating the callgraph.
12925
12926 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12927
12928         * config/alpha/vms-cc.c: Deleted.
12929         * config/alpha/vms-ld.c: Deleted.
12930         * config/alpha/t-vms64: Moved to config/vms
12931         * config/alpha/vms-crt0-64.c: Moved to config/vms
12932         * config/alpha/vms-crt0.c: Moved to config/vms
12933         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
12934         * config/alpha/vms-psxcrt0.c: Moved to config/vms
12935         * config/alpha/xm-vms.h: Moved to config/vms
12936         * config/alpha/x-vms: Moved to config/vms
12937         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
12938         config/vms/t-vms.
12939         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
12940         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
12941         (version): Set.
12942         * config/vms/t-vms64: Moved here from config/alpha
12943         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
12944         (argc,argv,envp): Enforce 32bit malloc'ing.
12945         * config/vms/vms-psxcrt0-64.c: Likewise.
12946         * config/vms/vms-crt0.c: Moved here from config/alpha.
12947         * config/vms/vms-psxcrt0.c: Likewise.
12948         * config/vms/vms-crtl-64.h: New file.
12949         * config/vms/vms-crtl.h: New file.
12950         * config/vms/vms.opt: New file.
12951         * config/vms/xm-vms64.h: New file.
12952         * config/vms/xm-vms.h: Moved here from config/alpha.
12953         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
12954         Set.
12955         * config/vms/x-vms: Moved here from config/alpha.
12956         (version, VMS_EXTRA_PARTS): Moved to t-vms.
12957         (vms-ld.o, vms-cc.o): Removed.
12958         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
12959
12960 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12961
12962         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
12963         correct stack (obvious VMS fix).
12964
12965 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
12966
12967         * dwarf2out.c (output_file_names): Output VMS style file name, size,
12968         date, version info if VMS_DEBUGGING_INFO defined.
12969         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
12970         size, date calculating code moved here.
12971
12972 2009-07-29  Paul Brook  <paul@codesourcery.com>
12973
12974         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
12975         do_push/do_pop.
12976
12977 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
12978
12979         PR target/40577
12980         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
12981         to DImode when generating insq_le insn.
12982
12983 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
12984
12985         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
12986         New macro set for VMS_DEBUGGGING_INFO.
12987         (AT_string_form): Use it.
12988
12989 2009-07-28  DJ Delorie  <dj@redhat.com>
12990
12991         * config/mep/mep.c (vtext_section): New.
12992         (vftext_section): New.
12993         (ftext_section): New.
12994         (mep_select_section): Add support for functions.
12995         (mep_unique_section): Likewise.
12996         (mep_asm_init_sections): Likewise.
12997         (mep_encode_section_info): Remove it from here.
12998
12999         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
13000
13001 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
13002
13003         * tree.h (TREE_DEPRECATED): Document it is used for types too.
13004         (TYPE_VECTOR_OPAQUE): Use default_def_flag
13005
13006 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
13007
13008         * dwarf2out.c (output_file_names): Test new macro
13009         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
13010         (add_comp_dir_attribute): Likewise.
13011
13012 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
13013
13014         * config/i386/mingw-w64.h (LINK_SPEC): Add
13015         separating space between commands.
13016
13017 2009-07-28  Jan Hubicka  <jh@suse.cz>
13018
13019         PR tree-optimization/40759
13020         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
13021         for renaming.
13022
13023 2009-07-27  DJ Delorie  <dj@redhat.com>
13024
13025         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
13026         types are dword-aligned.
13027         (mep_expand_va_start): Likewise.
13028
13029 2009-07-27  Olivier Hainque  <hainque@adacore.com>
13030             Douglas B Rupp  <rupp@gnat.com>
13031
13032         * convert.c (convert_to_pointer): Don't assume the target
13033         pointer type is POINTER_SIZE long. Fetch its precision instead.
13034
13035 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
13036
13037         * system.h (fopen): Undefine if macro.
13038
13039 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
13040
13041         * dwarf2out.c (output_cfi_p): Removed.
13042         (output_cfis): New function.
13043         (output_fde): New function, split from output_call_frame_info.
13044         (output_call_frame_info): Use it.
13045         (dwarf2out_switch_text_section): Use output_cfis.
13046
13047 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13048
13049         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
13050         TARGET_BI_ARCH is specified without enabling SJLJ.
13051         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
13052         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
13053
13054 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
13055
13056         * arm.md (negdi2): Use DImode if forcing a value into a register.
13057
13058 2009-07-26  Ira Rosen  <irar@il.ibm.com>
13059
13060         PR tree-optimization/40801
13061         * tree-vect-stmts.c (vectorizable_call): Get previous copy
13062         of vector operand from the previous copy of vector statement.
13063         Pass the correct definition type value to
13064         vect_get_vec_def_for_stmt_copy().
13065
13066 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13067
13068         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
13069         const char ** conversion.
13070
13071 2009-07-25 David Daney <ddaney@caviumnetworks.com>
13072
13073         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
13074         fancy_abort() if !ENABLE_ASSERT_CHECKING.
13075         (gcc_unreachable): Invoke __builtin_unreachable() if
13076         !ENABLE_ASSERT_CHECKING.
13077
13078 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13079
13080         PR rtl-optimization/40445
13081         * emit-rtl.c (next_nonnote_insn_bb): New function.
13082         * rtl.h (next_nonnote_insn_bb): Declare new function.
13083         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
13084         with no successors that is the successor of the ENTRY_BLOCK.
13085         Continue from the top after removing an empty fallthrough block.
13086         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
13087         of next_nonnote_insn.
13088
13089 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
13090
13091         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
13092
13093 2009-07-25  Martin Jambor  <mjambor@suse.cz>
13094
13095         * c-common.c (c_common_attribute_table): New element for noclone.
13096         (handle_noclone_attribute): New function. Forward-declare.
13097         * tree-inline.c (tree_versionable_function_p): Check for noclone
13098         attribute.
13099         * doc/extend.texi (Labels as Values): Document need for noclone.
13100         (Function Attributes): Document noclone attribute.
13101
13102 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
13103
13104         PR rtl-optimization/34999
13105         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
13106         and dw_fde_switched_cold_to_hot fields.
13107         (output_cfi_p): New function.
13108         (output_call_frame_info): If fde->dw_fde_switched_sections,
13109         output 2 FDEs instead of one with corrupted header.
13110         (dwarf2out_do_cfi_startproc): New function.
13111         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
13112         and fde->dw_fde_switched_cold_to_hot.
13113         (dwarf2out_switch_text_section): Compute
13114         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
13115         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
13116         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
13117         Otherwise, compute fde->dw_fde_switch_cfi.
13118
13119 2009-07-24  Cary Coutant  <ccoutant@google.com>
13120
13121         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
13122
13123 2009-07-24  Cary Coutant  <ccoutant@google.com>
13124
13125         * cfghooks.c (split_block): Copy discriminator to new block.
13126         * tree-cfg.c (assign_discriminator): Check location of last
13127         instruction in block as well as first.
13128
13129 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
13130
13131         * config/i386/linux.c: Use fputs or putc instead of fprintf
13132         where appropriate.
13133         * config/i386/gas.h: Ditto.
13134         * config/i386/x86-64.h: Ditto.
13135         * config/i386/att.h: Ditto.
13136
13137 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
13138
13139         * expmed.c (emit_store_flag): Use a recursive call to optimize the
13140         xor case.
13141
13142 2009-07-24  Martin Jambor  <mjambor@suse.cz>
13143
13144         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
13145         (ipa_push_func_to_list_1): Declare.
13146         (ipa_push_func_to_list): New function.
13147
13148         * ipa-prop.c (ipa_push_func_to_list_1): New function.
13149         (ipa_init_func_list): Call ipa_push_func_to_list_1.
13150         (ipa_push_func_to_list): Removed.
13151         (ipa_pop_func_from_list): Clear node_enqueued flag.
13152
13153 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13154
13155         * config/s390/s390.c (override_options): Default
13156         max-unrolled-insns to 100 for z10 tuning.
13157
13158 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
13159
13160         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
13161         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
13162         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
13163         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
13164         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
13165         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
13166         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
13167
13168 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
13169
13170         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
13171         use default set in mingw32.h header.
13172         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
13173         64-bit /mingw/include path.
13174         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
13175         path.
13176
13177 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
13178
13179         PR rtl-optimization/40209
13180         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
13181
13182 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13183
13184         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
13185         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
13186         with the rest of string where appropriate.  Use fputs or putc
13187         instead of fprintf where appropriate.
13188
13189 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13190             Pat Haugen  <pthaugen@us.ibm.com>
13191             Revital Eres <ERES@il.ibm.com>
13192
13193         * config/rs6000/vector.md: New file.  Move most of the vector
13194         expander support here from altivec.md to allow for the VSX vector
13195         unit in the future.  Add support for secondary_reload patterns.
13196         Rewrite the patterns for vector comparison, and vector comparison
13197         predicate instructions so that the RTL expresses the desired
13198         behavior, instead of using unspec.
13199
13200         * config/rs6000/constraints.md ("f" constraint): Use
13201         rs6000_constraints to hold the precalculated register class.
13202         ("d" constraint): Ditto.
13203         ("wd" constraint): New constraint for VSX.
13204         ("wf" constraint): Ditto.
13205         ("ws" constraint): Ditto.
13206         ("wa" constraint): Ditto.
13207         ("wZ" constraint): Ditto.
13208         ("j" constraint): Ditto.
13209
13210         * config/rs6000/predicates.md (vsx_register_operand): New
13211         predicate for VSX.
13212         (vfloat_operand): New predicate for vector.md.
13213         (vint_operand): Ditto.
13214         (vlogical_operand): Ditto.
13215         (easy_fp_constant): If VSX, 0.0 is an easy constant.
13216         (easy_vector_constant): Add VSX support.
13217         (altivec_indexed_or_indirect_operand): New predicate for
13218         recognizing Altivec style memory references with AND -16.
13219
13220         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
13221         for vector secondary reload support.
13222         (rs6000_vector_reg_class): Delete, replacing it with
13223         rs6000_constraints.
13224         (rs6000_vsx_reg_class): Ditto.
13225         (rs6000_constraints): New array to hold the register classes of
13226         each of the register constraints that can vary at runtime.
13227         (builtin_mode_to_type): New static array for builtin function type
13228         creation.
13229         (builtin_hash_table): New static hash table for builtin function
13230         type creation.
13231         (TARGET_SECONDARY_RELOAD): Define target hook.
13232         (TARGET_IRA_COVER_CLASSES): Ditto.
13233         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
13234         registers are 128 bits if VSX memory reference instructions are used.
13235         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
13236         unit is being used.
13237         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
13238         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
13239         Print several of the scheduling related parameters.
13240         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
13241         rs6000_constraints instead of rs6000_vector_reg_class.  Move
13242         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
13243         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
13244         Altivec.  Add VSX support.  Setup for secondary reload support on
13245         Altivec/VSX registers.
13246         (rs6000_override_options): Make power7 set the scheduling groups
13247         like the power5.  Add support for new debug switches to override
13248         the scheduling defaults.  Temporarily disable -mcpu=power7 from
13249         setting -mvsx.  Add support for debug switches -malways-hint,
13250         -msched-groups, and -malign-branch-targets.
13251         (rs6000_buitlin_conversion): Add support for returning unsigned
13252         vector conversion functions to fix regressions due to stricter
13253         type checking.
13254         (rs6000_builtin_mul_widen_even): Ditto.
13255         (rs6000_builtin_mul_widen_odd): Ditto.
13256         (rs6000_builtin_vec_perm): Ditto.
13257         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
13258         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
13259         to zero a register.
13260         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
13261         generated upstream.
13262         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
13263         VSX types for bit operations.  Changes to accomidate vector.md.
13264         (bdesc_2arg): Ditto.
13265         (bdesc_1arg): Ditto.
13266         (struct builtin_description_predicates): Rewrite predicate
13267         handling so that RTL describes the operation, instead of passing
13268         the instruction to be used as a string argument.
13269         (bdesc_altivec_preds): Ditto.
13270         (altivec_expand_predicate_builtin): Ditto.
13271         (altivec_expand_builtin): Ditto.
13272         (rs6000_expand_ternop_builtin): Use a switch instead of an if
13273         statement for vsldoi support.
13274         (altivec_expand_ld_builtin): Change to use new names from vector.md.
13275         (altivec_expand_st_builtin): Ditto.
13276         (paired_expand_builtin): Whitespace changes.
13277         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
13278         builtin_mode_to_type table for secondary reload.  Call
13279         builtin_function_type to build random builtin functions.
13280         (altivec_init_builtins): Change to use builtin_function_type to
13281         create builtin function types dynamically as we need them.
13282         (builtin_hash_function): New support for hashing the tree types
13283         for builtin function as we need it, rather than trying to build
13284         all of the trees that we need.  Add initial preliminary VSX support.
13285         (builtin_function_type): Ditto.
13286         (builtin_function_eq): Ditto.
13287         (builtin_hash_struct): Ditto.
13288         (rs6000_init_builtins): Ditto.
13289         (rs6000_common_init_builtins): Ditto.
13290         (altivec_init_builtins): Ditto.
13291         (rs6000_common_init_builtins): Ditto.
13292         (enum reload_reg_type): New enum for simplifing reg classes.
13293         (rs6000_reload_register_type): Simplify register classes into GPR,
13294         Vector, and other registers.  Altivec and VSX addresses in reload.
13295         (rs6000_secondary_reload_inner): Ditto.
13296         (rs6000_ira_cover_classes): New target hook, that returns the
13297         appropriate cover classes, based on -mvsx being used or not.
13298         (rs6000_secondary_reload_class): Add VSX support.
13299         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
13300         (get_vsel_insn): Ditto.
13301         (rs6000_emit_vector_compare): Rewrite vector conditional support
13302         so that where we can, we use RTL operators, instead of blindly use
13303         UNSPEC.
13304         (rs6000_emit_vector_select): Ditto.
13305         (rs6000_emit_vector_cond_expr): Ditto.
13306         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
13307         (create_TOC_reference): Add -mdebug=addr support.
13308         (emit_frame_save): VSX loads/stores need register indexed addressing.
13309
13310         * config/rs6000/rs6000.md: Include vector.md.
13311
13312         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
13313
13314         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
13315         support for V2DI, V2DF in logical, permute, select operations.
13316
13317         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
13318         switch for vsx/power7.
13319         (-mvsx-scalar-memory): Ditto.
13320         (-mvsx-align-128): Ditto.
13321         (-mallow-movmisalign): Ditto.
13322         (-mallow-df-permute): Ditto.
13323         (-msched-groups): Ditto.
13324         (-malways-hint): Ditto.
13325         (-malign-branch-targets): Ditto.
13326
13327         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
13328         hook instead.
13329         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
13330         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
13331         (rs6000_vector_reg_class): Delete.
13332         (rs6000_vsx_reg_class): Ditto.
13333         (enum rs6000_reg_class_enum): New enum for the constraints that
13334         vary based on target switches.
13335         (rs6000_constraints): New array to hold the register class for all
13336         of the register constraints that vary based on the switches used.
13337         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
13338         (enum rs6000_builtins): Add unsigned varients for the builtin
13339         declarations returned by target hooks for expanding multiplies,
13340         select, and permute operations.  Add VSX builtins.
13341         (enum rs6000_builtin_type_index): Add entries for VSX.
13342         (V2DI_type_node): Ditto.
13343         (V2DF_type_node): Ditto.
13344         (unsigned_V2DI_type_node): Ditto.
13345         (bool_long_type_node): Ditto.
13346         (intDI_type_internal_node): Ditto.
13347         (uintDI_type_internal_node): Ditto.
13348         (double_type_internal_node): Ditto.
13349
13350         * config/rs6000/altivec.md (whole file): Move all expanders to
13351         vector.md from altivec.md.  Rename insn matching functions to be
13352         altivec_foo.
13353         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
13354         (altivec_vcmp*): Ditto.
13355         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
13356         (VM): New iterator for moves that includes the VSX types.
13357         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
13358         (altivec_vperm_<mode>_uns): New, for unsigned types.
13359         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
13360         (altivec_eq<mode>): Ditto.
13361         (altivec_gt<mode>): Ditto.
13362         (altivec_gtu<mode>): Ditto.
13363         (altivec_eqv4sf): Ditto.
13364         (altivec_gev4sf): Ditto.
13365         (altivec_gtv4sf): Ditto.
13366         (altivec_vcmpbfp_p): Ditto.
13367
13368 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
13369
13370         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
13371         unsigned HWI.
13372
13373 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
13374
13375         PR target/40832
13376         * config/i386/i386.c (output_387_ffreep): Rewrite to use
13377         ASM_SHORT instead of .word.
13378         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
13379         instead of .word in asm template.
13380
13381 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
13382
13383         PR target/37488
13384         * ira-lives.c (bb_has_abnormal_call_pred): New function.
13385         (process_bb_node_lives): Use it.
13386
13387         * ira.c (setup_cover_and_important_classes): Don't setup
13388         ira_important_class_nums.  Add cover classes to the end of
13389         important classes.
13390         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
13391         New.
13392         (find_reg_class_closure): Use reorder_important_classes.
13393
13394         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
13395
13396         * config/i386/i386.c (i386_ira_cover_classes): New function.
13397         (TARGET_IRA_COVER_CLASSES): Redefine.
13398
13399         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
13400         importance of order of cover classes in the array.
13401
13402 2009-07-22  Diego Novillo  <dnovillo@google.com>
13403
13404         * tree-pass.h (TDF_EH): Define.
13405         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
13406         contains TDF_EH, print the EH region number holding GS.
13407         * tree-dump.c (dump_options): Add "eh".
13408         * doc/invoke.texi: Document it.
13409
13410 2009-07-22  Doug Kwan  <dougkwan@google.com>
13411
13412         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
13413
13414 2009-07-22  Michael Matz  <matz@suse.de>
13415
13416         PR tree-optimization/35229
13417         PR tree-optimization/39300
13418
13419         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
13420         (inhibit_phi_insertion): New function.
13421         (insert_into_preds_of_block): Call it for REFERENCEs.
13422         (init_pre): Initialize and finalize scalar evolutions.
13423         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
13424
13425 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
13426
13427         * config/i386/predicates.md (zero_extended_scalar_load_operand):
13428         Use CONST_VECTOR_NUNITS to determine number of elements.
13429
13430 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
13431
13432         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
13433         (U, W): Constraints are now deprecated and will be removed if we
13434         run out of letters.
13435         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
13436         the file.
13437         ("prefetch"): Add the stcmh instruction for prefetching.
13438         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
13439         changes.
13440         (s390_short_displacement): Return always true if compiling for
13441         machines not providing the long displacement facility.
13442         (s390_mem_constraint): Support the new constraint letter Z.
13443         (s390_check_qrst_address): New function.
13444
13445 2009-07-21  DJ Delorie  <dj@redhat.com>
13446
13447         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
13448         alone too.
13449
13450 2009-07-21  Jason Merrill  <jason@redhat.com>
13451
13452         * c-common.c (max_tinst_depth): Increase default to 1024.
13453
13454 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13455
13456         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
13457         (vec_unpacku_float_lo_v4si): Ditto.
13458
13459 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
13460
13461         PR target/40811
13462         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
13463         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
13464         (builtin_description): Add __builtin_ia32_cvtudq2ps.
13465         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
13466
13467 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
13468
13469         PR tree-optimization/40813
13470         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
13471         it.
13472
13473 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
13474
13475         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
13476         with a NOP_EXPR if needed.
13477
13478 2009-07-21  Paul Brook <paul@codesourcery.com>
13479
13480         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
13481         Terminate debug dump with newline.
13482
13483 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13484
13485         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
13486         Cast "1" to unsigned HOST_WIDE_INT.
13487         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
13488         deposit length to the maximum length - lsb.  Extend length if
13489         HOST_BITS_PER_WIDE_INT is 32.
13490
13491 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
13492
13493         * cgraph.h (constant_pool_htab): New function.
13494         (constant_descriptor_tree): Move from varasm.c.
13495         * varasm.c (constant_pool_htab): New function.
13496         (constant_descriptor_tree): Move to cgraph.h.
13497
13498 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
13499
13500         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
13501
13502 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
13503
13504         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
13505         $(VARRAY_H).
13506
13507 2009-07-20  Xinliang David Li  <davidxl@google.com>
13508
13509         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
13510
13511 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
13512
13513         * config/mips/mips.md (move_type): Add arith.
13514         (type): Handle arith.
13515         (zero_extendsidi2): Rename this into ...
13516         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
13517         (zero_extendsidi2): New expander.
13518         (*zero_extendsidi2_dext): New pattern.
13519
13520 2009-07-20  Nick Clifton  <nickc@redhat.com>
13521
13522         * config.gcc (mips64-*-*): Add definition of tm_defines in order
13523         to set MIPS_ABI_DEFAULT.
13524         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
13525
13526 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
13527
13528         * tree-object-size.c (addr_object_size): Handle unions with
13529         array in it as last field of structs in __bos (, 1) as __bos (, 0).
13530
13531         PR tree-optimization/40792
13532         * tree.c (build_function_type_skip_args): Remove bogus assert.
13533
13534 2009-07-20  Jan Hubicka  <jh@suse.cz>
13535             Martin Jambor  <mjambor@suse.cz>
13536
13537         * cgraph.h (combined_args_to_skip): New field.
13538         * cgraph.c (cgraph_create_virtual_clone): Properly handle
13539         combined_args_to_skip and args_to_skip.
13540         * tree-inline.c (update_clone_info): New function.
13541         (tree_function_versioning): Call update_clone_info.
13542         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
13543         functions.
13544         (cgraph_materialize_all_clones): More extensive dumping, working
13545         with combined_args_to_skip rather than args_to_skip.
13546
13547 2009-07-20  Ira Rosen  <irar@il.ibm.com>
13548
13549         * tree-vectorizer.h (vectorizable_condition): Add parameters.
13550         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
13551         (get_initial_def_for_reduction): Likewise.
13552         (vectorizable_reduction): Skip the check of first operand in case
13553         of COND_EXPR. Add check that it is outer loop vectorization if
13554         nested cycle was detected. Call vectorizable_condition() for
13555         COND_EXPR. If reduction epilogue cannot be created do not fail for
13556         nested cycles (if it is not double reduction). Assert that there
13557         is only one type in the loop in case of COND_EXPR. Call
13558         vectorizable_condition() to vectorize COND_EXPR.
13559         * tree-vect-stmts.c (vectorizable_condition): Update comment.
13560         Add parameters. Allow nested cycles if called from
13561         vectorizable_reduction(). Use reduction vector variable if provided.
13562         (vect_analyze_stmt): Call vectorizable_reduction() before
13563         vectorizable_condition().
13564         (vect_transform_stmt): Update call to vectorizable_condition().
13565
13566 2009-07-20  Christian Bruel  <christian.bruel@st.com>
13567
13568         * config/sh/sh.opt (-mfmovd): Resurrect and document.
13569         * doc/invoke.texi (-mfmovd): Likewise.
13570         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
13571
13572 2009-07-20  Jan Hubicka  <jh@suse.cz>
13573
13574         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
13575         when handling SSA name.
13576
13577 2009-07-19  Jan Hubicka  <jh@suse.cz>
13578
13579         PR tree-optimization/40676
13580         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
13581         virtual PHIs in empty BBs.
13582
13583 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13584
13585         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
13586         re-expanded the compound use gen_lowpart instead to convert to the
13587         desired mode.
13588
13589 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13590
13591         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
13592         OUTER_CONST arguments.
13593         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
13594         the new wider mode will be masked off.
13595         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
13596
13597 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13598
13599         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
13600         high-order bits are zero.
13601
13602 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
13603
13604         * combine.c (simplify_shift_const_1): Split code to determine
13605         shift_mode into ...
13606         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
13607         new bits shifted in are identical to the old sign bit.
13608
13609 2009-07-18  Richard Guenther  <rguenther@suse.de>
13610
13611         PR c/40787
13612         * gimplify.c (gimplify_call_expr): Reject code using results from
13613         functions returning void.
13614
13615 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13616
13617         * doc/md.texi: Document the new PowerPC "es" constraint.
13618         Document that "m" can include automodified addresses on this target,
13619         and explain how %U must be used.  Extend the "Q" and "Z" documentation
13620         to suggest "es" as well as "m".
13621         * config/rs6000/constraints.md (es): New memory constraint.
13622         (Q, Z): Update strings to match new documentation.
13623
13624 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
13625
13626         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
13627         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
13628         * config/rs6000/predicates.md (volatile_mem_operand): Use
13629         offsettable_nonstrict_memref_p.
13630         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
13631         (*floatunssidf2_internal): Likewise.
13632         (*fix_truncdfsi2_internal): Likewise.
13633         (*fix_trunctfsi2_internal): Likewise.
13634
13635 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
13636
13637         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
13638         atmega32u2 devices.
13639         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13640
13641 2009-07-17  Richard Guenther  <rguenther@suse.de>
13642
13643         PR c/40401
13644         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
13645         (pass_warn_unused_result): Likewise.
13646         (TODO_set_props): Remove.
13647         * omp-low.c (diagnose_omp_structured_block_errors): Change to
13648         run as a pass.
13649         (pass_diagnose_omp_blocks): Define.
13650         * c-decl.c (pop_file_scope): Do not finalize the CU here.
13651         (c_gimple_diagnostics_recursively): Remove.
13652         (finish_function): Do not call it.
13653         (c_write_global_declarations): Continue after errors.
13654         Finalize the CU here.
13655         * c-gimplify.c (c_genericize): Do not gimplify here.
13656         * c-common.c (c_warn_unused_result): Move ...
13657         * tree-cfg.c (do_warn_unused_result): ... here.
13658         (run_warn_unused_result): New function.
13659         (gate_warn_unused_result): New function.
13660         (pass_warn_unused_result): New pass.
13661         * c-common.h (c_warn_unused_result): Remove.
13662         * flags.h (flag_warn_unused_result): Declare.
13663         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
13664         * opts.c (flag_warn_unused_result): Initialize to false.
13665         * toplev.c (compile_file): Add comment.
13666         * omp-low.c (create_omp_child_function): Do not register
13667         the function with the frontend.
13668         (diagnose_omp_structured_block_errors): Prepare to be
13669         called as optimization pass.
13670         (gate_diagnose_omp_blocks): New function.
13671         (pass_diagnose_omp_blocks): New pass.
13672         * cgraph.h (cgraph_optimize): Remove.
13673         (cgraph_analyze_function): Likewise.
13674         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
13675         * cgraphunit.c (cgraph_lower_function): Lower nested functions
13676         before their parents here.
13677         (cgraph_finalize_function): Not here.
13678         (cgraph_analyze_function): Gimplify functions here.
13679         (cgraph_finalize_compilation_unit): Continue after errors.
13680         Optimize the callgraph from here.
13681         (cgraph_optimize): Make static.
13682         * langhooks.c (write_global_declarations): Finalize the CU.
13683         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
13684         (gimplify_function_tree): Assert we gimplify only once.
13685         Set PROP_gimple_any property.
13686         * tree-nested.c (gimplify_all_functions): New function.
13687         (lower_nested_functions): Gimplify all nested functions.
13688         * gimple.h (diagnose_omp_structured_block_errors): Remove.
13689         * passes.c (init_optimization_passes): Add pass_warn_unused_result
13690         and pass_diagnose_omp_blocks after gimplification.  Do not
13691         set TODO_set_props on all_lowering_passes.
13692         (execute_one_pass): Do not handle TODO_set_props.
13693         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
13694         (gimplify.o): Add tree-pass.h dependency.
13695         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
13696         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
13697         (unsave_r): Likewise.
13698         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
13699         temporary variable.
13700
13701 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
13702
13703         * doc/service.texi (Service): Restore previously removed link,
13704         which isn't broken after all.
13705
13706 2009-07-17  Richard Guenther  <rguenther@suse.de>
13707
13708         PR tree-optimization/40321
13709         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
13710         PHI nodes to the maximal set.
13711         (make_values_for_phi): Add PHI arguments to the maximal set.
13712         (execute_pre): Dump PHI_GEN and the maximal set.
13713
13714 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
13715
13716         PR c++/40780
13717         * gimplify.c (gimplify_conversion): Don't change non-conversions into
13718         VIEW_CONVERT_EXPR.
13719
13720 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13721
13722         * doc/extend.texi (Nested Functions): Replace broken link with
13723         textual reference.
13724         * doc/service.texi (Service): Remove broken link.
13725
13726 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
13727
13728         PR bootstrap/40781
13729         * builtins.c (expand_builtin_memcmp): Use loc instead of
13730         EXPR_LOCATION (exp).
13731         (expand_builtin_strncmp): Likewise.
13732
13733 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
13734             Manuel López-Ibáñez  <manu@gcc.gnu.org>
13735
13736         PR 40435
13737         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
13738         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
13739         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
13740         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
13741         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
13742         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
13743         tree-inline.c, c-common.c, c-common.h, gimple.c,
13744         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
13745         convert.c: Add location argument to fold_{unary,binary,ternary},
13746         fold_build[123], build_call_expr, build_size_arg,
13747         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
13748         fold_build1_initializer, fold_build2_initializer,
13749         fold_build3_initializer, fold_build_call_array,
13750         fold_build_call_array_initializer, fold_single_bit_test,
13751         omit_one_operand, omit_two_operands, invert_truthvalue,
13752         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
13753         combine_comparisons, fold_builtin_*, fold_call_expr,
13754         build_range_check, maybe_fold_offset_to_address, round_up,
13755         round_down.
13756
13757 2009-07-16  Jason Merrill  <jason@redhat.com>
13758
13759         PR libstdc++/37907
13760         * c-common.c (c_common_reswords): Add __is_standard_layout
13761         and __is_trivial.
13762         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
13763         * doc/implement-cxx.texi: New.
13764         * doc/gcc.texi: Include it.
13765
13766 2009-07-16  DJ Delorie  <dj@redhat.com>
13767
13768         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
13769         compares that may be indirectly affected by previous instructions.
13770
13771 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13772
13773         * builtins.c (do_mpc_arg2): New.
13774         (fold_builtin_2): Fold builtin cpow.
13775         * real.h (HAVE_mpc_pow): New.
13776
13777 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
13778
13779         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
13780         comparison to skip unprofitable schedule
13781
13782 2009-07-16  Simon Baldwin  <simonb@google.com>
13783
13784         * gcc.c (option_map): New flag -no-canonical-prefixes.
13785         * (display_help): Print help text for new flag.
13786         * (process_command): Move options translation and language specifics
13787         and handle new flag early.  Use it to set a function pointer to a
13788         prefix builder.  Replace make_relative_prefix calls with calls to
13789         the function pointed to.  Ignore new flag in regular options handling.
13790         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
13791
13792 2009-07-15  DJ Delorie  <dj@redhat.com>
13793
13794         * config/mep/mep.md (sibcall_internal): Change register to avoid
13795         argument registers.
13796         (sibcall_value_internal): Likewise.
13797
13798 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
13799
13800         PR rtl-optimization/40710
13801         * resource.c (mark_target_live_regs): Reset DF problem to LR.
13802
13803 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
13804
13805         * config/mips/mips.md (*extenddi_truncate<mode>,
13806         *extendsi_truncate<mode>): Change type attribute to move_type
13807         with shift_shift.  Split out code handling exts from here ...
13808         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
13809         pattern.
13810         (*extendhi_truncateqi): Change type attribute to move_type with
13811         shift_shift.  Split out code handling exts from here ...
13812         (*extendhi_truncateqi_exts): ... to this new pattern.
13813
13814 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
13815
13816         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
13817         instead of "and" with inverted sign bit mask value.  Use
13818         "nonimmediate_operand" for operand 1 and operand 2 predicate.
13819         Allocate registers only for operand 4 and operand 5.
13820
13821 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
13822
13823         PR middle-end/40747
13824         * fold-const.c (fold_cond_expr_with_comparison): When folding
13825         < and <= to MIN, make sure the MIN uses the same type as the
13826         comparison's operands.
13827
13828 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
13829
13830         * arm.md (ior_xor): New code iterator.
13831         (split for ior/xor with shift and zero-extend): New split pattern.
13832         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
13833
13834 2009-07-15  Richard Guenther  <rguenther@suse.de>
13835
13836         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
13837         offset member.
13838
13839 2009-07-15  Richard Guenther  <rguenther@suse.de>
13840
13841         PR middle-end/40753
13842         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
13843
13844 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13845
13846         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
13847         handle 2.6.30 kernel.
13848
13849 2009-07-15  DJ Delorie  <dj@redhat.com>
13850
13851         * config/mep/mep.md (sibcall_internal): Change register to allow
13852         for 24-bit addresses.
13853         (sibcall_value_internal): Likewise.
13854
13855 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13856
13857         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
13858         that are enabled/disabled by the flags introduced by a previous patch.
13859
13860 2009-07-14  DJ Delorie  <dj@redhat.com>
13861
13862         * config/mep/mep.md (sibcall_internal): Include non-toggling
13863         non-jmp case.
13864         (sibcall_value_internal): Likewise.
13865
13866 2009-07-14  Taras Glek  <tglek@mozilla.com>
13867             Rafael Espindola  <espindola@google.com>
13868
13869         * doc/sourcebuild.texi: Document install-plugin target.
13870         * configure.ac: Added install-plugin target to language makefiles.
13871         * configure: Regenerate.
13872         * Makefile.in (install-plugin): Install more headers,
13873         depend on lang.install-plugin.
13874
13875 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
13876
13877         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13878         translation.
13879
13880 2009-07-14  DJ Delorie  <dj@redhat.com>
13881
13882         * config/mep/mep.c (mep_vliw_jmp_match): New function.
13883         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
13884         * config/mep/mep.md (sibcall_internal): Change test from
13885         mep_vliw_mode_match to mep_vliw_jmp_match.
13886         (sibcall_value_internal): Likewise.
13887
13888 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
13889
13890         * config/i386/sse.md (copysign<mode>3): New expander.
13891         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
13892         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
13893         Use ix86_build_const_vector.
13894         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
13895         IX86_BUILTIN_CPYSGNPD.
13896         (builtin_description): Add __builtin_ia32_copysignps and
13897         __builtin_ia32_copysignpd.
13898         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
13899         and BUILT_IN_COPYSIGNF.
13900
13901 2009-07-13  Jason Merrill  <jason@redhat.com>
13902
13903         * builtins.c (can_trust_pointer_alignment): New fn.
13904         (get_pointer_alignment): Factor it out from here.
13905         * tree.h: Declare it.
13906
13907 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
13908
13909         * config/rs6000/predicates.md (offsettable_mem_operand): Test
13910         RTX_AUTOINC class.
13911
13912 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
13913
13914         PR debug/40705
13915         PR c++/403057
13916         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
13917
13918 2009-07-14  Richard Guenther  <rguenther@suse.de>
13919             Andrey Belevantsev <abel@ispras.ru>
13920
13921         PR middle-end/40745
13922         * cfgexpand.c (partition_stack_vars): Do not bother to update
13923         alias information when not optimizing.
13924
13925 2009-07-14  Richard Guenther  <rguenther@suse.de>
13926             Andrey Belevantsev <abel@ispras.ru>
13927
13928         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
13929         (pt_solution_set): Likewise.
13930         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
13931         * tree-ssa-structalias.c (pt_solution_set): New function.
13932         * final.c (rest_of_clean_state): Free SSA data structures.
13933         * print-rtl.c (print_decl_name): Remove.
13934         (print_mem_expr): Implement in terms of print_generic_expr.
13935         * alias.c (ao_ref_from_mem): New function.
13936         (rtx_refs_may_alias_p): Likewise.
13937         (true_dependence): Query alias-export info.
13938         (canon_true_dependence): Likewise.
13939         (write_dependence_p): Likewise.
13940         * tree-dfa.c (get_ref_base_and_extent): For void types leave
13941         size unknown.
13942         * emit-rtl.c (component_ref_for_mem_expr): Remove.
13943         (mem_expr_equal_p): Use operand_equal_p.
13944         (set_mem_attributes_minus_bitpos): Do not use
13945         component_ref_for_mem_expr.
13946         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
13947         (update_alias_info_with_stack_vars): Likewise.
13948         (partition_stack_vars): Call update_alias_info_with_stack_vars.
13949         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
13950         explicitly nor clear stmt operands.
13951         Free the decl-to-pointer map.
13952         * tree-optimize.c (execute_free_datastructures): Do not free
13953         SSA data structures here.
13954         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
13955         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
13956         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
13957         dependencies.
13958         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
13959
13960 2009-07-13  DJ Delorie  <dj@redhat.com>
13961
13962         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
13963         unrolling at the right iteration count.
13964
13965         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
13966         calculations.
13967
13968 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13969
13970         * haifa-sched.c (rank_for_schedule): Introduced flags to
13971         enable/disable individual scheduling heuristics.
13972         * common.opt: Introduced flags to enable/disable individual
13973         heuristics in the scheduler.
13974         * doc/invoke.texi: Introduced flags to enable/disable individual
13975         heuristics in the scheduler.
13976
13977 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
13978
13979         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
13980         config/i386/mingw-tls.c.
13981         * config/i386/mingw-tls.c: Removed.
13982
13983 2009-07-13  Ira Rosen  <irar@il.ibm.com>
13984
13985         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
13986         checks access only relevant statements.
13987         (vectorizable_reduction): Likewise.
13988
13989 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
13990
13991         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
13992         just for 32-bit case.
13993
13994 2009-07-12  Jan Hubicka  <jh@suse.cz>
13995
13996         PR tree-optimization/40585
13997         * except.c (expand_resx_expr): When there already is resume
13998         instruction, produce linked list.
13999         (build_post_landing_pads): Assert that resume is empty.
14000         (connect_post_landing_pads): Handle resume lists.
14001         (dump_eh_tree): Dump resume list.
14002
14003 2009-07-12  Ira Rosen  <irar@il.ibm.com>
14004
14005         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
14006         with additional argument.
14007         * tree-vectorizer.h (enum vect_def_type): Add
14008         vect_double_reduction_def.
14009         (vect_is_simple_reduction): Add argument.
14010         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
14011         indentation.
14012         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
14013         vect_is_simple_reduction with additional argument.
14014         (vect_analyze_loop_operations): Handle exit phi nodes in case of
14015         double reduction.
14016         (reduction_code_for_scalar_code): Handle additional codes by
14017         returning ERROR_MARK for them. Fix comment and indentation.
14018         (vect_is_simple_reduction): Fix comment, add argument to specify
14019         double reduction. Detect double reduction.
14020         (get_initial_def_for_induction): Fix indentation.
14021         (get_initial_def_for_reduction): Fix comment and indentation.
14022         Handle double reduction. Create initial definitions that do not
14023         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
14024         (vect_create_epilog_for_reduction): Fix comment, add argument to
14025         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
14026         epilogue result extraction. Create double reduction phi node and
14027         replace relevant uses.
14028         (vectorizable_reduction): Call vect_is_simple_reduction with
14029         additional argument. Fix indentation. Update epilogue code treatment
14030         according to the changes in reduction_code_for_scalar_code. Check
14031         for double reduction. Call vect_create_epilog_for_reduction with
14032         additional argument.
14033         * tree-vect-stmts.c (process_use): Handle double reduction, update
14034         documentation.
14035         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
14036         (vect_get_vec_def_for_operand): Likewise.
14037
14038 2009-07-12  Danny Smith  <dansmister@gmail.com>
14039
14040         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
14041         dllexport if !TREE_PUBLIC.
14042         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
14043
14044 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
14045
14046         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
14047         (avr_extra_arch_macro) Remove declatation.
14048         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
14049         (avr_extra_arch_macro) Declare as static.
14050         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
14051
14052 2009-07-11  Jan Hubicka  <jh@suse.cz>
14053
14054         PR middle-end/48388
14055         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
14056
14057 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
14058
14059         PR debug/40713
14060         * dwarf2out.c (dw_fde_struct): Add in_std_section and
14061         cold_in_std_section bits.
14062         (dwarf2out_begin_prologue): Initialize them.
14063         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
14064         if already covered by text_section or cold_text_section range.
14065
14066         PR rtl-optimization/40667
14067         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
14068         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
14069         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
14070         * config/i386/i386.c (ix86_minimum_alignment): New function.
14071         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
14072         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
14073         * emit-rtl.c (gen_reg_rtx): Likewise.
14074         * function.c (assign_parms): Likewise.  If nominal_type needs
14075         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
14076         rather than passed_type's alignment.
14077
14078         PR target/40668
14079         * function.c (assign_parm_setup_stack): Adjust
14080         MEM_OFFSET (data->stack_parm) if promoted_mode is different
14081         from nominal_mode on big endian.
14082
14083 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
14084
14085         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
14086
14087 2009-07-10  DJ Delorie  <dj@redhat.com>
14088
14089         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
14090
14091 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
14092
14093         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
14094         attribute.
14095         (thumb2_cbnz): Likewise.
14096
14097 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
14098
14099         PR target/39079
14100         * config.gcc (supported_defaults): Add synci.
14101         (with_synci): Add validation.
14102         (all_defaults): Add synci.
14103         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
14104         ISA_HAS_SYNCI.
14105         (synci): Same.
14106         * config/mips/mips.opt (msynci): New option.
14107         * config/mips/mips.c (mips_override_options): Warn on use of
14108         -msynci for targets that do now support it.
14109         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
14110         msynci.
14111         * gcc/doc/invoke.texi (-msynci): Document the new option.
14112         * doc/install.texi (--with-synci): Document the new option.
14113
14114 2009-07-10  Richard Guenther  <rguenther@suse.de>
14115
14116         PR tree-optimization/40496
14117         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
14118         the PHI result with a compatible type.
14119
14120 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14121
14122         PR 25509
14123         PR 40614
14124         * c.opt (Wunused-result): New.
14125         * doc/invoke.texi: Document it.
14126         * c-common.c (c_warn_unused_result): Use it.
14127
14128 2009-07-09  DJ Delorie  <dj@redhat.com>
14129
14130         * targhooks.c (default_target_can_inline_p): Rename from
14131         default_target_option_can_inline_p.
14132         * targhooks.h (default_target_can_inline_p): Likewise.
14133         * target-def.h (TARGET_CAN_INLINE_P): Rename from
14134         TARGET_OPTION_CAN_INLINE_P.
14135         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
14136         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
14137         (mep_target_can_inline_p): Rename from
14138         mep_target_option_can_inline_p.
14139
14140         PR target/40626
14141         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
14142         registers used to pass vectors.
14143
14144         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
14145
14146 2009-07-09  Tom Tromey  <tromey@redhat.com>
14147
14148         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
14149         * config/mmix/mmix.c: Include dwarf2.h.
14150         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
14151         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
14152         * config/sh/sh.c: Include dwarf2.h.
14153         * config/i386/i386.c: Include dwarf2.h.
14154         * Makefile.in (DWARF2_H): Remove 'elf'.
14155         * except.c: Include dwarf2.h.
14156         * unwind-dw2.c: Include dwarf2.h.
14157         * dwarf2out.c: Include dwarf2.h.
14158         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
14159         * unwind-dw2-fde.c: Include dwarf2.h.
14160         * dwarf2asm.c: Include dwarf2.h.
14161
14162 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14163
14164         * haifa-sched.c (insn_finishes_cycle_p): New static function.
14165         (max_issue): Use it.
14166         * sched-int.h (struct sched_info: insn_finishes_block_p): New
14167         scheduler hook.
14168         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
14169         (region_sched_info): Update.
14170         * sched-ebb.c (ebb_sched_info): Update.
14171         * modulo-sched.c (sms_sched_info): Update.
14172         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
14173
14174 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
14175
14176         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
14177
14178 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
14179
14180         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
14181
14182 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
14183
14184         PR middle-end/40692
14185         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
14186         arg1 with arg01 if arg1 is already INTEGER_CST.
14187
14188 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14189
14190         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
14191         Transform (and (truncate)) into (truncate (and)).
14192
14193 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
14194
14195         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
14196         creating LHS paradoxical subregs.  Fix surrounding returns to
14197         use NULL_RTX rather than 0.
14198
14199 2009-07-08  DJ Delorie  <dj@redhat.com>
14200
14201         * config/mep/mep.c (mep_option_can_inline_p): New.
14202         (TARGET_OPTION_CAN_INLINE_P): Define.
14203
14204 2009-07-08  Mark Wielaard  <mjw@redhat.com>
14205
14206         PR debug/40659
14207         * dwarf2out.c (add_data_member_location_attribute): When we have
14208         only a constant offset don't emit a new location description using
14209         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
14210         dwarf_version > 2.
14211
14212 2009-07-08  Richard Henderson  <rth@redhat.com>
14213
14214         PR target/38900
14215         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
14216         (enum reg_class): Add CLOBBERED_REGS.
14217         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
14218         * config/i386/i386.c (ix86_conditional_register_usage): Moved
14219         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
14220         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
14221         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
14222         force 64-bit sibcalls into R11.
14223         * config/i386/constraints.md (U): New constraint.
14224         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
14225         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
14226         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
14227
14228 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
14229
14230         * basic-block.h (dump_regset, debug_regset): Remove duplicate
14231         prototypes.
14232         * c-objc-common.h (c_initialize_diagnostics): Ditto.
14233         * ebitmap.h (dump_ebitmap): Ditto.
14234         * optabs.h (optab_libfunc): Ditto.
14235         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
14236         * tree-flow.h (vect_can_force_dr_alignment_p,
14237         get_vectype_for_scalar_type): Ditto.
14238         (vectorize_loops): Move prototype to ...
14239         * tree-vectorizer.h: ... here. Also, adjust comment.
14240         (vect_set_verbosity_level): Remove duplicate prototype.
14241         * tree-ssa-loop.c: Include tree-vectorizer.h.
14242         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
14243
14244 2009-07-08  Nick Clifton  <nickc@redhat.com>
14245
14246         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
14247         forward slash.
14248
14249 2009-07-08  DJ Delorie  <dj@redhat.com>
14250
14251         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
14252         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
14253         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
14254         written to.
14255         * config/mep/intrinsics.md: Regenerated.
14256         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
14257         registers when asm() or calls are detected.
14258
14259 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14260
14261         PR c++/31246
14262         * gimplify.c (gimplify_expr): Propagate no_warning flag when
14263         gimplifying.
14264         * gimple (gimple_build_call_from_tree): Likewise.
14265         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
14266         no_warning flag before warning.
14267
14268 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14269
14270         * tree.c (set_expr_locus): Remove.
14271         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
14272         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
14273         EXPR_LOCATION.
14274         * gimplify.c (internal_get_tmp_var): Likewise.
14275         (gimplify_call_expr): Likewise.
14276         (gimplify_one_sizepos): Likewise.
14277
14278 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
14279
14280         PR debug/40666
14281         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
14282         to variables for debugging purposes.
14283
14284 2009-06-23  Mark Loeser  <mark@halcy0n.com>
14285
14286         PR build/40010
14287         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
14288
14289 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14290
14291         * pretty-print.c (pp_base_format): Remove %J.
14292         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14293         gcc_cxxdiag_char_table): Likewise.
14294         (init_dynamic_diag_info): Likewise.
14295
14296 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14297
14298         * pretty-print.c (pp_base_format): Remove %H.
14299         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
14300         gcc_cxxdiag_char_table): Likewise.
14301         (init_dynamic_diag_info): Likewise.
14302         * config/mep/mep.c (mep_select_section): Likewise.
14303
14304 2009-07-07  Duncan Sands  <baldrick@free.fr>
14305
14306         * final.c (pass_clean_state): Give the pass a name.
14307         * passes.c (pass_rest_of_compilation): Likewise.
14308         * tree-optimize.c (pass_all_optimizations): Likewise.
14309
14310 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
14311
14312         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
14313         an extra 'decl' for error_at.
14314
14315 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
14316
14317         PR middle-end/40669
14318         * tree-tailcall.c (adjust_return_value_with_ops,
14319         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
14320         if it has complex or vector type.
14321
14322 2009-07-07  Olivier Hainque  <hainque@adacore.com>
14323
14324         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
14325         pthread symbols.
14326
14327 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
14328
14329         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
14330
14331 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14332
14333         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
14334         * c-decl.c: Likewise.
14335         * function.c: Likewise.
14336         * varasm.c: Likewise.
14337         * tree-ssa.c: Likewise.
14338         * c-common.c: Likewise.
14339         * tree-cfg.c: Likewise.
14340         * config/spu/spu.c: Likewise.
14341         * config/ia64/ia64.c: Likewise.
14342         * config/v850/v850.c: Likewise.
14343
14344 2009-07-06  DJ Delorie  <dj@redhat.com>
14345
14346         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
14347         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
14348         unspecified accesses to control registers.
14349         * config/mep/intrinsics.md: Regenerate.
14350         * config/mep/intrinsics.h: Regenerate.
14351         * config/mep/mep-intrin.h: Regenerate.
14352
14353 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
14354
14355         * c-lex.c: Replace %H by an explicit location. Update all calls.
14356         * c-common.c: Likewise.
14357         * c-decl.c: Likewise.
14358         * c-typeck.c: Likewise.
14359         * fold-const.c: Likewise.
14360         * gimplify.c: Likewise.
14361         * stmt.c: Likewise.
14362         * tree-cfg.c: Likewise.
14363         * tree-ssa-loop-niter.c: Likewise.
14364         * tree-vrp.c: Likewise.
14365         * value-prof.c: Likewise.
14366
14367 2009-07-06  Diego Novillo  <dnovillo@google.com>
14368
14369         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
14370         if it has one.  Handle cases where VAR does not have an
14371         annotation or cfun is NULL.
14372
14373 2009-07-06  Diego Novillo  <dnovillo@google.com>
14374
14375         * tree.c: Include debug.h.
14376         (initialize_tree_contains_struct): New.
14377         (init_ttree): Call it.
14378         (tree_node_structure_for_code): Factor out of ...
14379         (tree_node_structure): ... here.
14380         * treestruct.def (TS_PHI_NODE): Remove.
14381         (TS_GIMPLE_STATEMENT): Remove.
14382
14383 2009-07-06  Diego Novillo  <dnovillo@google.com>
14384
14385         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
14386         (debug_tree_chain): Handle cycles.
14387
14388 2009-07-06  Nick Clifton  <nickc@redhat.com>
14389             DJ Delorie  <dj@redhat.com>
14390
14391         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14392         __FMOVD_ENABLED__ is defined.
14393         * config/sh/sh.h
14394         (TARGET_FMOVD): Provide a default definition.
14395         (MASK_FMOVD): Likewise.
14396         (TARGET_CPU_CPP_BUILTINS): Define
14397         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14398         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14399         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
14400         (split for DF load from memory into register): Also handle
14401         MEMs which consist of REG+DISP addressing.
14402         (split for DF store from register to memory): Likewise.
14403         (movsf_ie): Always use single fp_mode.
14404         * config/sh/sh.c (sh_override_options): Do not automatically
14405         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14406         that to the -mfmovd command line switch.
14407         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
14408         (fldi_ok): Always allow.
14409         * config/sh/sh.opt (mfmovd): Remove this switch.
14410         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14411
14412 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
14413             Kaz Kojima  <kkojima@gcc.gnu.org>
14414
14415         PR rtl-optimization/30807
14416         * postreload.c (reload_combine): For every new use of REG_SUM,
14417         record the use of BASE.
14418
14419 2009-07-06  Jan Hubicka  <jh@suse.cz>
14420
14421         * params.def: Revert my accidental commit at 2009-06-30.
14422
14423 2009-07-04  Ian Lance Taylor  <iant@google.com>
14424
14425         PR target/40636
14426         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
14427         EXPORTED_CONST.
14428         (mingw_format_attribute_overrides): Likewise.
14429
14430 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
14431
14432         PR debug/40596
14433         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
14434         don't check cfa.reg.  Instead of cfa.indirect use
14435         fde && fde->drap_reg != INVALID_REGNUM test.
14436
14437 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
14438
14439         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
14440
14441 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
14442
14443         PR target/40587
14444         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
14445
14446 2009-07-03  Richard Guenther  <rguenther@suse.de>
14447
14448         PR tree-optimization/40640
14449         * tree-switch-conversion.c (build_arrays): Perform arithmetic
14450         in original type.
14451
14452 2009-07-03  Jan Hubicka  <jh@suse.cz>
14453
14454         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
14455         for size, reduce amount of inlining.
14456
14457 2009-07-03  Richard Guenther  <rguenther@suse.de>
14458
14459         PR middle-end/34163
14460         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
14461         if t +- x is known to not overflow and the conversion widens the
14462         operation.
14463         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
14464
14465 2009-07-03  Jan Hubicka  <jh@suse.cz>
14466
14467         * ipa-pure-const.c (analyze): Update loop optimizer init.
14468         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
14469         try_remove_empty_loop, remove_empty_loops): Remove.
14470         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
14471         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
14472         to mark regular loops as neccesary.
14473         (degenerate_phi_p): New function.
14474         (propagate_necessity, remove_dead_phis): Use it.
14475         (forward_edge_to_pdom): Likewise.
14476         (eliminate_unnecessary_stmts): Take care to remove uses of results of
14477         virtual PHI nodes that became unreachable.
14478         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
14479         * tree-flow.h (remove_empty_loops): Remove.
14480         * passes.c (init_optimization_passes): Remove.
14481
14482 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
14483
14484         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
14485         can_create_pseudo_p.
14486         (*fix_trunc<mode>_i387_1): Ditto.
14487         (*floathi<mode>2_1): Ditto.
14488         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
14489         (*fistdi2_1): Ditto.
14490         (*fist<mode>2_1): Ditto.
14491         (frndintxf2_floor): Ditto.
14492         (*fist<mode>2_floor_1): Ditto.
14493         (frndintxf2_ceil): Ditto.
14494         (*fist<mode>2_ceil_1): Ditto.
14495         (frndintxf2_trunc): Ditto.
14496         (frndintxf2_mask_pm): Ditto.
14497         (fxam<mode>2_i387_with_temp): Ditto.
14498         * config/i386/sse.md (mulv16qi3): Ditto.
14499         (*sse2_mulv4si3): Ditto.
14500         (mulv2di3): Ditto.
14501         (sse4_2_pcmpestr): Ditto.
14502         (sse4_2_pcmpistr): Ditto.
14503
14504 2009-07-03  Jan Hubicka  <jh@suse.cz>
14505
14506         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
14507         (mark_stmt_necessary): Set it.
14508         (mark_operand_necessary): Set it.
14509         (mark_control_dependent_edges_necessary): Set it.
14510         (mark_virtual_phi_result_for_renaming): New function.
14511         (get_live_post_dom): New function.
14512         (forward_edge_to_pdom): New function.
14513         (remove_dead_stmt): Fix handling of control dependences.
14514         (tree_dce_init): Init new bitmap.
14515         (tree_dce_done): Free it.
14516
14517 2009-07-02  Richard Guenther  <rguenther@suse.de>
14518
14519         PR bootstrap/40617
14520         * tree-ssa-structalias.c (new_var_info): Initialize
14521         is_restrict_var.
14522
14523 2009-07-02  Jan Hubicka  <jh@suse.cz>
14524
14525         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
14526         local.
14527
14528 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
14529
14530         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
14531         instead of recomputing it.  Adjust calls.
14532         (emit_store_flag): Adjust recursive calls.
14533
14534 2009-07-02  Richard Guenther  <rguenther@suse.de>
14535
14536         * tree-ssa-live.c (remove_unused_locals): Do not remove
14537         heap variables.
14538         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
14539         of DECL_EXTERNAL for HEAP variables.
14540         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
14541         HEAP variables.  Do not adjust RESTRICT vars.
14542         (find_what_var_points_to): Nobody cares if something
14543         points to READONLY.
14544
14545 2009-07-02  Ben Elliston  <bje@au.ibm.com>
14546
14547         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
14548         pc_low and pc_high declarations to the top of the function.
14549
14550 2009-07-01  DJ Delorie  <dj@redhat.com>
14551
14552         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
14553         registers as fixed.
14554         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
14555         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
14556         unspecified accesses to control registers.
14557         * config/mep/intrinsics.md: Regenerate.
14558         * config/mep/intrinsics.h: Regenerate.
14559         * config/mep/mep-intrin.h: Regenerate.
14560
14561 2009-07-01  Anthony Green  <green@moxielogic.com>
14562
14563         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
14564         instruction when possible.
14565         (moxie_expand_prologue): Ditto.  Also, save an instruction and
14566         some complexity by popping off of $r12 instead of $sp.
14567         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
14568         operands.
14569
14570 2009-07-01  Richard Henderson  <rth@redhat.com>
14571
14572         PR bootstrap/40347
14573         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
14574         contained no insns, reposition note before last insn.
14575
14576 2009-07-01  Richard Henderson  <rth@redhat.com>
14577
14578         PR debug/40431
14579         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
14580         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
14581
14582 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
14583
14584         PR bootstrap/40558
14585         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
14586         darwin9 for printing reg addresses with %y.
14587
14588 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14589
14590         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
14591         truncation from operands in binary operations.
14592
14593 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
14594
14595         Revert:
14596         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14597         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14598         subreg of op0 to the original op0.
14599
14600         * expmed.c (store_bit_field_1): Use a temporary as the destination
14601         instead of a paradoxical subreg when we need to truncate the result.
14602
14603 2009-07-01  DJ Delorie  <dj@redhat.com>
14604
14605         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
14606         names to VLIW variants.
14607         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
14608         * config/mep/intrinsics.md: Regenerate.
14609         * config/mep/intrinsics.h: Regenerate.
14610         * config/mep/mep-intrin.h: Regenerate.
14611
14612 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
14613
14614         PR debug/40462
14615         * jump.c (returnjump_p): Revert last patch.
14616         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
14617
14618 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14619
14620         PR target/40575
14621         * pa.md (casesi32p): Use jump table label to determine the offset
14622         of the jump table.
14623         (casesi64p): Likewise.
14624
14625         * pa.c (forward_branch_p): Return bool type.  Use instruction
14626         addresses when available.  Assert that INSN has a jump label.
14627         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
14628         have a jump label.
14629
14630 2009-07-01  Richard Guenther  <rguenther@suse.de>
14631
14632         PR tree-optimization/19831
14633         * tree-ssa-dce.c (propagate_necessity): Calls to functions
14634         that only act as barriers do not make any previous stores necessary.
14635         * tree-ssa-structalias.c (handle_lhs_call): Delay making
14636         HEAP variables global, do not add a constraint from nonlocal.
14637         (find_func_aliases): Handle escapes through return statements.
14638         (compute_points_to_sets): Make escaped HEAP variables global.
14639
14640 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14641
14642         PR bootstrap/40597
14643         * expmed.c (emit_store_flag): Perform a conversion if necessary,
14644         after reducing a DImode cstore to SImode.
14645
14646 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
14647
14648         * expr.c (expand_expr_real_1): Reinstate fallthrough to
14649         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
14650
14651 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
14652
14653         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
14654         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
14655         to 0.
14656         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
14657         and umod_optab if TARGET_BSD_DIVMOD.
14658         * config/vax/lib1funcs.asm: New file.
14659         * config/vax/t-linux: New file.
14660         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
14661
14662 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
14663
14664         PR c++/40566
14665         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
14666         to type arguments that have void type.
14667
14668         PR debug/40573
14669         * dwarf2out.c (gen_formal_parameter_die): Call
14670         equate_decl_number_to_die if node is different from origin.
14671
14672 2009-06-30  Anthony Green  <green@moxielogic.com>
14673
14674         Clean up moxie port for --enable-build-with-cxx.
14675         * config/moxie/moxie.c (moxie_function_value): First two
14676         parameters are const_tree, not tree.
14677         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
14678         (REG_CLASS_NAMES): Ditto.
14679         (REGNO_REG_CLASS): Ditto.
14680         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
14681         (moxie_function_value): Fix constyness of arguments.
14682
14683 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
14684
14685         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
14686         finalize_size_functions before further processing.
14687         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
14688         (variable_size): Call self_referential_size on size expressions
14689         that contain a PLACEHOLDER_EXPR.
14690         (size_functions): New static variable.
14691         (copy_self_referential_tree_r): New static function.
14692         (self_referential_size): Likewise.
14693         (finalize_size_functions): New global function.
14694         * tree.c: Include tree-inline.h.
14695         (push_without_duplicates): New static function.
14696         (find_placeholder_in_expr): New global function.
14697         (substitute_in_expr) <tcc_declaration>: Return the replacement object
14698         on equality.
14699         <tcc_expression>: Likewise.
14700         <tcc_vl_exp>: If the replacement object is a constant, try to inline
14701         the call in the expression.
14702         * tree.h (finalize_size_functions): Declare.
14703         (find_placeholder_in_expr): Likewise.
14704         (FIND_PLACEHOLDER_IN_EXPR): New macro.
14705         (substitute_placeholder_in_expr): Update comment.
14706         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
14707         is true.
14708         (copy_tree_body_r): Likewise.
14709         (copy_tree_body): New static function.
14710         (maybe_inline_call_in_expr): New global function.
14711         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
14712         (maybe_inline_call_in_expr): Declare.
14713         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
14714         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
14715         GIMPLE_H.
14716
14717 2009-06-30  Richard Guenther  <rguenther@suse.de>
14718
14719         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
14720         continue walking.
14721         (propagate_necessity): Do not mark reaching defs of stores
14722         as necessary.
14723
14724 2009-06-30  Jan Hubicka  <jh@suse.cz>
14725
14726         * cfgloopanal.c (check_irred): Move into ...
14727         (mark_irreducible_loops): ... here; return true if ireducible
14728         loops was found.
14729         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
14730         (analyze_function): Try to prove loop finiteness.
14731         * cfgloop.h (mark_irreducible_loops): Update prototype.
14732         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
14733
14734 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
14735
14736         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
14737
14738 2009-06-30  Ira Rosen  <irar@il.ibm.com>
14739
14740         PR tree-optimization/40542
14741         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
14742         types.
14743
14744 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14745
14746         PR tree-optimization/40582
14747         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
14748         than useless_type_conversion_p.
14749         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
14750         proper place.
14751
14752 2009-06-30  Martin Jambor  <mjambor@suse.cz>
14753
14754         PR middle-end/40554
14755         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
14756
14757 2009-06-30  Richard Guenther  <rguenther@suse.de>
14758
14759         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
14760         use ao_ref references.
14761         (walk_aliased_vdefs): Likewise.
14762         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
14763         * tree-ssa-dce.c (struct ref_data): Remove.
14764         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
14765         (mark_aliased_reaching_defs_necessary): Adjust.
14766         (mark_all_reaching_defs_necessary_1): Likewise.
14767
14768 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
14769
14770         PR boostrap/40597
14771         * expmed.c (emit_cstore): New name of emit_store_flag_1.
14772         (emit_store_flag_1): Extract from emit_store_flag, adjust
14773         calls to (what now is) emit_cstore.
14774         (emit_store_flag): Call emit_store_flag_1 and also use it
14775         for what used to be recursive calls.
14776
14777 2009-06-30  Wei Guozhi  <carrot@google.com>
14778
14779         PR/40416
14780         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
14781         if the target bb post dominates from bb.
14782         * config/i386/i386.c (memory_address_length): Check existence of base
14783         register before using it.
14784
14785 2009-06-30  Nick Clifton  <nickc@redhat.com>
14786             DJ Delorie  <dj@redhat.com>
14787
14788         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
14789         __FMOVD_ENABLED__ is defined.
14790         * config/sh/sh.h
14791         (TARGET_FMOVD): Provide a default definition.
14792         (MASK_FMOVD): Likewise.
14793         (TARGET_CPU_CPP_BUILTINS): Define
14794         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
14795         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
14796         two fmov instructions depending upon whether TARGET_FMOVD is
14797         enabled.
14798         (split for DF load from memory into register): Also handle
14799         MEMs which consist of REG+DISP addressing.
14800         (split for DF store from register to memory): Likewise.
14801         * config/sh/sh.opt (mfmovd): Remove this switch.
14802         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
14803         * config/sh/sh.c (sh_override_options): Do not automatically
14804         enable TARGET_MOVD for the SH2A when supporting doubles - leave
14805         that to the -mfmovd command line switch.
14806
14807         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
14808         the SH4 and SH4A.
14809         (fldi_ok): Always allow.
14810         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
14811
14812 2009-06-29  DJ Delorie  <dj@redhat.com>
14813
14814         * doc/install.texi (mep-x-elf): Correct chip's full name.
14815
14816 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
14817
14818         * doc/extend.texi: Fix typo.
14819
14820 2009-06-29  Tom Tromey  <tromey@redhat.com>
14821
14822         * dwarf2.h: Remove.
14823         * Makefile.in (DWARF2_H): New variable.
14824         (except.o): Use it.
14825         (dwarf2out.o): Likewise.
14826         (dwarf2asm.o): Likewise.
14827         * config/i386/t-i386: Use DWARF2_H.
14828         * except.c: Include elf/dwarf2.h.
14829         * unwind-dw2.c: Include elf/dwarf2.h.
14830         * dwarf2out.c: Include elf/dwarf2.h.
14831         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
14832         <dtprel>: New field.
14833         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
14834         (size_of_loc_descr): Likewise.
14835         (output_loc_operands_raw): Likewise.
14836         (output_loc_operands): Handle new dtprel field.
14837         (loc_checksum): Update.
14838         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
14839         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
14840         * unwind-dw2-fde.c: Include elf/dwarf2.h.
14841         * dwarf2asm.c: Include elf/dwarf2.h.
14842         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
14843         * config/mmix/mmix.c: Include elf/dwarf2.h.
14844         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
14845         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
14846         * config/sh/sh.c: Include elf/dwarf2.h.
14847         * config/i386/i386.c: Include elf/dwarf2.h.
14848
14849 2009-06-29  DJ Delorie  <dj@redhat.com>
14850
14851         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
14852
14853         * doc/extend.texi: Add MeP attributes and pragmas.
14854         * doc/invoke.text: Add MeP Options.
14855         * doc/contrib.texi: Add MeP contribution.
14856         * doc/md.texi: Add MeP constraints.
14857         * doc/install.texi: Add MeP target.
14858
14859 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
14860
14861         * target.h (struct gcc_target): Add frame_pointer_required field.
14862         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
14863         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
14864         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
14865         hook.
14866         * reload1.c (update_eliminables): (Ditto.).
14867         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
14868         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
14869         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
14870
14871         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
14872
14873         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
14874         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14875         (arm_frame_pointer_required): New function.
14876
14877         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
14878         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14879         (avr_frame_pointer_required_p): Declare as static.
14880         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
14881
14882         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
14883         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14884         (bfin_frame_pointer_required): Make as static, change return type
14885         to bool.
14886         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
14887
14888         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
14889         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14890         (cris_frame_pointer_required): New function.
14891
14892         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
14893
14894         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
14895         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14896         (fr30_frame_pointer_required): New function.
14897
14898         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
14899         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14900         (frv_frame_pointer_required): Make as static, change return type
14901         to bool.
14902         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
14903
14904         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
14905         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14906         (ix86_frame_pointer_required): Make as static, change return type to
14907         bool.
14908         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
14909
14910         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
14911         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14912
14913         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
14914
14915         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
14916
14917         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
14918
14919         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
14920         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14921         (mips_frame_pointer_required): Make as static.
14922         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
14923
14924         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
14925         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14926         (mmix_frame_pointer_required): Mew function.
14927
14928         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
14929         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14930
14931         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
14932
14933         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
14934
14935         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
14936
14937         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
14938         (CAN_ELIMINATE): Redefine.
14939         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
14940         (sparc_frame_pointer_required): New function.
14941         (sparc_can_eliminate): New function.
14942         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
14943
14944         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
14945         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14946
14947         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
14948         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
14949         (xtensa_frame_pointer_required): Make as static, change return type
14950         to bool.
14951         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
14952         Remove.
14953
14954 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
14955
14956         * doc/plugins.texi: Document PLUGIN_START_UNIT.
14957         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
14958         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
14959         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
14960         (register_callback): Handle PLUGIN_START_UNIT.
14961         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
14962
14963 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
14964
14965         * tree.c (process_call_operands): Propagate TREE_READONLY from the
14966         operands.
14967         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
14968         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
14969
14970 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
14971
14972         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
14973         move cost.
14974
14975 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
14976
14977         * doc/extend.texi (Additional Floating Types): __float128 is also
14978         supported on i386 targets.
14979
14980 2009-06-29  Richard Guenther  <rguenther@suse.de>
14981
14982         PR middle-end/14187
14983         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
14984         flag.
14985         (pt_solutions_same_restrict_base): Declare.
14986         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
14987         flag.
14988         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
14989         (make_constraint_from, make_copy_constraint): Move earlier.
14990         (make_constraint_from_heapvar): New function.
14991         (make_constraint_from_restrict): Likewise.
14992         (handle_lhs_call): Use it.
14993         (find_func_aliases): Use it to track conversions to restrict
14994         qualified pointers.
14995         (struct fieldoff): Add only_restrict_pointers flag.
14996         (push_fields_onto_fieldstack): Initialize it.
14997         (create_variable_info_for): Track global restrict qualified pointers.
14998         (intra_create_variable_infos): Use make_constraint_from_heapvar.
14999         Track restrict qualified pointer arguments.
15000         (set_uids_in_ptset): Use varinfo is_global_var flag.
15001         (find_what_var_points_to): Set the vars_contains_restrict flag.
15002         Always create the points-to solution for sets including restrict tags.
15003         (pt_solutions_same_restrict_base): New function.
15004         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
15005         qualified pointers use pt_solutions_same_restrict_base as
15006         additional source for disambiguation.
15007
15008 2009-06-29  Richard Guenther  <rguenther@suse.de>
15009
15010         PR middle-end/38212
15011         * alias.c (find_base_decl): Remove.
15012         (get_deref_alias_set_1): Remove restrict handling.
15013         * c-common.c (c_apply_type_quals_to_decl): Do not set
15014         DECL_POINTER_ALIAS_SET.
15015         * gimplify.c (find_single_pointer_decl_1): Remove.
15016         (find_single_pointer_decl): Likewise.
15017         (internal_get_tmp_var): Remove restrict handling.
15018         (gimple_regimplify_operands): Likewise.
15019         * omp-low.c (expand_omp_atomic_pipeline): Do not set
15020         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
15021         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
15022         * tree.c (restrict_base_for_decl): Remove.
15023         (init_ttree): Do not allocate it.
15024         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
15025         LABEL_DECL_UID for label decls.
15026         (copy_node_stat): Do not copy restrict information.
15027         (decl_restrict_base_lookup): Remove.
15028         (decl_restrict_base_insert): Likewise.
15029         (print_restrict_base_statistics): Likewise.
15030         (dump_tree_statistics): Do not call print_restrict_base_statistics.
15031         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
15032         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
15033         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
15034         (LABEL_DECL_UID): Adjust.
15035         (DECL_BASED_ON_RESTRICT_P): Remove.
15036         (DECL_GET_RESTRICT_BASE): Likewise.
15037         (SET_DECL_RESTRICT_BASE): Likewise.
15038         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
15039
15040         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
15041         instead of DECL_POINTER_ALIAS_SET.
15042         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
15043         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
15044         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
15045
15046 2009-06-29  Richard Guenther  <rguenther@suse.de>
15047
15048         PR tree-optimization/40579
15049         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
15050         the IL to simplify has constants that overflowed.
15051
15052 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
15053
15054         PR tree-optimization/40550
15055         * tree-vect-generic.c (expand_vector_operations_1): Compute in
15056         vector_compute_type only when the size of vector_compute_type is
15057         less than the size of type.
15058
15059 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
15060
15061         * fold-const.c (contains_label_1): Fix comments.
15062         (contains_label_p): Do not walk trees multiple time.
15063
15064 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15065
15066         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
15067         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
15068         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
15069         ix86_fp_comparison_operator.
15070         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
15071         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
15072         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15073         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
15074         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
15075         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
15076         (related splits): Change predicate to ix86_fp_comparison_operator.
15077         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
15078         instead of ix86_fp_comparison_codes.
15079         (ix86_trivial_fp_comparison_operator,
15080         ix86_fp_comparison_operator): New.
15081         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
15082         (ix86_expand_compare): Eliminate last two parameters.
15083         (ix86_fp_jump_nontrivial_p): Kill.
15084         * config/i386/i386.c (put_condition_code): Eliminate call to
15085         ix86_fp_comparison_codes and subsequent assertion.
15086         (ix86_fp_comparison_codes): Eliminate.
15087         (ix86_fp_swap_condition): New.
15088         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
15089         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
15090         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
15091         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
15092         and ix86_fp_swap_condition.
15093         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
15094         Use ix86_fp_comparison_strategy.
15095         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
15096         (ix86_fp_jump_nontrivial_p): Eliminate.
15097         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
15098         call to ix86_expand_compare.
15099         (ix86_split_fp_branch, ix86_expand_setcc,
15100         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
15101         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
15102
15103 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15104
15105         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
15106         related to jump_clobbers.
15107         * config/arm/arm.md (conds): Remove jump_clob case.
15108         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
15109         splits): Change comparison_operator to arm_comparison_operator.
15110         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
15111         Eliminate.
15112
15113 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15114
15115         * dojump.c (do_compare_rtx_and_jump): Try swapping the
15116         condition for floating point modes.
15117         * expmed.c (emit_store_flag_1): Move here a bigger part
15118         of emit_store_flag.
15119         (emit_store_flag): Try swapping the condition for floating point
15120         modes.
15121         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
15122
15123 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15124
15125         * expr.c (expand_expr_real_1): Just use do_store_flag.
15126         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
15127         emit_store_flag_force.
15128         * expmed.c (emit_store_flag_force): Copy here trick
15129         previously in expand_expr_real_1.  Try reversing the comparison.
15130         (emit_store_flag_1): Work if target is NULL.
15131         (emit_store_flag): Work if target is NULL, using the result mode
15132         from the comparison.  Use split_comparison, restructure final part
15133         to simplify conditionals.
15134
15135 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
15136
15137         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
15138         * dojump.c (do_jump): Change handling of floating-point
15139         ops to use just do_compare_and_jump.
15140         (split_comparison): New.
15141         (do_compare_rtx_and_jump): Add here logic coming previously
15142         in do_jump, using split_comparison.
15143
15144 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
15145
15146         PR target/40489
15147         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
15148
15149 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15150
15151         * tree-ssa-alias.c: Fix unintentional commit.
15152
15153 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15154
15155         * passes.c (execute_one_pass): Fix unintentional commit.
15156
15157 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15158
15159         * df-problems.c (df_set_seen, df_unset_seen): Delete.
15160         (df_rd_local_compute, df_md_local_compute): Inline them.
15161
15162         (df_md_scratch): New.
15163         (df_md_alloc, df_md_free): Allocate/free it.
15164         (df_md_local_compute): Only include live registers in init.
15165         (df_md_transfer_function): Prune the in-set computed by
15166         the confluence function, and the gen-set too.
15167
15168 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15169
15170         PR rtl-optimization/26854
15171         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
15172         * df-problems.c (df_rd_add_problem): Fix comment.
15173         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
15174         df_md_simulate_artificial_defs_at_top,
15175         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
15176         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
15177         df_md_transfer_function, df_md_init, df_md_confluence_0,
15178         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
15179         problem_MD, df_md_add_problem): New.
15180         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
15181         df_md_get_bb_info): New.
15182         (DF_LAST_PROBLEM_PLUS1): Adjust.
15183
15184         * Makefile.in (fwprop.o): Include domwalk.h.
15185         * fwprop.c: Include domwalk.h.
15186         (reg_defs, reg_defs_stack): New.
15187         (bitmap_only_bit_between): Remove.
15188         (process_defs): New.
15189         (process_uses): Use reg_defs and local_md instead of
15190         bitmap_only_bit_between and local_rd.
15191         (single_def_use_enter_block): New, from build_single_def_use_links.
15192         (single_def_use_leave_block): New.
15193         (build_single_def_use_links): Remove code moved to
15194         single_def_use_enter_block, invoke domwalk.
15195         (use_killed_between): Adjust comment.
15196
15197 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15198
15199         * bitmap.h (bitmap_ior_and_into): New.
15200         * bitmap.c (bitmap_ior_and_into): New.
15201
15202 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
15203
15204         * domwalk.h (struct dom_walk_data): Remove all callbacks except
15205         before_dom_children_before_stmts and after_dom_children_after_stmts.
15206         Rename the two remaining callbacks to just before_dom_children and
15207         after_dom_children. Remove other GIMPLE statement walking bits.
15208         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
15209         * graphite.c: Do not include domwalk.h.
15210         * tree-into-ssa.c (interesting_blocks): New global.
15211         (struct mark_def_sites_global_data): Remove it and names_to_rename.
15212         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
15213         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
15214         now that they're not domwalk callbacks.
15215         (rewrite_initialize_block): Rename to...
15216         (rewrite_enter_block): ... this, place after called functions.  Test
15217         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
15218         (rewrite_finalize_block): Rename to...
15219         (rewrite_leave_block): ... this, place after called functions.
15220         (rewrite_update_init_block): Rename to...
15221         (rewrite_update_enter_block): ... this, place after called functions.
15222         Test interesting_blocks, call rewrite_update_stmt and
15223         rewrite_update_phi_arguments.
15224         (rewrite_update_fini_block): Rename to...
15225         (rewrite_leave_block): ... this, place after called functions.
15226         (rewrite_blocks): Remove last argument, simplify initialization of
15227         walk_data.
15228         (mark_def_sites_initialize_block): Rename to...
15229         (mark_def_sites_block): ... this, call mark_def_sites.
15230         (mark_def_sites_blocks): Remove argument, simplify initialization of
15231         walk_data.
15232         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
15233         (update_ssa): Likewise.
15234         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
15235         callback.
15236         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
15237         (dom_opt_initialize_block): Rename to...
15238         (dom_opt_enter_block): ... this, place after called functions.  Walk
15239         statements here, inline propagate_to_outgoing_edges.
15240         (dom_opt_finalize_block): Rename to...
15241         (dom_opt_leave_block): ... this, place after called functions.
15242         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
15243         domwalk callback.
15244         (dse_enter_block, dse_record_phi): New.
15245         (dse_record_phis): Delete.
15246         (dse_finalize_block): Rename to...
15247         (dse_leave_block): ... this.
15248         (tree_ssa_dse): Simplify initialization of walk_data.
15249         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
15250         Adjust initialization of walk_data.
15251         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
15252         * tree-ssa-loop-phiopt.c (get_non_trapping):
15253         Adjust initialization of walk_data.
15254         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
15255         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
15256         it's not a domwalk callback.
15257         (uncprop_initialize_block): Rename to...
15258         (dse_enter_block): ... this, call uncprop_into_successor_phis.
15259         (dse_finalize_block): Rename to...
15260         (dse_leave_block): ... this.
15261         (tree_ssa_uncprop): Simplify initialization of walk_data.
15262         * Makefile.in: Adjust dependencies.
15263
15264 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
15265
15266         * arm.md (casesi): Fix test for Thumb1.
15267         (thumb1_casesi_internal_pic): Likewise.
15268         (thumb1_casesi_dispatch): Likewise.
15269
15270 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
15271
15272         * config/arm/arm-cores.def: Added core cortex-m0.
15273         * config/arm/arm-tune.md: Regenerated.
15274         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
15275
15276 2009-06-26  DJ Delorie  <dj@redhat.com>
15277
15278         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
15279
15280         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
15281         the scheduler doesn't tag jump insns.
15282
15283 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15284
15285         * c-decl.c (merge_decls): Re-indent.
15286
15287 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
15288
15289         PR c/39902
15290         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
15291         Special-case decimal float constants.
15292
15293 2009-06-26  Richard Henderson  <rth@redhat.com>
15294
15295         * function.h (struct function): Add cannot_be_copied_reason,
15296         and cannot_be_copied_set.
15297         * tree-inline.c (has_label_address_in_static_1): Rename from
15298         inline_forbidden_p_2; don't set inline_forbidden_reason here.
15299         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
15300         don't set inline_forbidden_reason.
15301         (copy_forbidden): New function, split out of inline_forbidden_p.
15302         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
15303         (inline_forbidden_p): Use copy_forbidden.
15304         (tree_versionable_function_p): Likewise.
15305         (inlinable_function_p): Merge into tree_inlinable_function_p.
15306         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
15307         * ipa-cp.c (ipcp_versionable_function_p): New function.
15308         (ipcp_cloning_candidate_p): Use it.
15309         (ipcp_node_modifiable_p): Likewise.
15310
15311 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
15312
15313         * builtins.c (expand_builtin_alloca): Handle builtin alloca
15314         that is marked not to be inlined. Remove flag_mudflap use.
15315         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
15316         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
15317
15318 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
15319
15320         PR bootstrap/40338
15321         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
15322         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
15323
15324 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
15325
15326         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
15327         shared libgcc.
15328         (__mingwthr_remove_key_dtor): Likewise.
15329
15330 2009-06-26  Richard Guenther  <rguenther@suse.de>
15331
15332         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
15333
15334 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15335
15336         PR middle-end/40525
15337         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
15338         try the non-cond_exec path also.
15339
15340 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15341
15342         PR target/40468
15343         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
15344         (output_cbranch): Use new functions.
15345         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
15346         Likewise.
15347
15348 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
15349             Pat Haugen  <pthaugen@us.ibm.com>
15350             Revital Eres <ERES@il.ibm.com>
15351
15352         * config/rs6000/rs6000.c (print_operand): Correct lossage message
15353         for %c error.  Add %x support to print VSX registers as a unified
15354         register set, instead of separate float and altivec registers.
15355         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
15356         %y case, and add support for VSX pre-modify addresses.
15357         (output_toc): Add assert for CONST containing an integer constant
15358         in the PLUS case.
15359         (rs6000_adjust_cost): Add POWER7 support.
15360         (insn_must_be_first_in_group): Ditto.
15361         (insn_must_be_last_in_group): Ditto.
15362         (rs6000_emit_popcount): Ditto.
15363         (rs6000_vector_mode_supported_p): Ditto.
15364
15365         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
15366         Change some of the functions called by macros to being called
15367         through a pointer, so debug functions can be inserted if
15368         -mdebug=addr or -mdebug=cost.
15369         (rs6000_preferred_reload_class_ptr): Ditto.
15370         (rs6000_secondary_reload_class_ptr): Ditto.
15371         (rs6000_secondary_memory_needed_ptr): Ditto.
15372         (rs6000_cannot_change_mode_class_ptr): Ditto.
15373         (rs6000_secondary_reload_inner): Ditto.
15374         (rs6000_legitimize_reload_address): Ditto.
15375         (rs6000_legitimize_reload_address_ptr): Ditto.
15376         (rs6000_mode_dependent_address): Ditto.
15377         (rs6000_mode_dependent_address_ptr): Ditto.
15378
15379         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
15380         function to return true if the mode allows reg + integer
15381         addresses.
15382         (virtual_stack_registers_memory_p): New function to return true if
15383         the address refers to a virtual stack register.
15384         (rs6000_legitimate_offset_address_p): Move code to say whether a
15385         mode supports reg+int addressing to reg_offset_addressing_ok_p and
15386         call it.
15387         (rs6000_legitimate_address_p): Add checks for modes that only can
15388         do reg+reg addressing.  Start adding VSX support.
15389         (rs6000_legitimize_reload_address): Ditto.
15390         (rs6000_legitimize_address): Ditto.
15391         (rs6000_debug_legitimate_address_p): New debug functions for
15392         -mdebug=addr and -mdebug=cost.
15393         (rs6000_debug_rtx_costs): Ditto.
15394         (rs6000_debug_address_costs): Ditto.
15395         (rs6000_debug_adjust_cost): Ditto.
15396         (rs6000_debug_legitimize_address): Ditto.
15397         (rs6000_legitimize_reload_address_ptr): Point to call normal
15398         function or debug function.  Make functions called via pointer
15399         static.
15400         (rs6000_mode_dependent_address_ptr): Ditto.
15401         (rs6000_secondary_reload_class_ptr): Ditto.
15402         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
15403         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
15404         into a friendlier error.
15405         (rs6000_init_builtins): Add initial VSX support.
15406         (rs6000_adjust_cost): Fix some spacing issues.
15407
15408         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
15409         (REG_CLASS_NAMES): Ditto.
15410         (REG_CLASS_CONTENTS): Ditto.
15411         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
15412         pointer, to add -mdebug=addr support.
15413         (CANNOT_CHANGE_MODE_CLASS): Ditto.
15414         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
15415         -mdebug=addr support.
15416         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
15417         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
15418         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
15419
15420         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
15421         16-bit values.
15422         (bswapsi*): Set attribute types for load/store.  Add combiner
15423         patterns to eliminate zero extend on 64-bit.
15424         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
15425         stdbrx if the hardware supports those instructions.
15426
15427 2009-06-25  Ian Lance Taylor  <iant@google.com>
15428
15429         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
15430         (Link Options): Document -static-libstdc++.
15431
15432 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15433
15434         PR target/38731
15435         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
15436         DATA_ALIGNMENT instead.
15437
15438 2009-06-25  Richard Guenther  <rguenther@suse.de>
15439
15440         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
15441         indirect references against the callused/escaped solutions.
15442         (call_may_clobber_ref_p_1): Likewise.
15443
15444 2009-06-25  Martin Jambor  <mjambor@suse.cz>
15445
15446         PR tree-optimization/40493
15447         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
15448         (enum unscalarized_data_handling): New type.
15449         (handle_unscalarized_data_in_subtree): Return what has been done.
15450         (load_assign_lhs_subreplacements): Handle left flushes differently.
15451         (sra_modify_assign): Use unscalarized_data_handling, simplified
15452         condition determining whether to remove the statement.
15453
15454 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
15455
15456         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
15457         excerpt - @ should be doubled for texinfo.
15458
15459 2009-06-24  Ian Lance Taylor  <iant@google.com>
15460
15461         * config/arc/arc.c: Include "df.h".
15462         (arc_attribute_table): Make static.  Move higher in file.
15463         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
15464         (output_shift): Initialize n later to avoid warning.
15465         * config/arm/arm.c (arm_attribute_table): Make static.  Move
15466         higher in file.
15467         * config/avr/avr.c (avr_attribute_table): Make static.  Move
15468         higher in file.
15469         (reg_class_tab): Change array type from int to enum reg_class.
15470         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
15471         LABEL_REF.
15472         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
15473         (lshrhi3_out): Likewise.
15474         (class_likely_spilled_p): Change return type to bool.
15475         (avr_rtx_costs): Use local code variable with enum type.
15476         * config/avr/avr.md (movmemhi): Use add_reg_note.
15477         (andhi3, andsi3): Don't use AS2 with "and".
15478         (iorhi3, iorsi3): Don't use AS2 with "or".
15479         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
15480         * config/crx/crx.c: Include "df.h".
15481         (crx_attribute_table): Make static.
15482         * config/m32r/m32r.c: Include "df.h".
15483         (m32r_attribute_table): Make static.  Move higher in file.
15484         (pop): Use add_reg_note.
15485         (block_move_call): Change 0 to LCT_NORMAL in function call.
15486         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
15487         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
15488         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
15489         declare, not just when TREE_CODE is defined.
15490         * config/m68hc11/m68hc11.c: Include "expr.h".
15491         (m68hc11_attribute_table): Make static.  Move higher in file.
15492         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
15493         function call.
15494         (m68hc11_register_indirect_p): Likewise.
15495         (m68hc11_function_arg_padding): Change return type to enum
15496         direction.
15497         (emit_move_after_reload): Use add_reg_note.
15498         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
15499         (m68hc11_split_logical): Likewise.
15500         (m68hc11_rtx_costs): Add local code_and outer_code variables with
15501         enum type.
15502         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
15503         to VOIDmode in function call.
15504         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
15505         tree is defined.
15506         (m68hc11_split_logical): Update declaration.
15507         (m68hc11_function_arg_padding): Update declaration.
15508         * config/mcore/mcore.c (regno_reg_class): Change form array of int
15509         to array of enum reg_class.
15510         (mcore_attribute_table): Make static.  Move higher in file.
15511         (mcore_rtx_costs): Add cast to enum type.
15512         * config/mcore/mcore.h (regno_reg_class): Update declaration.
15513         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
15514         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
15515         in file.
15516         * config/sh/predicates.md (trapping_target_operand): Rename and to
15517         and_expr.
15518         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
15519         higher in file.
15520         * config/spu/spu.c (spu_attribute_table): Make static.  Move
15521         higher in file.
15522         * config/v850/v850.c (v850_attribute_table): Make static.  Move
15523         higher in file.
15524         (v850_rtx_costs): Use local code with enum type.
15525         (expand_epilogue): Add cast.
15526         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
15527
15528 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
15529
15530         PR target/40515
15531         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
15532         -m2a-single-only and -m2a-nofpu.
15533         * config/sh/sh.opt: Document m2a generates FPU code.
15534
15535 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
15536
15537         * defaults.h (CAN_ELIMINATE): Provide default.
15538         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
15539         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
15540         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
15541         * config/spu/spu.h (CAN_ELIMINATE): Delete.
15542         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
15543         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
15544         * config/cris/cris.h (CAN_ELIMINATE): Delete.
15545         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
15546         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
15547         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
15548
15549 2009-06-24  DJ Delorie  <dj@redhat.com>
15550
15551         * mep-ext-cop.cpu: Fix copyright notice.
15552         * mep-default: Fix copyright notice.
15553         * mep-core: Fix copyright notice.
15554         * mep: Fix copyright notice.
15555         * mep-ivc2: Fix copyright notice.
15556         * mep-c5: Fix copyright notice.
15557
15558 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
15559
15560         * doc/contrib.texi (Contributors):
15561
15562 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15563
15564         PR middle-end/40501
15565         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
15566         src and dst operands if necessary.
15567
15568 2009-06-23  DJ Delorie  <dj@redhat.com>
15569
15570         Add MeP port.
15571         * config.gcc: Add mep support.
15572         * recog.c: Resurrect validate_replace_rtx_subexp().
15573         * recog.h: Likewise.
15574         * config/mep/: Add new port:
15575         * config/mep/constraints.md: New file.
15576         * config/mep/default.h: New file.
15577         * config/mep/intrinsics.h: New file.
15578         * config/mep/intrinsics.md: New file.
15579         * config/mep/ivc2-template.h: New file.
15580         * config/mep/mep-c5.cpu: New file.
15581         * config/mep/mep-core.cpu: New file.
15582         * config/mep/mep-default.cpu: New file.
15583         * config/mep/mep-ext-cop.cpu: New file.
15584         * config/mep/mep-intrin.h: New file.
15585         * config/mep/mep-ivc2.cpu: New file.
15586         * config/mep/mep-lib1.asm: New file.
15587         * config/mep/mep-lib2.c: New file.
15588         * config/mep/mep-pragma.c: New file.
15589         * config/mep/mep-protos.h: New file.
15590         * config/mep/mep-tramp.c: New file.
15591         * config/mep/mep.c: New file.
15592         * config/mep/mep.cpu: New file.
15593         * config/mep/mep.h: New file.
15594         * config/mep/mep.md: New file.
15595         * config/mep/mep.opt: New file.
15596         * config/mep/predicates.md: New file.
15597         * config/mep/t-mep: New file.
15598
15599 2009-06-23  Ian Lance Taylor  <iant@google.com>
15600
15601         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
15602         from loose_warn into c_loose_warn and from strict_warn into
15603         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
15604         --enable-build-with-cxx.  Set and substitute
15605         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
15606         * Makefile.in (CXXFLAGS): New variable.
15607         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
15608         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
15609         the default is the same as $(STRICT_WARN).
15610         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
15611         (CXX): New variable.
15612         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
15613         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
15614         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
15615         (HOST_LIBS): New variable.
15616         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
15617         (ALL_CXXFLAGS): New variable.
15618         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
15619         * doc/install.texi (Configuration): Document
15620         --enable-build-with-cxx, --with-stage1-ldflags,
15621         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
15622         * configure: Rebuild.
15623
15624 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15625
15626         * config/arm/arm.c (arm_override_options): Fix braces and formatting
15627         from previous commit.
15628
15629 2009-06-23  Ian Lance Taylor  <iant@google.com>
15630
15631         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
15632
15633 2009-06-23  Ian Lance Taylor  <iant@google.com>
15634
15635         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
15636         with ATTRIBUTE_UNUSED.
15637
15638 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
15639             Pat Haugen  <pthaugen@us.ibm.com>
15640             Revital Eres  <eres@il.ibm.com>
15641
15642         * config.in (HAVE_AS_POPCNTD): Add default definition.
15643         (HAVE_AS_LWSYNC): Ditto.
15644
15645         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
15646         release number.
15647         (gcc_cv_as_powerpc_cmpb): Ditto.
15648         (gcc_cv_as_powerpc_dfp): Ditto.
15649         (gcc_cv_as_powerpc_vsx): Ditto.
15650         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
15651         supporting the popcntd/lwsync instructions.
15652         (gcc_cv_as_powerpc_lwsync): Ditto.
15653         * configure: Regenerate.
15654
15655         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
15656         -mcpu=native and -mcpu=power7.
15657         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
15658
15659         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
15660         a variable instead of a mask to reduce the number of mask bits.
15661         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
15662         (-mbit-word): Ditto.
15663         (-mregnames): Ditto.
15664         * config/rs6000/rs6000.opt (-mupdate): Ditto.
15665         (-mfused-madd): Ditto.
15666
15667         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
15668         2.06 instructions.
15669         (-mvsx): New switch for VSX instructions.
15670         (-misel): Move from a variable to a mask to allow it to be set by
15671         -mcpu=.
15672
15673         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
15674         function declaration to an array declaration.
15675         (rs6000_hard_regno_nregs): New external array declaration.
15676
15677         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
15678         files included by rs6000.md.
15679
15680         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
15681         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
15682
15683         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
15684         a target mask.
15685         (rs6000_debug_reg): New -mdebug= variables.
15686         (rs6000_debug_addr): Ditto.
15687         (rs6000_debug_cost): Ditto.
15688         (rs6000_pmode): New variable to hold Pmode.
15689         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
15690         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
15691         calculated at compiler start.
15692         (rs6000_hard_regno_nregs): Change function to an array which holds
15693         HARD_REGNO_NREGS calculated at compiler start.
15694         (rs6000_explicit_options): Delete isel field.
15695         (rs6000_vector_unit): New array to hold which vector unit
15696         supports arithmetic options for a given type.
15697         (rs6000_vector_mem): New array to hold which vector unit supports
15698         memory reference operations for a given type.
15699         (rs6000_vector_align): New array to given the alignment of each
15700         vector type.
15701         (power7_cost): New basic costs for power7.
15702         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
15703         (rs6000_hard_regno_nregs_internal): New function, moved from
15704         HARD_REGNO_NREGS, to calculate the number of registers each hard
15705         register takes for each type.
15706         (rs6000_debug_reg_print): New function for -mdebug=reg support.
15707         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
15708         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
15709         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
15710         unit information here so it is calculated once at compiler startup
15711         time.
15712         (rs6000_override_options): Make -misel a target mask.  Add more
15713         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
15714         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
15715         -mdebug=cost.
15716         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
15717         (rs6000_handle_option): Move -misel from variable to target mask.
15718         (rs6000_builtin_mask_for_load): Add VSX support.
15719         (rs6000_conditional_register_usage): Ditto.
15720         (USE_ALTIVEC_FOR_ARG_P): Ditto.
15721         (function_arg_boundary): Ditto.
15722         (rs6000_expand_builtin): Ditto.
15723         (def_builtin): Make abort message a little friendlier.
15724         (rs6000_emit_int_cmove): Add support for 64-bit isel.
15725
15726         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
15727         assembler support the popcntd instruction instead of a vsx
15728         instruction to enable power7 support.
15729         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
15730         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
15731         option to the assembler if -mcpu=native.
15732         (ASM_CPU_NATIVE_SPEC): Ditto.
15733         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
15734         ISA 2.06 features.
15735         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
15736         the lwsync instruction.
15737         (enum processor_type): Add PROCESSOR_POWER7.
15738         (rs6000_debug_reg): New -mdebug= options.
15739         (rs6000_debug_addr): Ditto.
15740         (rs6000_debug_cost): Ditto.
15741         (rs6000_isel): Delete.
15742         (enum rs6000_vector): New enum to say what vector unit we have.
15743         (VECTOR_UNIT_*): New macros to say which vector unit has
15744         arithmetic operations for a given type.
15745         (VECTOR_MEM_*): New macros to say which vector unit has memory
15746         operations for a given type.
15747         (TARGET_LDBRX): Whether the machine supports the ldbrx
15748         instruction.
15749         (TARGET_ISEL): Delete, -misel moved to be a mask.
15750         (TARGET_ISEL64): New macro for 64-bit isel support.
15751         (UNITS_PER_VSX_WORD): New macro.
15752         (POINTER_SIZE): Move to be an external variable, rather than
15753         calculating whether we are generating 32 ot 64-bit code.
15754         (Pmode): Ditto.
15755         (STACK_BOUNDARY): Add VSX support.
15756         (LOCAL_ALIGNMENT): Ditto.
15757         (SLOW_UNALIGNED_ACCESS): Ditto.
15758         (VSX_REGNO_P): New macro for VSX support.
15759         (VFLOAT_REGNO_P): Ditto.
15760         (VINT_REGNO_P): Ditto.
15761         (VLOGICAL_REGNO_P): Ditto.
15762         (VSX_VECTOR_MODE): Ditto.
15763         (VSX_SCALAR_MODE): Ditto.
15764         (VSX_MODE): Ditto.
15765         (VSX_MOVE_MODE): Ditto.
15766         (VSX_REG_CLASS_P): Ditto.
15767         (HARD_REGNO_NREGS): Instead of calling a function, use an array
15768         lookup.
15769         (UNITS_PER_SIMD_WORD): Add VSX support.
15770         (MODES_TIEABLE_P): Ditto.
15771         (STARTING_FRAME_OFFSET): Ditto.
15772         (STACK_DYNAMIC_OFFSET): Ditto.
15773         (EPILOGUE_USES): Ditto.
15774         (REGNO_REG_CLASS): Move to array lookup.
15775         (CLASS_MAX_NREGS): Ditto.
15776         (rs6000_vector_reg_class): Add declaration.
15777         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
15778         overlap with the floating point and Altivec registers.
15779
15780         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
15781
15782         * config/rs6000/driver-rs6000.c (asm_names): New static array to
15783         give the appropriate asm switches if -mcpu=native.
15784         (host_detect_local_cpu): Add support for "asm".
15785         (host_detect_local_cpu): Follow GNU code guidelines for name.
15786
15787         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
15788         -mbit-word to a variable instead of being a target mask.
15789
15790         * config/rs6000/sync.md (lwsync): If the assembler supports it,
15791         emit the lwsync instruction instead of emitting the instruction as
15792         an integer constant.
15793
15794         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
15795         fixuns_trundfsi2, move expander into rs6000.md.
15796
15797         * config/rs6000/rs6000.md (cpu): Add power7.
15798         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
15799         (logical predicate patterns): Change the single instruction
15800         primitives that set CR0 to be fast_compare instead of compare.
15801         (norsi*): Ditto.
15802         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
15803         (popcntddi2): Ditto.
15804         (popcount<mode>): Ditto.
15805         (floating multiply/add insns): Name the floating point
15806         multiply/add insns.
15807         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
15808         (isel_unsigned_<mode>): Ditto.
15809         (fixuns_trundfsi2): Move expander here from spe.md.
15810         (smindi3): Define if we have -misel on 64-bit systems.
15811         (smaxdi3): Ditto.
15812         (umindi3): Ditto.
15813         (umaxdi3): Ditto.
15814
15815 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
15816
15817         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
15818         extra_objs.
15819         * config/avr/avr.c (avr_current_device): New variable.
15820         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
15821         (avr_arch, mcu_type_s): Move to avr.h.
15822         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
15823         default_data_section_start fields.
15824         (avr_arch): Moved from avr.c.
15825         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
15826         library_name fields.
15827         (avr_current_device, avr_mcu_types, avr_arch_types,
15828         avr_device_to_arch, avr_device_to_data_start,
15829         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
15830         (EXTRA_SPEC_FUNCTIONS): Define.
15831         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
15832         options mapping. Use device_to_arch and device_to_data_start insted.
15833         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
15834         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
15835         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
15836         * config/avr/driver-avr.c: New file.
15837         * config/avr/avr-devices.c: New file.
15838
15839 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
15840
15841         * var-tracking.c (unshare_variable): Force initialized to
15842         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
15843         (set_variable_part): Likewise.
15844         (struct variable_union_info): Remove pos_src field.
15845         (vui_vec, vui_allocated): New variables.
15846         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
15847         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
15848         == 1 use a simpler sorting algorithm.  Compute pos field right
15849         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
15850         Avoid quadratic comparison if !flag_var_tracking_uninit.
15851         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
15852         unshare_variable unconditionally.
15853         (dataflow_set_different_2): Removed.
15854         (dataflow_set_different): Don't traverse second hash table.
15855         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
15856         unconditionally to var_reg_set or var_mem_set.
15857         (emit_notes_in_bb): Likewise.
15858         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
15859         unshare_variable.
15860         (emit_note_insn_var_location): Don't set initialized to
15861         VAR_INIT_STATUS_INITIALIZED early.
15862         (vt_finalize): Free vui_vec if needed, clear vui_vec and
15863         vui_allocated.
15864         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
15865
15866         * tree-object-size.c (addr_object_size): Instead of checking
15867         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
15868         are no FIELD_DECLs following it.
15869
15870 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
15871
15872         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
15873         order to match bswaps with signed source operands.
15874
15875 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15876
15877         * sdbout.c (sdbout_one_type): Fix braces in switch.
15878
15879 2009-06-23  Richard Guenther  <rguenther@suse.de>
15880
15881         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
15882         member.
15883         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
15884         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
15885         var_callused, callused_tree, var_storedanything, storedanything_tree,
15886         var_integer, integer_tree): Remove global variables.
15887         (new_var_info): Do not pass new id, append the new var to the
15888         global variable vector.
15889         (do_ds_constraint): Use is_global_var member of the variable-info.
15890         (new_scalar_tmp_constraint_exp): Adjust.
15891         (create_function_info_for): Likewise.
15892         (create_variable_info_for): Likewise.
15893         (find_what_var_points_to): Remove dead code.
15894         (init_base_vars): Simplify.
15895         (compute_points_to_sets): Adjust.
15896
15897 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15898
15899         * combine.c (try_combine): Dump information about the insns we're
15900         combining.
15901
15902 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
15903
15904         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
15905         check when calling force_to_mode on TRUNCATE's operand.
15906
15907 2009-06-22  Ian Lance Taylor  <iant@google.com>
15908
15909         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
15910
15911 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15912
15913         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
15914
15915 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15916
15917         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
15918         override library linkage flags such as -static-libgcc or
15919         -shared-libgcc.
15920
15921 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
15922
15923         * config/m68k/m68k-devices.def: Add line for MCF5221x.
15924
15925 2009-06-22  Ian Lance Taylor  <iant@google.com>
15926
15927         * config/linux.opt: Put mglibc ahead of muclibc.
15928
15929         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
15930         for duplicate decls.
15931
15932 2009-06-22  Matthias Klose  <doko@ubuntu.com>
15933
15934         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
15935
15936 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
15937
15938         PR objc/28050
15939         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
15940         instead of NULL if a parser error occurs.
15941
15942 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15943
15944         * dwarf2out.c (dwarf2_debug_hooks): Initialize
15945         non-DWARF2_DEBUGGING_INFO version.
15946
15947 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
15948
15949         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
15950         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
15951
15952         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
15953         (LIBGCC2_TF_CEXT): Define.
15954         (TF_SIZE): Define.
15955
15956 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15957
15958         PR target/40463
15959         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
15960
15961 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15962
15963         * config/arm/arm.c (arm_override_options): Disable
15964         -mcaller-super-interworking and -mcallee-super-interworking.
15965         * doc/invoke.texi (ARM Options): Document this.
15966
15967 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
15968
15969         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
15970         * config/arm/constraints.md (j): New constraint for movw operands.
15971         (N): Remove thumb2 meaning.
15972         * config/arm/arm.md (*arm_movw): Delete.
15973         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
15974         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
15975         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
15976
15977 2009-06-22  Martin Jambor  <mjambor@suse.cz>
15978
15979         PR tree-optimization/40492
15980         * tree-sra.c (sra_modify_assign): Pass zero offsets to
15981         build_ref_for_offset.
15982
15983 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
15984
15985         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
15986         JUMP_TABLE_DATA_P predicates where applicable.
15987         * auto-inc-dec.c: Ditto.
15988         * builtins.c: Ditto.
15989         * caller-save.c: Ditto.
15990         * calls.c: Ditto.
15991         * cfgcleanup.c: Ditto.
15992         * cfglayout.c: Ditto.
15993         * cfgrtl.c: Ditto.
15994         * combine.c: Ditto.
15995         * combine-stack-adj.c: Ditto.
15996         * cse.c: Ditto.
15997         * cselib.c: Ditto.
15998         * dbxout.c: Ditto.
15999         * df-scan.c: Ditto.
16000         * dse.c: Ditto.
16001         * dwarf2asm.c: Ditto.
16002         * dwarf2out.c: Ditto.
16003         * emit-rtl.c: Ditto.
16004         * except.c: Ditto.
16005         * explow.c: Ditto.
16006         * expmed.c: Ditto.
16007         * expr.c: Ditto.
16008         * final.c: Ditto.
16009         * function.c: Ditto.
16010         * fwprop.c: Ditto.
16011         * gcse.c: Ditto.
16012         * genpreds.c: Ditto.
16013         * genrecog.c: Ditto.
16014         * ifcvt.c: Ditto.
16015         * ira-costs.c: Ditto.
16016         * ira-lives.c: Ditto.
16017         * jump.c: Ditto.
16018         * loop-iv.c: Ditto.
16019         * lower-subreg.c: Ditto.
16020         * modulo-sched.c: Ditto.
16021         * optabs.c: Ditto.
16022         * postreload.c: Ditto.
16023         * print-rtl.c: Ditto.
16024         * recog.c: Ditto.
16025         * reginfo.c: Ditto.
16026         * regmove.c: Ditto.
16027         * reload1.c: Ditto.
16028         * reload.c: Ditto.
16029         * reorg.c: Ditto.
16030         * rtlanal.c: Ditto.
16031         * rtl.c: Ditto.
16032         * sched-vis.c: Ditto.
16033         * sdbout.c: Ditto.
16034         * sel-sched-ir.c: Ditto.
16035         * simplify-rtx.c: Ditto.
16036         * targhooks.c: Ditto.
16037         * var-tracking.c: Ditto.
16038         * vmsdbgout.c: Ditto.
16039
16040 2009-06-22  Matthias Klose  <doko@ubuntu.com>
16041
16042         * Makefile.in (install-plugin): Always use DESTDIR.
16043
16044 2009-06-22  Olivier Hainque  <hainque@adacore.com>
16045
16046         * config/pa/pa.c (output_call): Don't optimize post call jumps
16047         into return address adjustments if the call may throw.
16048
16049 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
16050
16051         * arm.c (thumb1_output_casesi): New function.
16052         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
16053         optimizing for size or PIC.
16054         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
16055         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
16056         (casesi): Handle Thumb-1 when optimizing for size or PIC.
16057         (thumb1_casesi_internal_pic): New expand rule.
16058         (thumb1_casesi_dispatch): New pattern.
16059         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
16060         thumb-1 mode.
16061         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
16062         in the text seciton when PIC or optimizing for size.
16063         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
16064         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
16065         preservation properties of code.
16066         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
16067         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
16068         (__gnu_thumb1_case_si): New function.
16069         * t-arm (LIB1ASMSRC): Define here.
16070         (LIB1ASMFUNCS): Add some common functions.
16071         * t-arm-elf (LIB1ASMSRC): Delete.
16072         (LIB1ASMFUNCS): Append to existing set.
16073         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16074         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16075         * t-symbian (LIB1ASMFUNCS): Likewise.
16076         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16077         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
16078
16079 2009-06-21  Richard Guenther  <rguenther@suse.de>
16080
16081         PR tree-optimization/38729
16082         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
16083         to loops with a single exit if -fno-expensive-optimizations.
16084
16085 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
16086
16087         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
16088         (dataflow_set): Change vars type from htab_t to shared_hash.
16089         (shared_hash_pool, empty_shared_hash): New variables.
16090         (vars_clear): Removed.
16091         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
16092         shared_hash_find_slot_unshare, shared_hash_find_slot,
16093         shared_hash_find_slot_noinsert, shared_hash_find): New
16094         static inlines.
16095         (shared_hash_unshare, shared_hash_destroy): New functions.
16096         (unshare_variable): Unshare set->vars if shared, use
16097         shared_hash_htab.
16098         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
16099         (get_init_value, find_src_set_src, dump_dataflow_set,
16100         clobber_variable_part, emit_notes_for_differences): Use
16101         shared_hash_htab.
16102         (dataflow_set_init): Remove second argument, set vars to
16103         empty_shared_hash instead of creating a new htab.
16104         (dataflow_set_clear): Call shared_hash_destroy and set vars
16105         to empty_shared_hash instead of calling vars_clear.
16106         (dataflow_set_copy): Don't call vars_copy, instead just share
16107         the src htab with dst.
16108         (variable_union): Use shared_hash_*, use initially NO_INSERT
16109         lookup if set->vars is shared.  Don't keep slot cleared before
16110         calling unshare_variable.  Unshare set->vars if needed.
16111         Even ->refcount == 1 vars must be unshared if set->vars is shared
16112         and var needs to be modified.
16113         (variable_canonicalize): New function.
16114         (dataflow_set_union): If dst->vars is empty, just share src->vars
16115         with dst->vars and traverse with variable_canonicalize to canonicalize
16116         and unshare what is needed.
16117         (dataflow_set_different): If old_set and new_set use the same shared
16118         htab, they aren't different.  If number of htab elements is different,
16119         htabs are different.  Use shared_hash_*.
16120         (dataflow_set_destroy): Call shared_hash_destroy instead of
16121         htab_delete.
16122         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
16123         second argument to dataflow_set_init.
16124         (vt_initialize): Likewise.  Initialize shared_hash_pool and
16125         empty_shared_hash, move bb in/out initialization afterwards.
16126         Use variable_htab_free instead of NULL as changed_variables del hook.
16127         (variable_was_changed): Change type of second argument to pointer to
16128         dataflow_set.  When inserting var into changed_variables, bump
16129         refcount.  Unshare set->vars if set is shared htab and slot needs to
16130         be cleared.
16131         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
16132         lookup if set->vars is shared.  Unshare set->vars if needed.
16133         Even ->refcount == 1 vars must be unshared if set->vars is shared
16134         and var needs to be modified.  Adjust variable_was_changed caller.
16135         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
16136         vars must be unshared if set->vars is shared and var needs to be
16137         modified.  Adjust variable_was_changed caller.
16138         (emit_note_insn_var_location): Don't pool_free var.
16139         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
16140         instead of 1.
16141         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
16142         free_alloc_pool on shared_hash_pool.
16143
16144 2009-06-20  Anthony Green  <green@moxielogic.com>
16145
16146         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
16147         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
16148
16149 2009-06-20  Richard Guenther  <rguenther@suse.de>
16150
16151         * tree-ssa-structalias.c (find_func_aliases): For memset use
16152         a constraint from NULL if we memset to zero.
16153         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
16154         we explicitly handle that do not read from memory.
16155         (call_may_clobber_ref_p_1): Properly handle builtins that may
16156         set errno.
16157
16158 2009-06-20  Richard Guenther  <rguenther@suse.de>
16159
16160         PR tree-optimization/40495
16161         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
16162         (new_scalar_tmp_constraint_exp): New function.
16163         (process_constraint): Do not create temporary decls.
16164         (process_all_all_constraints): Likewise.
16165         (handle_const_call): Likewise.
16166         (create_function_info_for): Do not set decl.
16167
16168 2009-06-19  Ian Lance Taylor  <iant@google.com>
16169
16170         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
16171         (rs6000_attribute_table): Make static; move before use.
16172
16173 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
16174
16175         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
16176         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
16177         Propagate the TREE_READONLY flag without overwriting it.
16178         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
16179         Propagate the TREE_READONLY flag onto the result.
16180         (process_call_operands): Move around.  Use correct constant value.
16181
16182 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16183
16184         PR target/40482
16185         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
16186         * config/arm/arm.md: Likewise.
16187
16188 2009-06-19  Ian Lance Taylor  <iant@google.com>
16189
16190         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
16191         to GIMPLE_ERROR_MARK.
16192
16193         * c-typeck.c (build_conditional_expr): Add op1_original_type and
16194         op2_original_type parameters.  Warn about using different enum types.
16195         * c-parser.c (c_parser_conditional_expression): Pass original
16196         types to build_conditional_expr.
16197         * c-tree.h (build_conditional_expr): Update declaration.
16198
16199 2009-06-19  Ian Lance Taylor  <iant@google.com>
16200
16201         * config/i386/i386.c (ix86_function_specific_save): Test that
16202         fields match values, rather than testing the values are in a
16203         certain range.
16204
16205 2009-06-19  Richard Guenther  <rguenther@suse.de>
16206
16207         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
16208         ADDR_EXPR pointers.
16209         (ptr_derefs_may_alias_p): Likewise.
16210         (ptr_deref_may_alias_ref_p_1): New function.
16211         (ptr_deref_may_alias_ref_p): Likewise.
16212         (ref_maybe_used_by_call_p_1): Handle builtins that are not
16213         covered by looking at the ESCAPED solution.
16214         (call_may_clobber_ref_p_1): Likewise.
16215         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
16216         Handle NULL_TREE offset.  Do not produce redundant constraints.
16217         (process_all_all_constraints): New helper function.
16218         (do_structure_copy): Use it.
16219         (handle_lhs_call): Likewise.
16220         (find_func_aliases): Handle some builtins with pointer arguments
16221         and/or return values explicitly.
16222
16223 2009-06-19  Ian Lance Taylor  <iant@google.com>
16224
16225         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
16226
16227 2009-06-19  Ian Lance Taylor  <iant@google.com>
16228
16229         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
16230
16231 2009-06-19  Ian Lance Taylor  <iant@google.com>
16232
16233         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
16234         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
16235         version.
16236
16237         * c-decl.c (finish_decl): If -Wc++-compat, warn about
16238         uninitialized const.
16239
16240 2009-06-19  Ian Lance Taylor  <iant@google.com>
16241
16242         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
16243         all uses.
16244
16245         * c-decl.c (in_struct, struct_types): Remove.
16246         (struct c_binding): Add in_struct field.
16247         (c_binding_ptr): Define type, along with VEC.
16248         (struct c_struct_parse_info): Define.
16249         (struct_parse_info): New static variable.
16250         (bind): Initialize in_struct field.
16251         (start_struct): Remove enclosing_in_struct and
16252         enclosing_struct_types parameters.  Add
16253         enclosing_struct_parse_info parameter.  Change all callers.  Set
16254         struct_parse_info rather than in_struct and struct_types.
16255         (grokfield): If -Wc++-compat and there is a symbol binding for the
16256         field name, set the in_struct flag and push it on the
16257         struct_parse_info->fields vector.
16258         (warn_cxx_compat_finish_struct): New static function.
16259         (finish_struct): Remove enclosing_in_struct and
16260         enclosing_struct_types parameters.  Add
16261         enclosing_struct_parse_info parameter.  Change all callers.  Don't
16262         set C_TYPE_DEFINED_IN_STRUCT here.  Call
16263         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
16264         parameter.  Only push on struct_types if warn_cxx_compat.
16265         (finish_enum): Only push on struct_types if warn_cxx_compat.
16266         (declspecs_add_type): Add loc parameter.  Change all callers.
16267         Change all error calls to error_at.  Pass loc, not input_location,
16268         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
16269         defined in a struct.  If -Wc++-compat and parsing a struct, record
16270         that a typedef name was used.
16271         * c-parser.c (c_parser_declspecs): Get location to pass to
16272         declspecs_add_type.
16273         (c_parser_struct_or_union_specifier): Update calls to start_struct
16274         and finish_struct.
16275         * c-tree.h (struct c_struct_parse_info): Declare.
16276         (finish_struct, start_struct): Update declarations.
16277         (declspecs_add_type): Update declaration.
16278
16279 2009-06-19  Ian Lance Taylor  <iant@google.com>
16280
16281         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
16282         variable with an anonymous type.
16283
16284 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16285
16286         * see.c: Remove for real.
16287
16288 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
16289
16290         * optabs.h (enum optab_index): Add new OTI_significand.
16291         (significand_optab): Define corresponding macro.
16292         * optabs.c (init_optabs): Initialize significand_optab.
16293         * genopinit.c (optabs): Implement significand_optab using
16294         significand?f2 patterns.
16295         * builtins.c (expand_builtin_mathfn): Handle
16296         BUILT_IN_SIGNIFICAND{,F,L}.
16297         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
16298         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
16299
16300         * config/i386/i386.md (significandxf2, significand<mode>2): New
16301         expanders to implement significandf, significand and significandl
16302         built-ins as inline x87 intrinsics.
16303
16304 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
16305
16306         * config/avr/avr.c (avr_override_options): Remove setting value of
16307         PARAM_INLINE_CALL_COST.
16308
16309 2009-06-18  Richard Henderson  <rth@redhat.com>
16310
16311         PR 40488
16312         * tree-pass.h (TDF_ASMNAME): New.
16313         * tree-dump.c (dump_options): Add asmname.
16314         * doc/invoke.texi: Document it.
16315
16316         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
16317         (dump_decl_name): ...here.
16318         (dump_function_name): New flags arg; mind TDF_ASMNAME.
16319         (dump_generic_node): Update dump_function_name calls.
16320         (print_call_name): New flags arg; update all dump calls.
16321         * diagnostic.h (print_call_name): Update.
16322         * gimple-pretty-print.c (dump_gimple_call): Update.
16323
16324 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
16325
16326         PR target/40470
16327         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
16328
16329 2009-06-18  Diego Novillo  <dnovillo@google.com>
16330
16331         * doc/plugins.texi: Document plugin_is_GPL_compatible.
16332         * plugin.c (str_license): Declare.
16333         (try_init_one_plugin): Assert that the symbol
16334         'plugin_is_GPL_compatible' exists.
16335
16336 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
16337
16338         * see.c: Remove.
16339         * Makefile.in (OBJS-common): Remove see.o.
16340         (see.o): Remove.
16341         * common.opt (fsee): Mark as preserved for backward compatibility.
16342         * opts.c (common_handle_option): Add OPT_fsee to the backward
16343         compatibility section.
16344         * passes.c (init_optimization_passes, pass_see): Remove pass.
16345         * timevar.def (TV_SEE): Remove.
16346         * tree-pass.h (pass_see): Remove declaration.
16347         * doc/invoke.texi (-fsee): Remove documentation.
16348
16349 2009-06-18  Martin Jambor  <mjambor@suse.cz>
16350
16351         * tree-sra.c: Include statistics.h
16352         (sra_stats): New variable.
16353         (sra_initialize): Clear sra_stats.
16354         (create_access_replacement): Increment sra_stats.replacements.
16355         (get_access_replacement): Do not return twice.
16356         (analyze_all_variable_accesses): Increment statistics counter by the
16357         number of scalarized aggregates.
16358         (generate_subtree_copies): Increment sra_stats.subtree_copies.
16359         (sra_modify_expr): Increment sra_stats.exprs.
16360         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
16361         (sra_modify_assign): Increment sra_stats.exprs,
16362         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
16363         (perform_intra_sra): Update statistics counters.
16364         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
16365
16366 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16367
16368         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
16369         (arm_scalar_mode_supported_p): New function.
16370
16371 2009-06-18  Paul Brook  <paul@codesourcery.com>
16372             Sandra Loosemore  <sandra@codesourcery.com>
16373
16374         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
16375         (__extendhfsf2, __truncsfhf2): Define.
16376         * config/arm/fp16.c: New file.
16377         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
16378         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
16379
16380 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
16381
16382         * doc/extend.texi (Half-Precision): New section.
16383         * doc/invoke.texi (Option Summary): List -mfp16-format.
16384         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
16385         * config/arm/arm.opt (mfp16-format=): New.
16386         * config/arm/arm.c: Include intl.h.
16387         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
16388         (TARGET_INVALID_RETURN_TYPE): Redefine.
16389         (TARGET_PROMOTED_TYPE): Redefine.
16390         (TARGET_CONVERT_TO_TYPE): Redefine.
16391         (arm_fp16_format): Define.
16392         (all_fpus): Add entry for neon-fp16.
16393         (fp_model_for_fpu): Likewise.
16394         (struct fp16_format): Declare.
16395         (all_fp16_formats): Define.
16396         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
16397         functions.
16398         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
16399         and no ldrh.
16400         (arm_legitimate_index_p): Treat HFmode like HImode.
16401         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
16402         (coproc_secondary_reload_class): Special-case HFmode.
16403         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
16404         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
16405         (arm_init_fp16_builtins): New.
16406         (arm_init_builtins): Call it.
16407         (arm_invalid_parameter_type): New.
16408         (arm_invalid_return_type): New.
16409         (arm_promoted_type): New.
16410         (arm_convert_to_type).
16411         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
16412         format.
16413         (arm_emit_fp16_const): New function.
16414         (arm_mangle_type): Mangle __fp16 as "Dh".
16415         * config/arm/arm.h (TARGET_VFPD32): Make it know about
16416         FPUTYPE_NEON_FP16.
16417         (TARGET_NEON_FP16): New.
16418         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
16419         (enum fputype): Add FPUTYPE_NEON_FP16.
16420         (enum arm_fp16_format_type): Declare.
16421         (arm_fp16_format): Declare.
16422         (LARGEST_EXPONENT_IS_NORMAL): Define.
16423         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
16424         * config/arm/arm-modes.def (HFmode): Define.
16425         * config/arm/vfp.md (*movhf_vfp): New.
16426         (extendhfsf2): New.
16427         (truncsfhf2): New.
16428         * config/arm/arm.md (fpu): Add neon_fp16.
16429         (floatsihf2, floatdihf2): New.
16430         (fix_trunchfsi2, fix_trunchfdi2): New.
16431         (truncdfhf2): New.
16432         (extendhfdf2): New.
16433         (movhf): New.
16434         (*arm32_movhf): New.
16435         (*thumb1_movhf): New.
16436         (consttable_2): Add check for HFmode constants.
16437         (consttable_4): Handle HFmode constants.
16438
16439 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
16440
16441         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
16442
16443 2009-06-17  Olivier Hainque  <hainque@adacore.com>
16444
16445         * collect2.c (main): Use CONST_CAST2 to perform char ** to
16446         const char ** conversion in AIX specific section.
16447
16448 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
16449
16450         * config/i386/i386.c (ix86_special_builtin_type): Remove
16451         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
16452         (bdesc_special_args): Updated.
16453         (ix86_init_mmx_sse_builtins): Likewise.
16454         (ix86_expand_special_args_builtin): Likewise.
16455
16456 2009-06-17  Richard Henderson  <rth@redhat.com>
16457
16458         * tree-pretty-print.c (maybe_dump_asm_name): New.
16459         (dump_decl_name): Use it.
16460         (PRINT_FUNCTION_NAME): Merge into...
16461         (dump_function_name): ... here.  Use maybe_dump_asm_name.
16462
16463 2009-06-17  Cary Coutant  <ccoutant@google.com>
16464
16465         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
16466         Change caller.
16467         * debug.c (struct gcc_debug_hooks): Change placeholder for
16468         source_line hook.
16469         (debug_nothing_int_charstar_int): Replaced by...
16470         (debug_nothing_int_charstar_int_bool): ...this.
16471         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
16472         source_line prototype.
16473         (debug_nothing_int_charstar_int): Replaced by...
16474         (debug_nothing_int_charstar_int_bool): ...this.
16475         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
16476         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
16477         Output is_stmt operand when necessary.
16478         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
16479         (notice_source_line): Add is_stmt parameter.
16480         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
16481         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
16482         Change callers.
16483         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
16484         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
16485
16486 2009-06-17  Ian Lance Taylor  <iant@google.com>
16487
16488         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
16489         Change all uses.
16490         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
16491         call uses.
16492
16493 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
16494
16495         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
16496         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
16497         tree_strip_sign_nop_conversions and
16498         tree_ssa_strip_useless_type_conversions rather than stripping
16499         the operations here.
16500         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
16501         Declare them.
16502         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
16503         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
16504         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
16505         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
16506         functions.
16507
16508 2009-06-17  Michael Eager  <eager@eagercon.com>
16509
16510         * config/rs6000/constraints.md (register_constraint "d"): New.
16511         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
16512         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
16513         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
16514         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
16515         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
16516         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
16517         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
16518         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
16519         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
16520         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
16521         __fctiwz): Same.
16522         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
16523         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
16524         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
16525         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
16526         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
16527         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
16528         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
16529         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
16530         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
16531         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
16532         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
16533         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
16534         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
16535         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
16536
16537 2009-06-16  Ian Lance Taylor  <iant@google.com>
16538
16539         * profile.c (total_num_never_executed): Don't define.
16540         (compute_branch_probabilities): Don't count or print
16541         num_never_executed.
16542         (init_branch_prob): Don't set total_num_never_executed.
16543         (end_branch_prob): Don't print total_num_never_executed.
16544
16545 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
16546
16547         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
16548
16549 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
16550
16551         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
16552         (nabstd2_fpr): Same.
16553
16554 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
16555
16556         * expr.c (expand_assignment): Change complex type check.
16557
16558 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
16559
16560         * doc/plugins.texi (Building GCC plugins): Added new section.
16561
16562 2009-06-17  Ian Lance Taylor  <iant@google.com>
16563
16564         * c-pch.c (get_ident): Don't set size of templ array.
16565         (pch_init): Don't set size of partial_pch array.
16566
16567         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
16568         string constant to intialize an array whose size is the length of
16569         the string.
16570
16571 2009-06-17  Richard Guenther  <rguenther@suse.de>
16572
16573         PR tree-optimization/40389
16574         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
16575         to addressable types.
16576         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
16577
16578 2009-06-17  Richard Guenther  <rguenther@suse.de>
16579
16580         PR middle-end/40460
16581         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
16582         if there is no evolution of left in the loop bail out.
16583         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
16584         chrec_fold_multiply.
16585
16586 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
16587             Janis Johnson  <janis187@us.ibm.com>
16588
16589         PR target/39254
16590         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
16591         for the symbol ref of a constant that is the source of a move
16592         - nor for any other not-obvious-label-ref constants.
16593
16594 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
16595
16596         * plugin.c (position_pass): Skip newly inserted pass during list
16597         traversal to avoid repeated insertion.
16598
16599 2009-06-16  Ian Lance Taylor  <iant@google.com>
16600
16601         * vec.h (VEC_stack_alloc): Define different version if
16602         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
16603         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
16604         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
16605         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
16606
16607 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
16608
16609         * config.gcc (extra_headers): Add ia32intrin.h for x86.
16610
16611         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
16612         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
16613         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
16614         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
16615         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
16616         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16617         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16618         (bdesc_special_args): Add __builtin_ia32_rdtsc and
16619         __builtin_ia32_rdtscp.
16620         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
16621         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
16622         and __builtin_ia32_rorhi.
16623         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
16624         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
16625         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
16626         (ix86_expand_args_builtin): Likewise.
16627         (ix86_expand_special_args_builtin): Likewise.
16628
16629         * config/i386/i386.md (UNSPECV_RDTSCP): New.
16630         (UNSPECV_RDTSC): Likewise.
16631         (UNSPECV_RDPMC): Likewise.
16632         (*bsr): Renamed to ...
16633         (bsr): This
16634         (*bsr_rex64): Renamed to ...
16635         (bsr_rex64): This.
16636         (rdpmc): New.
16637         (*rdpmc): Likewise.
16638         (*rdpmc_rex64): Likewise.
16639         (rdtsc): Likewise.
16640         (*rdtsc): Likewise.
16641         (*rdtsc_rex64): Likewise.
16642         (rdtscp): Likewise.
16643         (*rdtscp): Likewise.
16644         (*rdtscp_rex64): Likewise.
16645
16646         * config/i386/ia32intrin.h: New.
16647
16648         * config/i386/x86intrin.h: Include <ia32intrin.h>.
16649
16650 2009-06-16  Ian Lance Taylor  <iant@google.com>
16651
16652         * ira-build.c (copy_info_to_removed_store_destinations):
16653         Initialize parent_a.
16654
16655 2009-06-16  Ian Lance Taylor  <iant@google.com>
16656
16657         * c-decl.c (grokdeclarator): Change size_varies to bool.
16658
16659 2009-06-16  Ian Lance Taylor  <iant@google.com>
16660
16661         * sel-sched.c: Make forward declarations of move_op_hooks and
16662         fur_hooks explicitly extern.
16663
16664 2009-06-16  Ian Lance Taylor  <iant@google.com>
16665
16666         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
16667         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
16668
16669 2009-06-16  Ian Lance Taylor  <iant@google.com>
16670
16671         * resource.c (mark_referenced_resources): Change
16672         include_delayed_effects parameter to bool.  Change all callers.
16673         (mark_end_of_function_resources): Likewise.
16674         * reorg.c (insn_references_resource_p): Likewise.
16675         (insn_sets_resource_p): Likewise.
16676         * resource.h (mark_referenced_resources): Update declaration.
16677         (mark_end_of_function_resources): Update declaration.
16678
16679 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16680
16681         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
16682
16683 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
16684
16685         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
16686         GCC can bootstrap on AIX with GNU Binutils 2.20.
16687
16688 2009-06-16  Ian Lance Taylor  <iant@google.com>
16689
16690         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
16691
16692 2009-06-16  Ian Lance Taylor  <iant@google.com>
16693
16694         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
16695         inline, not extern inline.
16696         (exact_log2): Likewise.
16697         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
16698         test CLZ_HWI.
16699         (exact_log2): Likewise, but don't test CTZ_HWI.
16700
16701 2009-06-16  Ian Lance Taylor  <iant@google.com>
16702
16703         * bitmap.c (bitmap_clear): Don't declare as inline.
16704         * gimple.c (gimplify_assign): Likewise.
16705         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
16706         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
16707         (sched_scan_info): Remove duplicate definition.
16708
16709 2009-06-16  Ian Lance Taylor  <iant@google.com>
16710
16711         * c-common.c (skip_evaluation): Don't define.
16712         (c_inhibit_evaluation_warnings): Define global variable.
16713         (overflow_warning): Check c_inhibit_evaluation_warnings rather
16714         than skip_evaluation.
16715         (convert_and_check, warn_for_div_by_zero): Likewise.
16716         * c-common.h (skip_evaluation): Don't declare.
16717         (c_inhibit_evaluation_warnings): Declare.
16718         * c-parser.c (c_parser_typeof_specifier): Set
16719         c_inhibit_evaluation_warnings rather than skip_evaluation.
16720         (c_parser_conditional_expression): Likewise.
16721         (c_parser_binary_expression): Likewise.
16722         (c_parser_sizeof_expression): Likewise.
16723         (c_parser_alignof_expression): Likewise.
16724         * c-typeck.c (build_indirect_ref): Check
16725         c_inhibit_evaluation_warnings rather than skip_evaluation.
16726         (build_conditional_expr, build_binary_op): Likewise.
16727
16728 2009-06-16  Richard Guenther  <rguenther@suse.de>
16729
16730         * tree-ssa-alias.c (is_escape_site): Remove.
16731         * tree-ssa-alias.h (enum escape_type): Remove.
16732         (is_escape_site): Likewise.
16733         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
16734         via casts and asms without deferring to is_escape_site.
16735
16736 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
16737
16738         PR middle-end/40446
16739         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
16740         use gen_lowpart if op0 has complex mode.
16741
16742 2009-06-16  Richard Guenther  <rguenther@suse.de>
16743
16744         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
16745         variables add them to ESCAPED.
16746         (find_func_aliases): Do not make all indirectly stored values escaped.
16747
16748 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
16749
16750         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
16751         make_decl_one_only.
16752
16753 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16754
16755         PR tree-optimization/40432
16756         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
16757         check whether we need to force gimple register operand.
16758
16759 2009-06-16  Martin Jambor  <mjambor@suse.cz>
16760
16761         PR tree-optimization/40413
16762         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
16763         build_ref_for_offset.
16764         (propagate_subacesses_accross_link): Fix a typo in a comment.
16765
16766 2009-06-16  Ira Rosen  <irar@il.ibm.com>
16767
16768         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16769         with additional parameter.
16770         * tree-vectorizer.h (enum vect_def_type): Add new value
16771         vect_nested_cycle.
16772         (enum vect_relevant): Add comments.
16773         (vect_is_simple_reduction): Add new argument.
16774         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
16775         Detect nested cycles.
16776         (vect_is_simple_reduction): Update documentation, add an argument to
16777         distinguish inner-loop reduction from nested cycle, detect nested
16778         cycles, fix printings and indentation, don't swap operands in case
16779         of nested cycle.
16780         (get_initial_def_for_reduction): Handle subtraction.
16781         (vect_create_epilog_for_reduction): Add new argument to specify
16782         reduction variable.
16783         (vect_finalize_reduction): Handle subtraction, fix comments.
16784         (vectorizable_reduction): Handle nested cycles. In case of nested
16785         cycle keep track of the reduction variable position. Call
16786         vect_is_simple_reduction with additional parameter. Use original
16787         statement code in reduction epilogue for nested cycle. Call
16788         vect_create_epilog_for_reduction with additional parameter.
16789         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
16790         inner-loop vectorization.
16791         (vect_recog_widen_sum_pattern): Likewise.
16792         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
16793         and reductions.
16794         (vect_mark_stmts_to_be_vectorized): Likewise.
16795         (vect_get_vec_def_for_operand): Handle nested cycles.
16796
16797 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16798
16799         * doc/invoke.texi (Debugging Options): Fix option index entries
16800         for -fdump-statistics, -frandom-seed add entries for
16801         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
16802         (FRV Options): Fix entries for -mTLS, -mtls.
16803         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
16804         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
16805         (M68hc1x Options): Fix @itemx for -mnominmax.
16806         (MCore Options): Fix entry for -mno-lsim.
16807         (MMIX Options): Fix entry for -mabi=mmixware.
16808         (PDP-11 Options): Fix entry for -mbcopy-builtin.
16809
16810 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
16811
16812         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
16813         Mention the plugin mode of gengtype.
16814         * doc/gty.texi (Source Files Containing Type Information): Likewise.
16815         * gengtype.c: Updated copyright.
16816         (plugin_files, nb_plugin_files) Added new static variables.
16817         (measure_input_list) Care about plugin_files.
16818         (write_rtx_next): Added early return in plugin mode.
16819         (create_file): Updated copyright year in generated file. Added
16820         asserts.
16821         (oprintf): Added early return if NULL outf.
16822         (get_output_file_with_visibility): Care of plugin_files.
16823         (get_output_file_name): May return null.
16824         (write_local): Added early return.
16825         (put_mangled_filename): Ditto.
16826         (finish_root_table): Added check for base_files.
16827         (write_roots): Care about null when plugins.
16828         (main): Added plugin mode.
16829
16830 2009-06-15  Ian Lance Taylor  <iant@google.com>
16831
16832         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
16833         * gcov.c (read_count_file): Add braces around variables declared
16834         before label.
16835
16836         * c.opt (Wjump-misses-init): New warning.
16837         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
16838         -Wall and -Wc++-compat if not already set.
16839         (c_common_post_options): Clear warn_jump_misses_init if it was not
16840         set.
16841         * c-decl.c (struct c_binding): Change type field to a union with
16842         new label field.  Make it the first field in the struct.  Update
16843         references to type to use u.type instead.
16844         (struct c_spot_bindings): Define.
16845         (struct c_goto_bindings): Define.
16846         (c_goto_bindings_p): Define, along with VECs.
16847         (struct c_label_vars): Define.
16848         (struct c_scope): Add has_label_bindings field.
16849         (bind_label, set_spot_bindings): New static functions.
16850         (decl_jump_unsafe, update_spot_bindings): New static functions.
16851         (update_label_decls): New static function.
16852         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
16853         Update binding u.label field to shadowed field.
16854         (c_binding_start_stmt_expr): New function.
16855         (c_binding_end_stmt_expr): New function.
16856         (pushdecl): Don't call c_begin_vm_scope.
16857         (make_label): Add defining and p_label_vars parameters.  Change
16858         all callers.
16859         (lookup_label): Correct test for whether a label has not yet been
16860         defined.  Call bind_label rather than bind.
16861         (warn_about_goto): New static function.
16862         (lookup_label_for_goto): New function.
16863         (declare_label): Call bind_label rather than bind.
16864         (check_earlier_gotos): New static function.
16865         (define_label): Don't give errors about jumping into statement
16866         expressions or scopes of variably modified types.  Call
16867         set_spot_bindings and check_earlier_gotos.  Call bind_label
16868         instead of bind.  Don't set label_context_stack_se or
16869         label_context_stack_vm.
16870         (c_get_switch_bindings): New function.
16871         (c_release_switch_bindings): New function.
16872         (c_check_switch_jump_warnings): New function.
16873         (start_function): Don't set label_context_stack_se or
16874         label_context_stack_vm.
16875         (finish_function): Likewise.
16876         * c-typeck.c (label_context_stack_se): Don't define.
16877         (label_context_stack_vm): Don't define.
16878         (c_finish_goto_label): Call lookup_label_for_goto rather than
16879         lookup_label.  Don't give errors about jumping into a statement
16880         expression or the scope of a variably modified type.  Don't set
16881         label_context_stack_se or label_context_stack_vm.
16882         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
16883         fields.  Add bindings field.
16884         (c_start_case): Don't set deleted fields.  Set bindings field.
16885         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
16886         or blocked_vm.  Call c_check_switch_jump_warnings.
16887         (c_finish_case): Don't test blocked_stmt_expr field.  Call
16888         c_release_switch_bindings.
16889         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
16890         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16891         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
16892         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
16893         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
16894         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
16895         (c_begin_vm_scope, c_end_vm_scope): Don't define.
16896         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
16897         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
16898         (C_DECL_UNJUMPABLE_VM): Don't define.
16899         (C_DECL_UNDEFINABLE_VM): Don't define.
16900         (struct c_label_list): Don't define.
16901         (struct c_label_context_se): Don't define.
16902         (struct c_label_context_vm): Don't define.
16903         (struct c_spot_bindings): Declare.
16904         (c_bindings_start_stmt_expr): Declare.
16905         (c_bindings_end_stmt_expr): Declare.
16906         (lookup_label_for_goto): Declare.
16907         (c_get_switch_bindings, c_release_switch_bindings): Declare.
16908         (c_check_switch_jump_warnings): Declare.
16909         (label_context_stack_se, label_context_stack_vm): Don't declare.
16910         (c_finish_goto_label): Update declaration.
16911         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
16912         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
16913         (Warning Options): Document -Wjump-misses-init.
16914
16915 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
16916
16917         * tree-object-size.c (addr_object_size): Fix a pasto in the last
16918         change.
16919
16920 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16921
16922         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
16923
16924 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16925
16926         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
16927
16928 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
16929
16930         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
16931
16932 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
16933
16934         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
16935         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
16936         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
16937         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
16938         * dwarf2asm.c (dw2_force_const_mem): Update call to
16939         make_decl_one_only.
16940         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
16941         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
16942         * langhooks.c (lhd_comdat_group): Remove.
16943         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
16944         * tree.h (DECL_COMDAT_GROUP): New.
16945         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
16946         (tree_decl_with_vis): Add comdat_group. Remove one_only.
16947         (make_decl_one_only): Change signature.
16948         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
16949         make_decl_one_only.
16950         (make_decl_one_only): Change signature.
16951         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
16952
16953 2009-06-15  Richard Guenther  <rguenther@suse.de>
16954
16955         PR middle-end/40439
16956         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
16957
16958 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16959
16960         * tree-ssa-math-opts.c: Remove extra divide.
16961
16962 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16963
16964         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
16965
16966 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16967
16968         * passes.c: Add bswap pass.
16969         * tree-pass.h: Add pass_optimize_bswap declaration.
16970         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
16971         Include rtl.h, expr.h and optabs.h for optab_handler check.
16972         (struct symbolic_number, pass_optimize_bswap): New definition.
16973         (do_shift_rotate, verify_symbolic_number_p): New functions.
16974         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
16975         (gate_optimize_bswap): New function.
16976         * tree.c (widest_int_cst_value): New function.
16977         * tree.h (widest_int_cst_value): Prototype added.
16978
16979 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
16980
16981         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
16982         REG_EQUAL/REG_EQUIV notes.
16983
16984 2009-06-14  Richard Guenther  <rguenther@suse.de>
16985
16986         PR middle-end/40389
16987         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
16988         has its address taken if NRV was applied and it is addressable.
16989         * tree-ssa-structalias.c (get_constraint_for_address_of): New
16990         function split out from ...
16991         (get_constraint_for_1): ... here.
16992         (handle_rhs_call): Use it to mark the return slot escaped if
16993         it is addressable and NRV was applied.
16994
16995 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
16996
16997         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
16998         Change first argument type to location_t.
16999         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
17000         Do not set input_location.
17001         Use loc instead of input_location throughout.
17002
17003 2009-06-13  Richard Guenther  <rguenther@suse.de>
17004
17005         PR tree-optimization/40421
17006         * tree-predcom.c (should_unroll_loop_p): Remove.
17007         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
17008
17009 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
17010
17011         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17012         Add location argument.
17013
17014 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
17015
17016         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
17017         build_decl.
17018         * config/s390/s390.c (s390_build_builtin_va_list): Same.
17019         (s390_gimplify_va_arg): Pass location to create_artificial_label.
17020         * config/spu/spu-protos.h: Add location to
17021         spu_resolve_overloaded_builtin.
17022         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
17023         spu_build_builtin_va_list.
17024         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
17025         argument.  Pass location to build_function_call_vec.
17026         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
17027         build_decl.
17028         (emit_fpu_switch): Same.
17029         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
17030         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
17031         to build_decl and create_artificial_label.
17032         (xtensa_gimplify_va_arg_expr): Same.
17033         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
17034         (xstormy16_gimplify_va_arg_expr): Same.
17035         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
17036         * config/arm/arm.c (arm_build_builtin_va_list): Same.
17037         * config/mips/mips.c (mips_build_builtin_va_list): Same.
17038         (mips16_build_function_stub): Same.
17039         (mips16_build_call_stub): Same.
17040
17041 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
17042
17043         PR target/40327
17044         * arm/constraints.md (Pa, Pb): New constraints.
17045         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
17046         split pattern to deal with them.
17047
17048 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
17049
17050         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
17051         fix index entry for -Xpreprocessor.
17052
17053 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17054
17055         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
17056         Add location argument to build_decl call.
17057         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
17058         (rs6000_init_builtins): Same.
17059         (spe_init_builtins): Same.
17060         (rs6000_gimplify_va_arg): Add location argument to
17061         create_artificial_label call.
17062
17063 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
17064
17065         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
17066         * combine-stack-adj.c (pass_stack_adjustments): Use it.
17067         * Makefile.in: Fix GGC dependency for gcse.o.
17068
17069 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
17070
17071         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
17072         * gimple-pretty-print.c (dump_gimple_stmt): Same.
17073         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
17074         created.
17075         * c-parser.c (c_parser_binary_expression): Use current column while
17076         building binary operations.
17077         * common.opt (fshow-column): Enable by default.
17078         * tree-vrp.c (check_array_ref): Use warning_at.
17079         (check_array_bounds): Use location from call back if expr has no
17080         location.
17081         * tree.h: Add location argument to maybe_fold_*.
17082         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
17083         (maybe_fold_offset_to_array_ref): Add location argument and use it.
17084         (maybe_fold_offset_to_component_ref): Same.
17085         (maybe_fold_offset_to_reference): Same.
17086         (maybe_fold_offset_to_address): Same.
17087         (maybe_fold_stmt_indirect): Same.
17088         (maybe_fold_stmt_addition): Same.
17089         (fold_stmt_r): Pass location to maybe_fold_*.
17090         (fold_gimple_assign): Same.
17091         * c-tree.h: Add location argument to finish_decl,
17092         default_function_array_conversion, store_init_value.
17093         * c-decl.c (define_label): Use error_at.
17094         (c_make_fname_decl): Pass location to finish_decl.
17095         (finish_decl): New location argument.
17096         (build_compound_literal): Pass location to store_init_value.
17097         (grokdeclarator): Pass location to finish_decl.
17098         (grokfield): Same.
17099         * c-typeck.c (array_to_pointer_conversion): New location argument.
17100         (function_to_pointer_conversion): Same.
17101         (default_function_array_conversion): Same.
17102         (parser_build_unary_op): Pass location to overflow_warning.
17103         (parser_build_binary_op): Same.  Use warning_at.
17104         (build_unary_op): Pass location to array_to_pointer_conversion.
17105         (build_c_cast): Pass location to digest_init.
17106         (build_modify_expr): New location argument.
17107         (convert_for_assignment): Same.
17108         (store_init_value): Same.
17109         (digest_init): Same.
17110         (output_init_element): Pass location to digest_init and
17111         array_to_pointer_conversion.
17112         (c_finish_return): Pass location to convert_for_assignment.
17113         * gimplify.c (gimplify_conversion): Pass location to
17114         maybe_fold_offset_to_address.
17115         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
17116         to maybe_fold_stmt_addition.
17117         * c-omp.c (c_finish_omp_atomic): Pass new location to
17118         build_modify_expr.
17119         (c_finish_omp_for): Same.
17120         * c-common.c (overflow_warning): New argument.
17121         * c-common.h: New argument to build_modify_expr, overflow_warning.
17122         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
17123         finish_decl.
17124         (c_parser_initializer): Pass location to
17125         default_function_array_conversion.
17126         (c_parser_initelt): Same.
17127         (c_parser_initval): Same.
17128         (c_parser_asm_operands): Same.
17129         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
17130         (c_parser_conditional_expression): Same.
17131         (c_parser_binary_expression): Add location info to stack.  Use it.
17132         (c_parser_unary_expression): Pass location to
17133         default_function_array_conversion, parser_build_unary_op,
17134         build_indirect_ref, c_parser_postfix_expression_after_primary.
17135         (c_parser_postfix_expression_after_primary): New location argument.
17136         Use it.
17137         (c_parser_expression_conv): Pass location to
17138         default_function_array_conversion.
17139         (c_parser_expr_list): Same.
17140         (c_parser_omp_atomic): Same.
17141         (c_parser_omp_for_loop): Same.
17142         * c-tree.h (struct c_declarator): Add comment to id_loc.
17143         (build_array_declarator): New argument.
17144         * c-decl.c (build_array_declarator): Add location argument.
17145         (grokdeclarator): Set id_loc for cdk_array.
17146         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
17147         build_array_declarator.
17148         * tree.c (build_omp_clause): Add location argument.
17149         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
17150         (OMP_CLAUSE_LOCATION): New macro.
17151         (struct tree_omp_clause): Add location field.
17152         (build_omp_clause): Add argument.
17153         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
17154         build_omp_clause.
17155         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
17156         (cp_parser_omp_clause_collapse): Same.
17157         (cp_parser_omp_clause_default): Same.
17158         (cp_parser_omp_clause_if): Same.
17159         (cp_parser_omp_clause_nowait): Same.
17160         (cp_parser_omp_clause_num_threads): Same.
17161         (cp_parser_omp_clause_ordered): Same.
17162         (cp_parser_omp_clause_schedule): Same.
17163         (cp_parser_omp_clause_untied): Same.
17164         (cp_parser_omp_for_loop): Same.
17165         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17166         * c-tree.h (c_start_case): Add location argument.
17167         (c_process_expr_stmt): Same.
17168         (c_finish_goto_*): Same.
17169         * tree-parloops.c (initialize_reductions): Pass location to
17170         build_omp_clause.
17171         (create_parallel_loop): Same.
17172         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
17173         (gfc_trans_omp_reduction_list): Same.
17174         (gfc_trans_omp_clauses): Same.
17175         (gfc_trans_omp_do): Same.
17176         * c-typeck.c (c_finish_goto_label): Same.
17177         (c_finish_goto_ptr): New location argument.
17178         (c_start_case): Same.
17179         (emit_side_effect_warnings): Same.
17180         (c_process_expr_stmt): Same.
17181         (c_finish_stmt_expr): Same.
17182         (c_finish_omp_clauses): Use error_at instead of error.
17183         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
17184         build_omp_clause.
17185         * c-omp.c (c_split_parallel_clauses): New location argument.
17186         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
17187         to build_omp_clause.
17188         (convert_local_reference_stmt): Same.
17189         (convert_gimple_call): Same.
17190         * c-common.h (c_split_parallel_clauses): New argument.
17191         * c-parser.c (c_parser_statement_after_labels): Pass location to
17192         c_finish_goto_label.
17193         (c_parser_switch_statement): Pass location to c_start_case.
17194         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
17195         and c_process_expr_stmt.
17196         (c_parser_omp_variable_list): Add location argument.
17197         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
17198         (c_parser_omp_clause_default): Same.
17199         (c_parser_omp_clause_if): Same.
17200         (c_parser_omp_clause_num_threads): Same.
17201         (-c_parser_omp_clause_ordered): Same.
17202         (c_parser_omp_clause_reduction): Pass location to
17203         c_parser_omp_variable_list.
17204         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
17205         (c_parser_omp_clause_untied): Same.
17206         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
17207         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
17208
17209         * c-tree.h (check_for_loop_decls, undeclared_variable,
17210         build_component_ref, build_array_ref, build_external_ref,
17211         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
17212         build_conditional_expr, build_compound_expr, c_cast_expr,
17213         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
17214         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
17215         argument.
17216         * c-semantics.c (build_stmt): Same.
17217         (build_case_label): Same.
17218         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
17219         (undeclared_variable): New argument.
17220         (make_label): Same.
17221         (lookup_label): Pass location on down.
17222         (define_label): Same.
17223         (finish_decl): Same.
17224         (build_compound_literal): Same.
17225         (finish_struct): Same.
17226         (finish_function): Do not set location here.
17227         (check_for_loop_decls): New argument.
17228         * tree.c (save_expr): Set location.
17229         (build_empty_stmt): New argument.
17230         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
17231         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
17232         * builtins.c (gimplify_va_arg_expr): Use locations.
17233         (expand_builtin_sync_operation): Same.
17234         * c-typeck.c (build_component_ref): New argument.
17235         (build_array_ref): Same.
17236         (build_external_ref): Same.
17237         (c_expr_sizeof_expr): Same.
17238         (c_expr_sizeof_type): Same.
17239         (parser_build_unary_op): Same.
17240         (build_conditional_expr): Same.
17241         (build_compound_expr): Pass location on down.
17242         (build_compound_expr): New argument.
17243         (build_c_cast): Same.
17244         (c_cast_expr): Same.
17245         (build_asm_expr): Same.
17246         (c_finish_return): Same.
17247         (c_process_expr_stmt): Pass location on down.
17248         (c_finish_stmt_expr): New argument.
17249         (push_clenaup): Same.
17250         (c_finish_omp_parallel): Same.
17251         (c_finish_omp_task): Same.
17252         * gimplify.c (gimplify_call_expr): Pass location on down.
17253         * c-omp.c (c_finish_omp_master): New argument.
17254         (c_finish_omp_critical): Same.
17255         (c_finish_omp_ordered): Same.
17256         (c_finish_omp_barrier): Same.
17257         (-c_finish_omp_taskwait): Same.
17258         (c_finish_omp_atomic): Same.
17259         (c_finish_omp_flush): Same.
17260         * tree-inline.c (copy_tree_body_r): Pass location on down.
17261         (inline_forbidden_p): Remove use of input_location.
17262         * c-gimplify.c (c_build_bind_expr): New argument.
17263         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
17264         (c_sizeof_or_alignof_type): New argument.
17265         (c_alignof_expr): Same.
17266         (build_va_arg): Same.
17267         (c_add_case_label): Same.
17268         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
17269         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
17270         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
17271         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
17272         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
17273         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
17274         New argument.
17275         * stub-objc.c (objc_build_selector_expr): Same.
17276         (objc_build_throw_stmt): Same.
17277         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
17278         (c_parser_initelt): Same.
17279         (c_parser_compound_statement): Same.
17280         (c_parser_compound_statement_nostart): Same.
17281         (c_parser_label): Same.
17282         (c_parser_statement_after_labels): Same.
17283         (c_parser_if_body): Same.
17284         (c_parser_else_body): Same.
17285         (c_parser_if_statement): Same.
17286         (c_parser_switch_statement): Same.
17287         (c_parser_while_statement): Same.
17288         (c_parser_do_statement): Same.
17289         (c_parser_for_statement): Same.
17290         (c_parser_asm_statement): Same.
17291         (c_parser_conditional_expression): Same.
17292         (c_parser_binary_expression): Same.
17293         (c_parser_cast_expression): Same.
17294         (c_parser_unary_expression): Same.
17295         (c_parser_sizeof_expression): Same.
17296         (c_parser_alignof_expression): Same.
17297         (c_parser_postfix_expression): Same.
17298         (c_parser_expression): Same.
17299         (c_parser_objc_receiver): Same.
17300         (c_parser_omp_variable_list): Same.
17301         (c_parser_omp_structured_block): Same.
17302         (c_parser_omp_atomic): New argument.
17303         (c_parser_omp_barrier): Same.
17304         (c_parser_omp_critical): Same.
17305         (c_parser_omp_flush): Pass location on down.
17306         (c_parser_omp_for_loop): New argument.
17307         (c_parser_omp_for): Same.
17308         (c_parser_omp_master): Same.
17309         (c_parser_omp_ordered): Same.
17310         (c_parser_omp_sections_scope): Same.
17311         (c_parser_omp_sections): Same.
17312         (c_parser_omp_parallel): Same.
17313         (c_parser_omp_single): Same.
17314         (c_parser_omp_task): Same.
17315         (c_parser_omp_taskwait): Pass location on down.
17316         (c_parser_omp_construct): Same.
17317         (c_parser_omp_threadprivate): Same.
17318         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
17319         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
17320         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
17321         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
17322         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
17323         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
17324         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
17325         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
17326         config/i386/i386.c, stmt.c:
17327         Add location argument to the following function definitions and/or
17328         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
17329         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
17330         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
17331         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
17332         do_case, c_finish_bc_stmt, build_compound_literal,
17333         build_function_call.
17334         * c-decl.c (build_compound_literal): Add location argument.
17335         Make all diagnostic calls use location.
17336         (start_struct): Same.
17337         (finish_struct): Same.
17338         (start_enum): Same.
17339         (build_enumerator): Same.
17340         (start_function): Same.
17341         (grokdeclarator): Make all diagnostic calls use location.
17342         (store_parm_decls_oldstyle): Same.
17343         * c-typeck.c (build_function_call): Add location argument.
17344         Make all diagnostic calls use location.
17345         (do_case): Same.
17346         (c_finish_bc_stmt): Same.
17347         * tree-nested.c (get_trampoline_type): Add argument.
17348         Pass location to build_decl.
17349         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
17350         * rtl.h (RTL_LOCATION): New.
17351         * c-common.c (c_add_case_label): Add location argument.
17352         Make all diagnostic calls use location.
17353         * c-common.h: Add location argument to make_fname_decl, do_case,
17354         c_add_case_label, build_function_call, resolve_overloaded_builtin.
17355         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
17356         Set it appropriately for every case.  Pass enum_loc to start_enum
17357         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
17358         parser_xref_tag.
17359         (c_parser_struct_or_union_specifier): Save location.  Use it for
17360         start_struct, finish_struct, and parser_xref_tag.
17361
17362 2009-06-12  Ian Lance Taylor  <iant@google.com>
17363
17364         * fold-const.c (fold_unary): Rename local variable and to and_expr.
17365
17366         * c-opts.c (c_common_handle_option): For -Wc++-compat set
17367         cpp_opts->warn_cxx_operator_names.
17368
17369 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17370
17371         PR tree-opt/38865
17372         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
17373         is returns NULL and OP is a VCE, look through the VCE.
17374
17375 2009-06-12  Ian Lance Taylor  <iant@google.com>
17376
17377         PR bootstrap/40430
17378         * collect2.c (main): Use CONST_CAST2 in code inside #if
17379         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
17380
17381 2009-06-12  Joey Ye  <joey.ye@intel.com>
17382
17383         PR middle-end/39146
17384         * cfgexpand.c (get_decl_align_unit): Update
17385         max_used_stack_slot_alignment with align instead of
17386         stack_alignment_needed.
17387
17388         * function.c (assign_stack_local_1): Update
17389         max_used_stack_slot_alignment with alignment_in_bits instead
17390         of stack_alignment_needed.
17391         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
17392         here.
17393
17394 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
17395
17396         * dwarf2out.c (last_var_location_insn): New variable.
17397         (dwarf2out_end_epilogue): Clear last_var_location_insn.
17398         (dwarf2out_var_location): Don't record anything after last real
17399         insn.  Only change labels if there were any real instructions
17400         in between last note and this one, or if changed sections.
17401
17402 2009-06-11  Richard Henderson  <rth@redhat.com>
17403
17404         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
17405         note when storing the frame pointer in a register.
17406         (FRP): Don't redefine to nothing for epilogue.
17407         (alpha_expand_epilogue): Mark register and sp restores.
17408         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
17409
17410         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
17411         when gen_lowpart is needed.
17412
17413 2009-06-11  Richard Henderson  <rth@redhat.com>
17414
17415         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
17416
17417         * dwarf2out.c (need_data_align_sf_opcode): New.
17418         (div_data_align): Move earlier.
17419         (def_cfa_1, reg_save): Use it.
17420
17421 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
17422
17423         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
17424         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
17425         (ix86_handle_option): Handle OPT_mcrc32.
17426         (ix86_target_string): Add -mcrc32.
17427         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
17428
17429         * config/i386/i386.h (TARGET_CRC32): New.
17430
17431         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
17432         (sse4_2_crc32di): Likewise.
17433
17434         * config/i386/i386.opt (mcrc32): New.
17435
17436         * doc/invoke.texi: Document -mcrc32.
17437
17438 2009-06-11  Richard Henderson  <rth@redhat.com>
17439
17440         * common.opt (gdwarf-): Accept a version number.
17441         * doc/invoke.texi (gdwarf-): Update docs.
17442         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
17443         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
17444         version level, and record it.
17445
17446         * dwarf2.h (DW_CIE_VERSION): Remove.
17447         * dwarf2out.c (DWARF_VERSION): Remove.
17448         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
17449         (output_call_frame_info): Use CIE version 3 for dwarf3,
17450         or if the return register column is out of range for version 1.
17451         (dwarf_stack_op_name): Add all dwarf3 values.
17452         (DEBUG_PUBTYPES_SECTION): New.
17453         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
17454         encoding change for dwarf3.
17455         (output_die) [dw_val_class_die_ref]: Likewise.
17456         (output_compilation_unit_header): Emit correct version for dwarf3.
17457         (output_line_info): Likewise.
17458         (output_pubnames): Update for DWARF_VERSION removal.
17459         (output_aranges): Likewise.
17460         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
17461         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
17462         (dwarf2out_finish): Likewise.
17463
17464 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17465
17466         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
17467         in r148403.
17468
17469 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
17470
17471         PR c/39252
17472         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
17473         * builtins.c (expand_builtin_unreachable): New function.
17474         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
17475         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
17476         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
17477         successors.
17478         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
17479         searching for missing barriers.
17480
17481 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17482
17483         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
17484         when -fprofile-generate* was passed.
17485         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
17486
17487 2009-06-11  Anthony Green  <green@moxielogic.com>
17488
17489         * config/moxie/moxie.md: Define length attribute for all instructions.
17490         (rCC): Define.
17491         (*b<cond:code>): Support limited branch ranges for new PC-relative
17492         branch instructions.
17493         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
17494
17495 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
17496
17497         * config/i386/i386.c (min_insn_size): Use get_attr_length
17498         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
17499         For __asm return 0.
17500
17501         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
17502         instead of emit_insn_before.
17503
17504 2009-06-10  Ian Lance Taylor  <iant@google.com>
17505
17506         PR bootstrap/40408
17507         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
17508         GIMPLE_SWITCH.
17509
17510 2009-06-10  Revital Eres  <eres@il.ibm.com>
17511
17512         * passes.c (init_optimization_passes): Reschedule
17513         predictive-commoning pass before complete unroll pass.
17514
17515 2009-06-10  Martin Jambor  <mjambor@suse.cz>
17516
17517         * cgraph.c (cgraph_node_can_be_local_p): New function.
17518         (cgraph_make_node_local): New function.
17519         * cgraph.h (cgraph_node_can_be_local_p): Declare.
17520         (cgraph_make_node_local): Declare.
17521
17522 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
17523
17524         * tree.h (tree_base): Add packed_flag and user_align fields.
17525         Decrease size of spare field.
17526         (TYPE_USER_ALIGN): Use user_align from tree_base.
17527         (DECL_USER_ALIGN): Likewise.
17528         (TYPE_PACKED): Use packed_flag from tree_base.
17529         (DECL_PACKED): Likewise.
17530         (tree_type): Delete packed_flag and user_align fields.  Widen
17531         precision field.  Widen mode field and shuffle fields to align
17532         mode on an 8-bit boundary.
17533         (tree_decl_common): Delete decl_flag_1 and user_align fields.
17534         Renumber decl_flag_* fields.  Fix comments.  Widen
17535         decl_common_unused field.
17536         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
17537         (DECL_EXTERNAL): Likewise.
17538         (DECL_BIT_FIELD): Likewise.
17539         (DECL_NONADDRESSABLE_P): Likewise.
17540         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
17541         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
17542
17543 2009-06-10  Ian Lance Taylor  <iant@google.com>
17544
17545         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
17546         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
17547         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
17548         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
17549         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
17550         DEF_VEC_ALLOC_FUNC_P.
17551         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
17552         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
17553         DEF_VEC_ALLOC_FUNC_O.
17554         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
17555         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
17556         DEF_VEC_ALLOC_FUNC_I.
17557         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
17558         (vec_stack_p_reserve_exact_1): Declare.
17559         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
17560         (vec_stack_free): Declare.
17561         (VEC_stack_alloc): Define.
17562         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
17563         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
17564         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
17565         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
17566         for void_p.
17567         (stack_vecs): New static variable.
17568         (vec_stack_p_reserve_exact_1): New function.
17569         (vec_stack_o_reserve_1): New static function.
17570         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
17571         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
17572         (vec_stack_free): New function.
17573         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
17574         (VEC_df_ref_stack_alloc): Define.
17575         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
17576         DEF_VEC_ALLOC_P_STACK.
17577         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
17578         (struct df_collection_rec): Change _vec fields to VEC.  Remove
17579         _use fields.
17580         (df_free_collection_rec): Adjust for new fields.
17581         (df_insn_rescan): Use new df_collection_rec fields.
17582         (df_notes_rescan, df_canonize_collection_rec): Likewise.
17583         (df_ref_create_structure, df_ref_record): Likewise.
17584         (df_get_conditional_uses, df_get_call_refs): Likewise.
17585         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
17586         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
17587         (df_record_exit_block_uses, df_bb_verify): Likewise.
17588         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
17589         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
17590         Remove count parameter.  Change return type to void.  Change all
17591         callers.
17592         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
17593         Remove count parameter.  Change return type to void.  Change all
17594         callers.
17595         (df_install_refs): Change old_vec parameter to VEC.  Remove count
17596         parameter.  Change all callers.
17597         (df_install_mws): Change old_vec parameter to VEC.  Remove count
17598         parameter.  Change all callers.
17599         (df_refs_verify): Change new_rec parameter to VEC.  Change call
17600         callers.
17601         (df_mws_verify): Likewise.
17602
17603 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
17604
17605         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
17606
17607 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
17608
17609         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
17610
17611 2009-06-10  Anthony Green  <green@moxielogic.com>
17612
17613         * config/moxie/crti.asm: New file.
17614         * config/moxie/crtn.asm: New file.
17615         * config/moxie/moxie.c: New file.
17616         * config/moxie/moxie.h: New file.
17617         * config/moxie/sfp-machine.h: New file.
17618         * config/moxie/moxie-protos.h: New file.
17619         * config/moxie/t-moxie: Created.
17620         * config/moxie/t-moxie-softfp: Created.
17621         * config/moxie/moxie.md: Created.
17622         * config/moxie/constraints.md: Created.
17623         * config.gcc: Add moxie support.
17624         * doc/md.texi (Machine Constraints): Add moxie constraints.
17625         * doc/contrib.texi (Contributors): Mention moxie port.
17626         * doc/install.texi (Specific): Mention the moxie port.
17627
17628 2009-06-09  Ian Lance Taylor  <iant@google.com>
17629
17630         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
17631         compiling with C++.
17632         * optabs.c (optab_table): Only use designated initializers if
17633         HAVE_DESIGNATED_INITIALIZERS is defined.
17634         (convert_optab_table): Likewise.
17635         (init_optabs): Always call init_insn_codes if
17636         HAVE_DESIGNATED_INITIALIZERS is not defined.
17637
17638 2009-06-09  Ian Lance Taylor  <iant@google.com>
17639
17640         * targhooks.c (default_builtin_vectorized_function): Change fn
17641         parameter to unsigned int.
17642         (default_builtin_vectorized_conversion): Change code parameter to
17643         unsigned int.
17644         (default_builtin_reciprocal): Change fn parameter to unsigned int.
17645         * targhooks.h: Update declarations.
17646         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
17647         parameter to unsigned int.
17648
17649         * c-typeck.c (comptypes_check_enum_int): New static function.
17650         (comptypes_internal): Add enum_and_int_p parameter.  Change all
17651         callers.
17652         (comp_target_types): Add location parameter.  Change all callers.
17653         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
17654         Change all callers.
17655         (function_types_compatible_p, type_lists_compatible_p): Likewise.
17656         (build_conditional_expr): Add colon_loc parameter.  Change all
17657         callers.
17658         (convert_for_assignment): Add location parameter.  Change all callers.
17659         * c-parser.c (c_parser_conditional_expression): Pass location of
17660         colon to build_conditional_expr.
17661         * c-tree.h (build_conditional_expr): Update declaration.
17662
17663 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17664
17665         * graphite.c: Revert previous patch.
17666
17667 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
17668
17669         PR bootstrap/40103
17670         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
17671
17672 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17673
17674         * tree-ssa-loop-prefetch.c
17675         (loop_prefetch_arrays): Fixed a portability problem in printf format
17676         string.
17677
17678 2009-06-09  Martin Jambor  <mjambor@suse.cz>
17679
17680         PR tree-optimization/40351
17681         * tree-sra.c (propagate_subacesses_accross_link): Check that a
17682         refrence to a potential artifical subaccess can be constructed.
17683
17684 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17685
17686         * config/sh/sh-protos.h (sh_optimization_options): Declare.
17687         (sh_override_options): Likewise.
17688         * config/sh/sh.c: Include params.h.
17689         (sh_optimization_options): New.
17690         (sh_override_options): Likewise.
17691         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
17692         (OVERRIDE_OPTIONS): Use sh_override_options.
17693
17694 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17695
17696         * dwarf2out.c (emit_cfa_remember): New variable.
17697         (add_fde_cfi): If emit_cfa_remember, recurse to add
17698         DW_CFA_remember_state first.
17699         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
17700         instead just set emit_cfa_remember.
17701
17702 2009-06-08  Jan Hubicka  <jh@suse.cz>
17703
17704         PR debug/40126
17705         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
17706
17707 2009-06-08  Jan Hubicka  <jh@suse.cz>
17708
17709         PR middle-end/39834
17710         * cgraphunit.c (save_inline_function_body): Do not copy transform
17711         hooks for saved inline bodies.
17712         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
17713         for given function.
17714
17715 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
17716
17717         * jump.c (returnjump_p): Handle delayed branches.  Add missing
17718         function comment.
17719
17720 2009-06-08  Jan Hubicka  <jh@suse.cz>
17721
17722         PR middle-end/40102
17723         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
17724         original node might've been modified.
17725         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
17726
17727 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
17728
17729         * tree-object-size.c (addr_object_size): Add OSI argument.
17730         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
17731         (compute_builtin_object_size, expr_object_size): Adjust callers.
17732         (plus_stmt_object_size): Call addr_object_size instead of
17733         compute_builtin_object_size.
17734
17735 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
17736             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17737
17738         * tree-ssa-loop-prefetch.c
17739         (gather_memory_references): Introduced a counter for the number of
17740         memory references.
17741         (anything_to_prefetch_p): Introduced a counter for the number of
17742         prefetches.
17743         (is_loop_prefetching_profitable): New function with a cost model
17744         for prefetching.
17745         (loop_prefetch_arrays): Use the new cost model to determine if
17746         prefetching is profitable.
17747         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
17748         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17749         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
17750         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17751         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
17752         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
17753
17754 2009-06-08  Michael Matz  <matz@suse.de>
17755
17756         PR debug/40012
17757         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
17758         partitions use the same.
17759         (expand_one_var): Deal with DECL_RTL sometimes begin set also
17760         for basevars of SSA_NAMEs.
17761         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
17762         to not expand them twice.
17763         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
17764         multiple places.
17765
17766 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
17767
17768         * common.opt (fcompare-debug=, fcompare-debug-second): New.
17769         (fdump-final-insns=, gtoggle): New.
17770         * doc/invoke.texi: Document them.
17771         * final.c (rest_of_clean_state): Dump final insn stream.
17772         * gcc.c (invoke_as): Hook in -fcompare-debug.
17773         (static_spec_functions): Add compare-debug-dump-opt,
17774         compare-debug-self-opt and compare-debug-auxbase-opt.
17775         (compare_debug, compare_debug_second, compare_debug_opt): New.
17776         (switches_debug_check, n_switches_debug_check): New.
17777         (debug_auxbase_opt, debug_check_temp_file): New.
17778         (process_command): Handle -fno-compare-debug, -fcompare-debug and
17779         -fcompare-debug=*.
17780         (do_self_spec): Handle arguments after switches.
17781         (do_spec_1): Add .gk extension to temp file basenames for compare.
17782         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
17783         (cc1_options): Use it instead of normal auxbase computation for
17784         the second compare-debug compilation.
17785         (compare_files): New.
17786         (main): Set up and implement compare debug mode.
17787         (compare_debug_dump_opt_spec_function): New.
17788         (compare_debug_self_opt_spec_function): New.
17789         (compare_debug_auxbase_opt_spec_function): New.
17790         * toplev.c (process_options): Handle flag_gtoggle,
17791         flag_dump_final_insns.
17792         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
17793         during -fcompare-debug-second compilation.
17794
17795 2009-06-07  Ian Lance Taylor  <iant@google.com>
17796
17797         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
17798         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
17799
17800         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
17801         with no default node.  Change warning with %H to warning_at.
17802         Don't clear warn_switch around case checking.
17803         * doc/invoke.texi (Warning Options): Clarify distinction between
17804         -Wswitch and -Wswitch-enum.
17805
17806 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17807
17808         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
17809
17810 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17811
17812         * gbl-ctors.h: Add header guard.
17813
17814 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17815
17816         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
17817         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
17818         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
17819         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
17820         prototypes for removed functions.
17821         (expressions_equal_p): Move to ...
17822         * tree-ssa-sccvn.h: ... here and ...
17823         * matrix-reorg.c: ... adjust includes.
17824
17825 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17826
17827         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
17828
17829 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17830
17831         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
17832         (finish_function): Remove erroneous whitespace.
17833
17834 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17835
17836         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
17837         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
17838
17839 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17840
17841         * errors.c (internal_error): Commentary typo fix.
17842         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
17843         * tree-ssa-pre.c: Ditto.
17844
17845 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
17846
17847         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
17848         them is supposed to hold actual statements.
17849
17850 2009-06-06  Ian Lance Taylor  <iant@google.com>
17851
17852         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
17853         empty statements can now have attributes.
17854
17855 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
17856
17857         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
17858         * config/mips/mips.md: Ditto.
17859
17860 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17861
17862         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
17863         _RELOCATABLE.
17864         (__eabi_uconvert): Likewise.
17865
17866 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
17867
17868         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
17869         CFI_* definitions with IN_GCC.
17870
17871 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
17872
17873         * xcoffout.h (xcoffout_source_line): Update prototype.
17874
17875 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17876
17877         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
17878         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
17879
17880 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17881
17882         PR middle-end/40340
17883         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
17884         inlined_function_outer_scope_p blocks for artificial inlines
17885         even at -g0/-g1.
17886         * tree.c (tree_nonartificial_location): Rewrite using
17887         block_nonartificial_location.
17888
17889 2009-06-05  Revital Eres  <eres@il.ibm.com>
17890             Leehod Baruch  <leehod@il.ibm.com>
17891
17892         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
17893         (expand_expr_real_1): Remove comment.
17894         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
17895         Vectorize misaligned access when the target supports it.
17896         (vect_supportable_dr_alignment): Check for unaligned access support.
17897         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
17898         and remove asset.
17899
17900 2009-06-05  Julian Brown  <julian@codesourcery.com>
17901
17902         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
17903         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
17904
17905 2009-06-05  Richard Guenther  <rguenther@suse.de>
17906
17907         PR bootstrap/40350
17908         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
17909         as possibly unused.
17910
17911 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
17912
17913         * config/s390/s390.c (global_not_special_regno_p): New static inline.
17914         (save_gprs): Don't tell unwinder when a global register is saved.
17915         (s390_emit_epilogue): Emit needed epilogue unwind info.
17916
17917 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17918
17919         * dwarf2out.c (deferred_asm_name): New.
17920         (add_name_and_src_coords_attributes): Defer creation of
17921         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
17922         computed yet.
17923         (move_linkage_attr): New.
17924         (dwarf2out_finish): Revisit deferrals and emit attributes at the
17925         right place.
17926
17927 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
17928
17929         * tree-nested.c (finalize_nesting_tree_1): Declare the
17930         frame_decl in the binding tree.
17931
17932 2009-06-04  Cary Coutant  <ccoutant@google.com>
17933
17934         * basic-block.h (struct basic_block_def): Add discriminator field.
17935         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
17936         callers.
17937         * debug.c (do_nothing_debug_hooks): Add additional entry.
17938         (debug_nothing_int_charstar_int): New function.
17939         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
17940         (debug_nothing_int_charstar_int): New declaration.
17941         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
17942         discriminator value in .loc directive.
17943         * final.c (last_discriminator): New variable.
17944         (discriminator): New variable.
17945         (final_start_function): Initialize above variables, pass current
17946         discriminator to debug hook.
17947         (notice_source_line): Check for discriminator change.
17948         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
17949         * sdbout.c (sdbout_source_line): New parameter.
17950         * tree-cfg.c (struct locus_discrim_map): New structure type.
17951         (discriminator_per_locus): New hash table.
17952         (build_gimple_cfg): Allocate and free discriminator hash table.
17953         (make_edges): Call assign_discriminator.
17954         (locus_map_hash): New function.
17955         (locus_map_eq): New function.
17956         (next_discriminator_for_locus): New function.
17957         (same_line_p): New function.
17958         (assign_discriminator): New function.
17959         (make_cond_expr_edges): Call assign_discriminator.
17960         (make_gimple_switch_edges): Likewise.
17961         (first_non_label_stmt): New function.
17962         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
17963         all callers.
17964         * xcoffout.c (xcoffout_source_line): Add new parameter.
17965
17966         * configure.ac (gcc_cv_as_discriminator): New configury check for
17967         gas support for discriminator.
17968         * configure: Regenerate.
17969         * config.in: Regenerate.
17970
17971 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17972
17973         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
17974         val after checking for integers.
17975
17976 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
17977
17978         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
17979         X64_REGPARM_MAX.
17980         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
17981         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
17982         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
17983         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
17984         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
17985         X64_SSE_REGPARM_MAX.
17986         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17987         X64_SSE_REGPARM_MAX.
17988
17989 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17990
17991         * gcc.c (report_times_to_file): New.
17992         (execute): Implement it.
17993         (process_command): Support -time=.
17994         * doc/invoke.texi: Document it.
17995
17996 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
17997
17998         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
17999         that have value exprs.
18000
18001 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
18002
18003         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
18004         declarations for constants until...
18005         (dw2_output_indirect_constant_1): ... this point.
18006
18007 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
18008
18009         PR target/10242
18010         * arm.md (arm_addsi3): Don't try to split an add with an
18011         eliminable register until after reload has completed.
18012
18013 2009-06-03  Ian Lance Taylor  <iant@google.com>
18014
18015         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
18016         * genattrtab.c (write_length_unit_log): Likewise.
18017         * genchecksum.c (dosum): Likewise.
18018         * gengtype.c (write_rtx_next): Likewise.
18019         (finish_root_table, write_roots): Likewise.
18020         * gimple.c (gimple_ops_offset_): Likewise.
18021         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
18022         * config/arc/arc.c (arc_attribute_table): Likewise.
18023         * config/arm/arm.c (arm_attribute_table): Likewise.
18024         * config/avr/avr.c (avr_attribute_table): Likewise.
18025         * config/crx/crx.c (crx_attribute_table): Likewise.
18026         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
18027         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
18028         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
18029         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
18030         * config/sh/sh.c (sh_attribute_table): Likewise.
18031         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
18032         * config/spu/spu.c (spu_attribute_table): Likewise.
18033         * config/v850/v850.c (v850_attribute_table): Likewise.
18034
18035         * config/alpha/alpha.c (vms_attribute_table): Make static.
18036         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
18037         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
18038         * config/mips/mips.c (mips_attribute_table): Likewise.
18039
18040         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
18041         $(SYSTEM_H).
18042         (cc1-checksum.o): Likewise.
18043
18044 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
18045
18046         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
18047
18048 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
18049
18050         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
18051         insn if it is changing sp.  Use gen_add3_insn instead of
18052         conditionally gen_addsi3 and gen_adddi3.
18053         (offset_below_red_zone_p): New static inline function.
18054         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
18055         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
18056         * config/rs6000/ppc-asm.h: Include auto-host.h.
18057         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
18058         CFI_RESTORE): Define.
18059         * config/rs6000/crtresxgpr.asm: Add unwind info.
18060         * config/rs6000/crtresxfpr.asm: Likewise.
18061         * config/rs6000/crtresgpr.asm: Likewise.
18062         * config/rs6000/crtresfpr.asm: Likewise.
18063         * config/rs6000/crtsavgpr.asm: Likewise.
18064         * config/rs6000/crtsavfpr.asm: Likewise.
18065
18066         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
18067         argument of DWARF2_FRAME_REG_OUT macros.
18068
18069 2009-06-03  Julian Brown  <julian@codesourcery.com>
18070
18071         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
18072         words or less (including TImode) in core registers.
18073
18074 2009-06-03  Richard Guenther  <rguenther@suse.de>
18075
18076         PR middle-end/40328
18077         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
18078
18079 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
18080
18081         * statistics.c (statistics_counter_event): Do not record event
18082         in pass dump if its number == -1.
18083         (curr_statistics_hash): Add assert that we never get passes
18084         with static number == -1.
18085
18086 2009-06-03  Richard Guenther  <rguenther@suse.de>
18087             Andrey Belevantsev  <abel@ispras.ru>
18088
18089         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
18090         non-BLKmode arrays addressable.
18091
18092 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
18093
18094         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
18095         * config/m68k/m68k.h: ... here.
18096
18097 2009-06-03  Martin Jambor  <mjambor@suse.cz>
18098
18099         PR tree-optimization/40323
18100         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
18101         assignment.
18102
18103 2009-06-03  Richard Guenther  <rguenther@suse.de>
18104
18105         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18106         consistently.
18107
18108 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
18109
18110         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
18111         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
18112         JUMP_TABLE_DATA_P where applicable.
18113         * config/sh/sh.c: Ditto.
18114         * config/sh/sh.h: Ditto.
18115         * config/sh/sh.md: Ditto.
18116         * config/sh/symbian.c: Ditto.
18117
18118 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
18119
18120         * config/i386/driver-i386.c (describe_cache): Optimize
18121         concatenation of strings.  Use snprintf instead of sprintf.
18122         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
18123         target when not compiling with GCC.
18124
18125 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
18126
18127         * config/sh/sh.c: Revert last change.
18128         (sh_expand_epilogue): Emit a blockage insn before the frame
18129         pointer adjustment unconditionally.
18130
18131 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18132
18133         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
18134         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
18135         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
18136         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
18137         to COLLECT_GCC_OPTIONS.
18138
18139 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18140
18141         * collect2.c (target_system_root): New variable.
18142         (main): Handle --sysroot=.
18143         (ignore_library): Strip the sysroot from the library path.
18144
18145 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18146
18147         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
18148         (collect2.o): Depend on collect2-aix.h.
18149         (collect2-aix.o): New rule.
18150         * collect2-aix.h: New file.
18151         * collect2-aix.c: Likewise.
18152         * collect2.c: Include collect2-aix.h.  Don't undefine
18153         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
18154         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
18155         Use TARGET_AIX_VERSION instead of _AIX51.
18156         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
18157         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
18158         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
18159         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
18160         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
18161
18162 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18163
18164         * collect2.c (ignore_library): Avoid premature post-increment
18165         and null deference.
18166
18167 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
18168
18169         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
18170         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
18171         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
18172         CROSS_DIRECTORY_STRUCTURE too.
18173         (LINK_LIBG_SPEC): Likewise.
18174         (LIB_SPEC): Add %R to sysroot paths.
18175         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
18176         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
18177         * config/rs6000/aix51.h: As for aix43.h.
18178         * config/rs6000/aix52.h: Likewise.
18179         * config/rs6000/aix53.h: Likewise.
18180         * config/rs6000/aix61.h: Likewise.
18181         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
18182         to the beginning of sysroot paths.
18183
18184 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18185
18186         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
18187         INSN_LISTs that are out of the REG_NOTE range.
18188
18189 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18190
18191         * loop-unroll.c (struct iv_to_split): Add pointer to next.
18192         (struct var_to_expand): Likewise.
18193         (struct opt_info): Add head and tail for linked lists of the above.
18194         (analyze_insn_to_expand_var): Initialize next.
18195         (analyze_iv_to_split_insn): Likewise.
18196         (analyze_insns_in_loop): Create linked lists.
18197         (allocate_basic_variable): Simplify for use without hash table.
18198         (insert_var_expansion_initialization): Likewise, make it type-safer.
18199         (combine_var_copies_in_loop_exit): Likewise.
18200         (apply_opt_in_copies): Walk lists rather than hash tables.
18201         (release_var_copies): Simplified and inlined by hand into...
18202         (free_opt_info): ... this function.
18203
18204 2009-06-02  Richard Guenther  <rguenther@suse.de>
18205
18206         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
18207         for field decls.
18208
18209 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18210
18211         * cfgexpand.c (gimple_expand_cfg): Discard the source location
18212         only for builtins that are not overridden.
18213
18214 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18215
18216         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
18217         label string.
18218
18219 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18220
18221         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
18222
18223 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18224
18225         * combine.c (move_deaths): Compare LUIDs within the same BB only.
18226
18227 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
18228
18229         * common.opt (fdump-unnumbered-links): New.
18230         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
18231         * print-rtl.c (flag_dump_unnumbered_links): New.
18232         (print_rtx): Test it.
18233
18234 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
18235
18236         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
18237         push/pop multiple to 8-byte alignment.
18238
18239 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
18240
18241         * config/i386/i386.c (queued_cfa_restores): New static variable.
18242         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
18243         functions.
18244         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
18245         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
18246         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
18247         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
18248         note unconditionally.
18249         (ix86_emit_restore_regs_using_mov): Likewise.
18250         (ix86_emit_restore_sse_regs_using_mov): Likewise.
18251         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
18252         it through to ix86_emit_restore_reg_using_pop.
18253         (ix86_emit_leave): Add RED_OFFSET argument.  Call
18254         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
18255         instead of adding REG_CFA_OFFSET note unconditionally.
18256         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
18257         the above functions.  Call ix86_add_queued_cfa_restore_notes when
18258         needed.
18259
18260         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
18261         force output of the label even for dwarf2out_do_cfi_asm.
18262         (add_fde_cfi): If -g2 and above and cfi might change CFA,
18263         force creation of CFI label and chain DW_CFA_set_loc jumping to it
18264         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
18265         caller.
18266         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
18267         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
18268         dwarf2out_cfi_label callers.
18269         * tree.h (dwarf2out_cfi_label): Adjust prototype.
18270         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
18271         Adjust dwarf2out_cfi_label callers.
18272         * config/vax/vax.c (vax_output_function_prologue): Likewise.
18273
18274         * config/i386/i386.h (struct machine_cfa_state,
18275         struct machine_function): Guard with ifndef USED_FOR_TARGET
18276         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
18277
18278         PR other/40024
18279         * emutls.c (__emutls_get_address): Change arr->size to mean number
18280         of allocated arr->data entries instead of # of slots + 1.
18281
18282         PR middle-end/40316
18283         * recog.c (peep2_reinit_state): New function.
18284         (peephole2_init_state): Use it at the end of a basic block and also
18285         when seeing a RTX_FRAME_RELATED_P insn.
18286
18287 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
18288
18289         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
18290         fixuns_truncrfdi2): New.
18291         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
18292         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
18293         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
18294         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
18295         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
18296         *recip_approx): Remove.
18297         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
18298         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
18299         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
18300         move to div.md.
18301         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
18302         setf_exp_rf): New.
18303
18304 2009-06-01  Ian Lance Taylor  <iant@google.com>
18305
18306         * attribs.c (register_attribute): Use CONST_CAST.
18307         * collect2.c (main): Use CONST_CAST2.
18308         (scan_prog_file): Likewise.
18309         * gcc.c (process_command, main): Likewise.
18310         * toplev.c (toplev_main): Likewise.
18311
18312         * c-typeck.c (handle_warn_cast_qual): New static function,
18313         partially broken out of build_c_cast.
18314         (build_c_cast): Call handle_warn_cast_qual.
18315         * doc/invoke.texi (Warning Options): Document new effect of
18316         -Wcast-qual.
18317
18318 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
18319
18320         * diagnostic.c (diagnostic_build_prefix): Always print columns.
18321         (diagnostic_report_current_module): Print columns.
18322         * common.opt (flag_show_column): Enable by default.
18323
18324 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
18325
18326         * alias.c (find_base_term): Check for NULL term before returning.
18327
18328 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18329
18330         Revert due to PR40320:
18331         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18332         * calls.c (emit_library_call_value_1): Don't force_operand for move
18333         and push insns.
18334
18335 2009-06-01  Olivier Hainque  <hainque@adacore.com>
18336             Eric Botcazou  <ebotcazou@adacore.com>
18337
18338         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
18339         to be processed as a bitfield for constructor output purposes.
18340         * output.h (initializer_constant_valid_for_bitfield_p): Declare
18341         new function.
18342         * varasm.c (oc_local_state): New type, output_constructor
18343         local state to support communication with helpers.
18344         (oc_outer_state): New type, output_constructor outer state of
18345         relevance in recursive calls.
18346         (output_constructor_array_range): New output_constructor helper,
18347         extracted code for an array range element.
18348         (output_constructor_regular_field): New output_constructor helper,
18349         extracted code for an element that is not a bitfield.
18350         (output_constructor_bitfield): New output_constructor helper,
18351         extracted code for a bitfield element.  Accept an OUTER state
18352         argument for recursive processing.  Recurse on record or array
18353         CONSTRUCTOR values, possibly past noop conversions.
18354         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
18355         VALUE is a valid constant-valued expression for use in a static
18356         bit-field initializer.
18357         (output_constructor): Rework to use helpers.  Accept and honor an
18358         OUTER state argument for recursive calls.  Return total size.  Be
18359         prepared for nested constructors initializing bitfields.
18360         (output_constant): Feed OUTER in calls to output_constructor.
18361
18362 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
18363
18364         * calls.c (emit_library_call_value_1): Don't force_operand for move
18365         and push insns.
18366
18367 2009-06-01  Nick Clifton  <nickc@redhat.com>
18368
18369         * doc/invoke.texi (IA-64 Options): Fix typo.
18370
18371 2009-06-01  Ira Rosen  <irar@il.ibm.com>
18372
18373         PR tree-optimization/39129
18374         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
18375         printed message.
18376         (vect_do_peeling_for_loop_bound): Use
18377         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18378         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18379         (vect_loop_versioning): Likewise.
18380         (vect_create_cond_for_alias_checks): Fix indentation.
18381         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
18382         macros.
18383         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
18384         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
18385         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
18386         "control flow in loop".
18387         (vect_estimate_min_profitable_iters): Use
18388         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
18389         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
18390         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
18391         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
18392         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
18393         statement belongs to a group of strided accesses with the exact code
18394         check.
18395         (vectorizable_load): Likewise.
18396         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
18397         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
18398
18399 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
18400
18401         * config/freebsd-stdint.h: New file.
18402         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
18403         Add freebsd-stdint.h to tm_file.
18404
18405 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
18406
18407         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
18408         (thumb2_extendhidi2): Likewise.
18409
18410 2009-05-31  Ian Lance Taylor  <iant@google.com>
18411
18412         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
18413
18414 2009-05-31  Ian Lance Taylor  <iant@google.com>
18415
18416         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
18417         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
18418         (ipa-reference.o): Depend upon gt-ipa-reference.h.
18419
18420 2009-05-31  Jason Merrill  <jason@redhat.com>
18421
18422         * tree-pretty-print.c (print_call_name): Take the callee, not the
18423         call itself.  Make non-static.  Use dump_function_name for functions.
18424         (dump_generic_node): Adjust.
18425         * diagnostic.h: Declare print_call_name.
18426         * gimple-pretty-print.c (dump_gimple_call): Use it.
18427
18428 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18429
18430         * config/sh/sh.md (ashldi3_std): New define_expand.
18431         (ashldi3): Use it.
18432
18433 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18434
18435         PR target/40313
18436         * config/sh/sh.c: Include debug.h.
18437         (sh_expand_epilogue): Emit a blockage insn before the frame
18438         pointer adjustment also when dwarf2out_do_frame returns true.
18439
18440 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
18441
18442         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
18443         (thumb2_extendqidi2): New pattern.
18444
18445 2009-05-31  Ira Rosen  <irar@il.ibm.com>
18446
18447         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
18448         mark phis for renaming.
18449         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
18450         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
18451         Call mark_sym_for_renaming.
18452         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
18453         * tree-vect-loop.c (vect_transform_loop): Remove
18454         vect_memsyms_to_rename initialization and a call to
18455         mark_set_for_renaming.
18456
18457 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
18458
18459         PR middle-end/40304
18460         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
18461         frame related even if !set_cfa && style < 0.
18462
18463 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
18464
18465         * config/i386/mingw-tls.c: New file.
18466         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
18467         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
18468         defining _WIN32 but not __CYGWIN__.
18469
18470 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18471
18472         * configure.ac: Add MPC support.
18473
18474         * config.in, configure: Regenerate.
18475
18476 2009-05-29  Richard Henderson  <rth@redhat.com>
18477
18478         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
18479         NOTE_INSN_BASIC_BLOCK.
18480         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
18481         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
18482         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
18483         to be deleted.
18484         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
18485         add in_use field.
18486         (add_cfi): Disable check redefining cfa away from drap.
18487         (lookup_cfa_1): Add remember argument; handle remember/restore.
18488         (lookup_cfa): Pass remember argument.
18489         (cfa_remember): New.
18490         (compute_barrier_args_size_1): Remove sibcall check.
18491         (dwarf2out_frame_debug_def_cfa): New.
18492         (dwarf2out_frame_debug_adjust_cfa): New.
18493         (dwarf2out_frame_debug_cfa_offset): New.
18494         (dwarf2out_frame_debug_cfa_register): New.
18495         (dwarf2out_frame_debug_cfa_restore): New.
18496         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
18497         (dwarf2out_begin_epilogue): New.
18498         (dwarf2out_frame_debug_restore_state): New.
18499         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
18500         DW_CFA_restore_state.
18501         (output_cfi_directive): Likewise.
18502         (convert_cfa_to_fb_loc_list): Likewise.
18503         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
18504         * dwarf2out.h: Update.
18505         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
18506         (copy_insn_1): Early out for null.
18507         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
18508         and dwarf2out_frame_debug_restore_state.
18509         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
18510         (prologue_insn_hash, epilogue_insn_hash): New.
18511         (free_after_compilation): Adjust freeing accordingly.
18512         (record_insns): Create hash table if needed; push insns into
18513         hash instead of array.
18514         (maybe_copy_epilogue_insn): New.
18515         (contains): Search hash table instead of array.
18516         (sibcall_epilogue_contains): Remove.
18517         (thread_prologue_and_epilogue_insns): Split eh_return insns
18518         and mark them as epilogues.
18519         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
18520         scanning in terms of basic blocks.
18521         * insn-notes.def (CFA_RESTORE_STATE): New.
18522         * jump.c (returnjump_p_1): Accept EH_RETURN.
18523         (eh_returnjump_p_1, eh_returnjump_p): New.
18524         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
18525         CFA_REGISTER, CFA_RESTORE): New.
18526         * rtl.def (EH_RETURN): New.
18527         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
18528
18529         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
18530         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
18531
18532         * config/i386/i386.c (gen_push): Update cfa state.
18533         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
18534         add a CFA_ADJUST_CFA note.
18535         (ix86_dwarf_handle_frame_unspec): Remove.
18536         (ix86_expand_prologue): Update cfa state.
18537         (ix86_emit_restore_reg_using_pop): New.
18538         (ix86_emit_restore_regs_using_pop): New.
18539         (ix86_emit_leave): New.
18540         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
18541         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
18542         * config/i386/i386.h (struct machine_cfa_state): New.
18543         (ix86_cfa_state): New.
18544         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
18545         (eh_return_internal): Merge from eh_return_<mode>,
18546         use eh_return rtx, split w/ epilogue.
18547
18548 2009-05-29  Ian Lance Taylor  <iant@google.com>
18549
18550         * builtins.c (validate_gimple_arglist): Don't use va_arg with
18551         enum type.
18552         * calls.c (emit_library_call_value_1): Likewise.
18553
18554         * c-typeck.c (c_build_va_arg): New function.
18555         * c-tree.h (c_build_va_arg): Declare.
18556         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
18557         instead of build_va_arg.
18558
18559 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
18560
18561         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
18562         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
18563         (ptr_difference_cost): Use affine combinations to compute it.
18564         (difference_cost): Likewise.
18565         (get_computation_cost_at): Compute more accurate cost for addresses
18566         if the ratio is a multiplier allowed in addresses.
18567         For non-addresses, consider that an additional offset or symbol is
18568         added only once.
18569
18570 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18571
18572         * config/i386/i386.c (ix86_decompose_address): Avoid useless
18573         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
18574
18575         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
18576         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
18577         (prefix_rex): For UNIT_MMX don't imply the prefix by default
18578         if MODE_DI.
18579         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
18580         to 1 for TYPE_SSE{IADD1,CVT1}.
18581         (prefix_vex_imm8): Removed.
18582         (length_vex): Only pass 1 as second argument to
18583         ix86_attr_length_vex_default if prefix_extra is 0.
18584         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
18585         (length): For prefix vex computation use length_immediate
18586         attribute instead of prefix_vex_imm8.
18587         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
18588         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
18589         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
18590         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
18591         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
18592         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
18593         a space in between the operands.
18594         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
18595         if one operand is 0xff and the other one si, di, bp or sp.
18596         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
18597         other one si, di, bp or sp.
18598         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
18599         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
18600         type and mode attributes.
18601         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
18602         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
18603         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
18604         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
18605         prefix_data16 attribute iff MODE_DF.
18606         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
18607         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
18608         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
18609         constm128_operand in length_immediate computation.
18610         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
18611         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
18612         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
18613         length_immediate attribute to 1.
18614         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
18615         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
18616         for certain alternatives.
18617         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
18618         prefix_data16 attribute if MODE_V1DF.
18619         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
18620         length_immediate to 1.
18621         (set_got_rex64, set_rip_rex64): Remove length attribute, set
18622         length_address to 4, set mode attribute to MODE_DI.
18623         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
18624         (fxam<mode>2_i387): Set length attribute to 4.
18625         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
18626         *prefetch_3dnow_rex): Override length_address attribute.
18627         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
18628         attributes.
18629         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
18630         (constm128_operand): Removed.
18631         * config/i386/i386.c (memory_address_length): For
18632         disp && !index && !base in 64-bit mode account for SIB byte if
18633         print_operand_address can't optimize disp32 into disp32(%rip)
18634         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
18635         for fs: or gs: segment.
18636         (ix86_attr_length_immediate_default): When checking if shortform
18637         is possible, truncate immediate to the length of the non-shortened
18638         immediate.
18639         (ix86_attr_length_address_default): Ignore MEM_P operands
18640         with X constraint.
18641         (ix86_attr_length_vex_default): Only check for DImode on
18642         GENERAL_REG_P operands.
18643         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
18644         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
18645         (sse_cvttps2pi): Clear prefix_rep attribute.
18646         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
18647         attribute.
18648         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
18649         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
18650         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
18651         iff operand 2 is const_int_operand.
18652         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
18653         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
18654         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
18655         instead of vex.
18656         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
18657         prefix_data16.
18658         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
18659         prefix_data16 attribute for movlpd and movhpd instructions.
18660         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
18661         length_immediate for shufpd instruction.
18662         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
18663         (avx_cmpp<avxmodesuffixf2c><mode>3,
18664         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
18665         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
18666         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
18667         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
18668         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
18669         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
18670         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
18671         prefix_data16 attribute for the first alternative to 1.
18672         (*avx_loadlps): Override length_immediate for the first alternative.
18673         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
18674         attributes for second alternative.
18675         (*vec_concatv2sf_sse4_1): Override length_immediate and
18676         prefix_data16 attributes for second alternative.
18677         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
18678         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
18679         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
18680         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
18681         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
18682         prefix_data16 and length_immediate to 1.
18683         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
18684         to 1.
18685         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
18686         prefix_extra attribute for variants that don't have 0f prefix alone.
18687         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
18688         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
18689         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
18690         *sse4_1_pextrd): Set length_immediate to 1.
18691         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
18692         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
18693         to 1.
18694         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
18695         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
18696         length_immediate to 1 for second alternative.
18697         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
18698         prefix_extra and length_immediate attributes for the first
18699         alternative.
18700         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
18701         first alternative.
18702         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
18703         to 1 for the first and third alternative.
18704         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
18705         alternative.
18706         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
18707         attribute.
18708         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
18709         attribute to 0.
18710         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
18711         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
18712         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
18713         *avx_psign<mode>3): Set prefix_extra attribute to 1.
18714         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
18715         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
18716         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
18717         ssse3_psign<mode>3): Override prefix_rex attribute.
18718         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
18719         (ssse3_palignrti): Override length_immediate to 1.
18720         (ssse3_palignrdi): Override length_immediate to 1, override
18721         prefix_rex attribute.
18722         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
18723         (sse4a_extrqi): Override length_immediate to 2.
18724         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
18725         (sse4a_insertq): Override prefix_data16 to 0.
18726         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
18727         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
18728         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
18729         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
18730         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
18731         and length_immediate to 1.
18732         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
18733         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
18734         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
18735         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
18736         and length_immediate to 1.
18737         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
18738         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
18739         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
18740         avx_ptest256): Override prefix_extra to 1.
18741         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
18742         Override prefix_data16 and length_immediate to 1.
18743         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
18744         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
18745         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
18746         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
18747         prefix_data16 to 0 and prefix_extra to 2.
18748         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
18749         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
18750         attribute.
18751         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
18752         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
18753         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
18754         and prefix_extra to 2.
18755         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
18756         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
18757         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
18758         avx_vpermilvar<mode>3,
18759         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
18760         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
18761         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
18762         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
18763         Override prefix_extra to 1.
18764         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
18765         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
18766         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
18767         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
18768         prefix_extra and length_immediate to 1.
18769         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
18770         modrm to 0.
18771         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
18772         to 1 for the first alternative.
18773         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
18774         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
18775         cases.
18776         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
18777         *movv2sf_internal_avx, *movv2sf_internal): Override
18778         prefix_rep attribute for certain alternatives.
18779         (*mov<mode>_internal): Override prefix_rep or prefix_data16
18780         attributes for certain alternatives.
18781         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
18782         attributes for certain alternatives.
18783         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
18784         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
18785         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
18786         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
18787         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
18788         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
18789         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
18790         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
18791         length_immediate to 1 if operand 2 is const_int_operand.
18792         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
18793         *vec_extractv2si_1): Set length_immediate attribute to 1.
18794         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
18795         using old 3DNOW insn rather than SSE/3DNOW_A.
18796         (mmx_emms, mmx_femms): Clear modrm attribute.
18797
18798 2009-05-29  Martin Jambor  <mjambor@suse.cz>
18799
18800         * tree-sra.c:  New implementation of SRA.
18801
18802         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
18803         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
18804         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
18805         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
18806         (SRA_MAX_STRUCTURE_COUNT): Removed.
18807         (SRA_FIELD_STRUCTURE_RATIO): Removed.
18808         * doc/invoke.texi (sra-max-structure-size): Removed.
18809         (sra-field-structure-ratio): Removed.
18810
18811 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18812
18813         PR middle-end/40291
18814         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
18815         before expansion.
18816
18817 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
18818
18819         PR rtl-optimization/40101
18820         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
18821         seqno.  Adjust comment.
18822         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
18823         inserting bookkeeping before a jump, the jump is not scheduled.
18824         When no positive seqno found, provide a value.  Add comment.
18825
18826 2009-05-29  Richard Guenther  <rguenther@suse.de>
18827
18828         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
18829         short-cutting on the first component.
18830
18831 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18832
18833         PR middle-end/39958
18834         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
18835         for trees other than decls/types.
18836
18837 2009-05-29  Richard Guenther  <rguenther@suse.de>
18838
18839         * tree-ssa-operands.c (get_expr_operands): Do not handle
18840         INDIRECT_REFs in the handled-component case.  Remove
18841         unused get_ref_base_and_extent case.
18842         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
18843         tree_low_cst and host_integerp where possible.
18844         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
18845         codes for equivalence.
18846         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
18847
18848 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
18849
18850         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
18851         to tmake_file for i[34567]86-*-cygwin*.
18852
18853 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
18854
18855         PR target/40017
18856         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
18857         (altivec_categorize_keyword, init_vector_keywords,
18858         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
18859         similar to bool.
18860
18861 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
18862
18863         * tree.c (handle_dll_attribute): Check if node is
18864         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
18865
18866 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
18867
18868         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
18869         component.
18870         (thumb2_zero_extendqidi2): Likewise.
18871
18872 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
18873
18874         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
18875         instead of gen_movrt.
18876         * config/sh/sh.md (movrt): Remove.
18877
18878 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
18879
18880         * doc/invoke.texi (IA-64 Options):
18881         Add -msdata, -mfused-madd, -mno-inline-float-divide,
18882         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
18883         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
18884         -msched-prefer-non-control-spec-insns,
18885         -msched-stop-bits-after-every-cycle,
18886         -msched-count-spec-in-critical-path,
18887         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
18888         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
18889         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
18890         and -msched-spec-verbose.
18891
18892 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
18893
18894         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
18895         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
18896         error if used.
18897         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
18898
18899 2009-05-28  Richard Guenther  <rguenther@suse.de>
18900
18901         * tree-ssa-alias.c (ao_ref_init): New function.
18902         (ao_ref_base): Likewise.
18903         (ao_ref_base_alias_set): Likewise.
18904         (ao_ref_alias_set): Likewise.
18905         (refs_may_alias_p_1): Change signature.
18906         (refs_may_alias_p): Adjust.
18907         (refs_anti_dependent_p): Likewise.
18908         (refs_output_dependent_p): Likewise.
18909         (call_may_clobber_ref_p_1): Change signature.
18910         (call_may_clobber_ref_p): Adjust.
18911         (stmt_may_clobber_ref_p_1): New function split out from ...
18912         (stmt_may_clobber_ref_p): ... here.
18913         (maybe_skip_until): Adjust signature.
18914         (get_continuation_for_phi): Likewise.
18915         (walk_non_aliased_vuses): Likewise.
18916         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
18917         (ao_ref_init): Declare.
18918         (ao_ref_base): Likewise.
18919         (ao_ref_alias_set): Likewise.
18920         (stmt_may_clobber_ref_p_1): Likewise.
18921         (walk_non_aliased_vuses): Adjust.
18922         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
18923         (get_ref_from_reference_ops): remove.
18924         (vn_reference_lookup_2): Adjust signature.
18925         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
18926         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
18927         (vn_reference_lookup): Adjust.
18928         (vn_reference_insert): Likewise.
18929         (vn_reference_insert_pieces): Adjust signature.
18930         (visit_reference_op_call): Adjust.
18931         * tree-ssa-pre.c (get_expr_type): Simplify.
18932         (phi_translate_1): Adjust.
18933         (compute_avail): Likewise.
18934         (translate_vuse_through_block): Do not re-build trees.
18935         (value_dies_in_block_x): Likewise.
18936         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
18937         fields.
18938         (vn_reference_lookup_pieces): Adjust declaration.
18939         (vn_reference_insert_pieces): Likewise.
18940
18941 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
18942
18943         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
18944         with checking disabled.
18945
18946 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
18947
18948         PR target/37216
18949
18950         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
18951         macro definition for support of three-operand format aligned
18952         .comm directive in assembler on cygwin/pe/mingw target OS.
18953         * configure:  Regenerate.
18954         * config.h:  Regenerate.
18955
18956         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
18957         aligned form of .comm directive if -mpe-aligned-commons is in effect.
18958         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
18959
18960         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
18961         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
18962
18963 2009-05-28  Ira Rosen  <irar@il.ibm.com>
18964
18965         PR tree-optimization/40254
18966         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
18967         in analysis of basic blocks.
18968
18969 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
18970
18971         PR middle-end/33699
18972         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
18973         * target-def.h (TARGET_CONST_ANCHOR): New macro.
18974         (TARGET_INITIALIZER): Use it.
18975         * cse.c (CHEAPER): Move it up to the other macros.
18976         (insert): Rename this ...
18977         (insert_with_costs): ... to this.  Add cost parameters.  Update
18978         function comment.
18979         (insert): New function.  Call insert_with_costs.
18980         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
18981         find_reg_offset_for_const, try_const_anchors): New functions.
18982         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
18983         when using a const-anchor.  Call insert_const_anchors.
18984         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
18985         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
18986
18987 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18988
18989         * tree-inline.c (remap_decls): Enable nonlocalized variables
18990         when not optimizing.
18991
18992 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
18993
18994         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
18995         Simplify other tests involving optimize.
18996
18997 2009-05-27  Tom Tromey  <tromey@redhat.com>
18998
18999         * unwind-dw2.c (_Unwind_DebugHook): New function.
19000         (uw_install_context): Call _Unwind_DebugHook.
19001
19002 2009-05-27  Tom Tromey  <tromey@redhat.com>
19003
19004         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
19005
19006 2009-05-27  Ian Lance Taylor  <iant@google.com>
19007
19008         * Makefile.in (LINKER, LINKER_FLAGS): Define.
19009         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
19010         (ALL_LINKERFLAGS): Define.
19011         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
19012         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19013         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
19014         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19015         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
19016         $(LINKER_FOR_BUILD).
19017         (build/gcov-iov$(build_exeext)): Likewise.
19018
19019 2009-05-27  Julian Brown  <julian@codesourcery.com>
19020
19021         * gcse.c (target.h): Include.
19022         (can_assign_to_reg_without_clobbers_p): Check that the target allows
19023         copy of argument to a pseudo register.
19024
19025 2009-05-27  Diego Novillo  <dnovillo@google.com>
19026
19027         * tree-ssa-live.c (dump_scope_block): Document arguments.
19028         (dump_scope_blocks): Document.
19029         (debug_scope_blocks): New.
19030         * tree-flow.h (debug_scope_blocks): Declare.
19031
19032 2009-05-21  Denis Chertykov  <denisc@overta.ru>
19033
19034         * doc/contrib.texi (Contributors): Add myself to the list.
19035
19036 2009-05-27  Olivier Hainque  <hainque@adacore.com>
19037
19038         * expr.c (target_align): New function.  Alignment the TARGET of an
19039         assignment may be assume to have.
19040         (highest_pow2_factor_for_target): Use it instead of relying on
19041         immediate tree attributes of TARGET, not necessarily honored when
19042         intermediate bitfields are involved.
19043
19044 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
19045
19046         PR target/40266
19047         * config/i386/driver-i386.c (host_detect_local_cpu): Support
19048         AVX, SSE4, AES, PCLMUL and POPCNT.
19049
19050 2009-05-27  Diego Novillo  <dnovillo@google.com>
19051
19052         * tree-pretty-print.c (dump_location): New.
19053         (dump_generic_node): Call it.
19054         Factor code to handle BLOCK nodes ...
19055         (dump_block_node): ... here.
19056
19057 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
19058
19059         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
19060         with it.
19061         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
19062         included.
19063         * gcc-plugin.h: Include config.h and system.h.
19064         (IN_GCC): Define if not defined.
19065
19066 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
19067
19068         PR middle-end/40249
19069         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
19070         with -fno-inline.
19071
19072 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
19073
19074         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
19075         applicable.
19076         * config/m32r/m32r.h: Ditto.
19077         * config/m32r/m32r.md: Ditto.
19078         * config/m32r/predicates.md: Ditto.
19079
19080 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
19081
19082         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
19083
19084 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
19085
19086         * doc/plugins.texi
19087         (Loading plugins): typo.
19088         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
19089         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19090         (Interacting with the GCC Garbage Collector): Added new section.
19091         (Giving information about a plugin): Added new section for
19092         PLUGIN_INFO.
19093         * ggc.h (ggc_register_root_tab): Added declaration.
19094         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
19095         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
19096         (register_callback): Improved comment in declaration.
19097         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
19098         (extra_root_vec) Added static variable for dynamic roots registration.
19099         (ggc_register_root_tab) Added new routine.
19100         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
19101         PLUGIN_GGC_MARKING event.
19102         * ggc-zone.c: Include plugin.h.
19103         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19104         * ggc-page.c: Include plugin.h.
19105         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
19106         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
19107         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
19108         (register_callback): check lack of callbacks for
19109         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
19110         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
19111         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
19112         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
19113         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
19114         dependency on plugin.h.
19115         (plugin.o): Added dependency on ggc.h...
19116
19117 2009-05-26  Richard Guenther  <rguenther@suse.de>
19118
19119         PR middle-end/40248
19120         Revert
19121         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19122         with mismatched comparison modes.
19123
19124         * expr.c (expand_expr_real_1): Expand the operand of a
19125         VIEW_CONVERT_EXPR in its natural mode.
19126
19127 2009-05-26  Ian Lance Taylor  <iant@google.com>
19128
19129         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
19130         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
19131         (ALL_COMPILERFLAGS): Define.
19132         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
19133         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
19134         (collect2$(exeext), collect2.o): Likewise.
19135         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
19136         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
19137         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
19138         (libbackend.o, intl.o, cppdefault.o): Likewise.
19139         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
19140         (build/%.o): Use $(COMPILER_FOR_BUILD).
19141         (build/gen%$(build_exeext)): Likewise.
19142         (build/gcov-iov$(build_exeext)): LIkewise.
19143         * config/t-darwin (darwin.o): Use $(COMPILER).
19144         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
19145         * config/t-sol2 (sol2-c.o): Likewise.
19146         (sol2.o): Likewise.
19147         * config/t-vxworks (vxworks.o): Likewise.
19148         * config/x-darwin (host-darwin.o): Likewise.
19149         * config/x-hpux (host-hpux.o): Likewise.
19150         * config/x-linux (host-linux.o): Likewise.
19151         * config/x-solaris (host-solaris.o): Likewise.
19152         * config/alpha/x-alpha (driver-alpha.o): Likewise.
19153         * config/arm/t-arm (arm-c.o): Likewise.
19154         * config/arm/t-pe (pe.o): Likewise.
19155         * config/arm/t-wince-pe (pe.o): Likewise.
19156         * config/i386/t-cygming (winnt.o): Likewise.
19157         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
19158         * config/i386/t-cygwin (cygwin1.o): Likewise.
19159         (cygwin2.o): Likewise.
19160         * config/i386/t-i386 (i386-c.o): Likewise.
19161         * config/i386/t-interix (winnt.o): Likewise.
19162         * config/i386/t-netware (netware.o): Likewise.
19163         * config/i386/t-nwld (nwld.o): Likewise.
19164         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
19165         * config/i386/x-i386 (driver-i386.o): Likewise.
19166         * config/i386/x-cygwin (host-cygwin.o): Likewise.
19167         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
19168         * config/ia64/t-ia64 (ia64-c.o): Likewise.
19169         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
19170         * config/mips/x-native (driver-native.o): Likewise.
19171         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
19172         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
19173         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
19174         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
19175         * config/score/t-score-elf (score7.o): Likewise.
19176         (score3.o): Likewise.
19177         * config/sh/t-sh (sh-c.o): Likewise.
19178         * config/sh/t-symbian (sh-c.o): Likewise.
19179         (symbian.o): Likewise.
19180         * config/spu/t-spu-elf (spu-c.o): Likewise.
19181         * config/v850/t-v850 (v850-c.o): Likewise.
19182         * config/v850/t-v850e (v850-c.o): Likewise.
19183
19184 2009-05-26  Richard Guenther  <rguenther@suse.de>
19185
19186         PR tree-optimization/40122
19187         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
19188         VECTOR_CSTs if possible.
19189         (fold_gimple_assign): Likewise.
19190
19191 2009-05-26  Richard Guenther  <rguenther@suse.de>
19192
19193         PR middle-end/40252
19194         * fold-const.c (fold_binary): Use the correct types for building
19195         rotates.
19196
19197 2009-05-26  Richard Guenther  <rguenther@suse.de>
19198
19199         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
19200         redundant calls to merge_alias_info.
19201         (bump_vector_ptr): Likewise.
19202         * tree-ssa-copy.c (merge_alias_info): Remove.
19203         (replace_exp_1): Remove call to merge_alias_info.
19204         (propagate_tree_value): Likewise.
19205         (fini_copy_prop): Propagate points-to info.
19206         * tree-flow.h (merge_alias_info): Remove.
19207
19208 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
19209
19210         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
19211
19212 2009-05-25  Jan Hubicka  <jh@suse.cz>
19213
19214         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
19215         * cgraph.h (struct inline_summary): New filed self_wize,
19216         size_inlining_benefit, self_time and time_inlining_benefit.
19217         (struct cgraph_global_info): Replace insns by time ans size fields.
19218         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
19219         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
19220         (ipcp_update_callgraph): Do not touch function bodies.
19221         * ipa-inline.c: Include except.h
19222         (MAX_TIME): New constant.
19223         (overall_insns): Remove.
19224         (leaf_node_p): New.
19225         (overall_size, max_benefit): New static variables.
19226         (cgraph_estimate_time_after_inlining): New function.
19227         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
19228         (cgraph_clone_inlined_nodes): Update size.
19229         (cgraph_mark_inline_edge): Update size.
19230         (cgraph_estimate_growth): Use size info.
19231         (cgraph_check_inline_limits): Check size.
19232         (cgraph_default_inline_p): Likewise.
19233         (cgraph_edge_badness): Compute badness based on benefit and size cost.
19234         (cgraph_decide_recursive_inlining): Check size.
19235         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
19236         and times.
19237         (cgraph_decide_inlining): Likewise.
19238         (cgraph_decide_inlining_incrementally): Likewise; honor
19239         PARAM_EARLY_INLINING_INSNS.
19240         (likely_eliminated_by_inlining_p): New predicate.
19241         (estimate_function_body_sizes): New function.
19242         (compute_inline_parameters): Use it.
19243         * except.c (must_not_throw_labels): New function.
19244         * except.h (must_not_throw_labels): Declare.
19245         * tree-inline.c (init_inline_once): Kill inlining_weigths
19246         * tree-ssa-structalias.c: Avoid uninitialized warning.
19247         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
19248         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
19249         (PARAM_INLINE_CALL_COST): Remove.
19250         (PARAM_EARLY_INLINING_INSNS): New.
19251
19252 2009-05-25  Richard Guenther  <rguenther@suse.de>
19253
19254         PR tree-optimization/36327
19255         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
19256         callback for reference translation or lookup at the point of may-defs.
19257         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
19258         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
19259         for union COMPONENT_REFs.
19260         (vn_reference_lookup_3): New callback.  Lookup from memset
19261         and CONSTRUCTOR assignment, translate through struct copies.
19262         (vn_reference_lookup_pieces): Make sure to not free the
19263         passed operands array.  Adjust walk_non_aliased_vuses call.
19264         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
19265         make sure we do not leak memory.
19266
19267 2009-05-25  Richard Guenther  <rguenther@suse.de>
19268
19269         * tree-ssa-alias.h (dump_points_to_solution): Declare.
19270         * tree-inline.c (expand_call_inline): Reset the escaped and
19271         callused solutions.
19272         * tree-ssa-structalias.c (pass_build_ealias): New.
19273         * tree-pass.h (pass_build_ealias): Declare.
19274         * passes.c (init_optimization_passes): Add PTA during
19275         early optimizations.
19276         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
19277         and CALLUSED solutions.
19278         (dump_points_to_solution): New function, split out from ...
19279         (dump_points_to_info_for): ... here.
19280         * tree-parloops.c (parallelize_loops): Reset the escaped and
19281         callused solutions.
19282
19283 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
19284
19285         PR bootstrap/40027
19286         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
19287         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
19288
19289 2009-05-25  Ira Rosen  <irar@il.ibm.com>
19290
19291         PR tree-optimization/40238
19292         * tree-vect-stmts.c (vect_init_vector): Insert initialization
19293         statements after basic block's labels.
19294         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
19295         to free the allocated memory.
19296
19297 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
19298
19299         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
19300         return address with a USE.
19301
19302 2009-05-24  Richard Guenther  <rguenther@suse.de>
19303
19304         PR middle-end/40233
19305         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
19306         array type from the main variant of the inner type.
19307
19308 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
19309
19310         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
19311         definition to bool (from int) to un-break build.
19312         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
19313
19314 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
19315
19316         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
19317         discard_stmt_changes): Delete.
19318         * tree-ssa-operands.c (scb_stack): Delete.
19319         (init_ssa_operands): Do not initialize it.
19320         (fini_ssa_operands): Do not free it.
19321         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
19322
19323         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
19324         update_stmt, remove the others.  Fix comments.
19325         * tree-dfa.c (optimize_stack_restore): Likewise.
19326         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
19327         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
19328         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
19329         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
19330         Likewise.
19331         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
19332         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
19333         (dom_opt_finalize_block): Likewise, adjusting access to
19334         stmts_to_rescan.
19335         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
19336         (stmts_to_rescan): Change item type to gimple.
19337         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
19338
19339 2009-05-24  Ira Rosen  <irar@il.ibm.com>
19340
19341         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
19342         * tree-pass.h (pass_slp_vectorize): New pass.
19343         * params.h (SLP_MAX_INSNS_IN_BB): Define.
19344         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
19345         * tree-vectorizer.c (timevar.h): Include.
19346         (user_vect_verbosity_level): Declare.
19347         (vect_location): Fix comment.
19348         (vect_set_verbosity_level): Update user_vect_verbosity_level
19349         instead of vect_verbosity_level.
19350         (vect_set_dump_settings): Add an argument. Ignore user defined
19351         verbosity if dump flags require higher level of verbosity. Print to
19352         stderr only for loop vectorization.
19353         (vectorize_loops): Update call to vect_set_dump_settings.
19354         (execute_vect_slp): New function.
19355         (gate_vect_slp): Likewise.
19356         (struct gimple_opt_pass pass_slp_vectorize): New.
19357         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
19358         access its members.
19359         (vec_info_for_bb): New function.
19360         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
19361         (VECTORIZATION_ENABLED): New macro.
19362         (SLP_ENABLED, SLP_DISABLED): Likewise.
19363         (vect_is_simple_use): Add bb_vec_info argument.
19364         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
19365         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
19366         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
19367         vect_schedule_slp, vect_analyze_slp): Likewise.
19368         (vect_analyze_stmt): Add slp_tree argument.
19369         (find_bb_location): Declare.
19370         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19371         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
19372         (vect_analyze_loop_operations, vect_analyze_loop,
19373         get_initial_def_for_induction, vect_create_epilog_for_reduction,
19374         vect_finalize_reduction, vectorizable_reduction,
19375         vectorizable_live_operation, vect_transform_loop): Likewise.
19376         * tree-data-ref.c (dr_analyze_innermost): Update comment,
19377         skip evolution analysis if analyzing a basic block.
19378         (dr_analyze_indices): Likewise.
19379         (initialize_data_dependence_relation): Skip the test whether the
19380         object is invariant for basic blocks.
19381         (compute_all_dependences): Skip dependence analysis for data
19382         references in basic blocks.
19383         (find_data_references_in_stmt): Don't fail in case of invariant
19384         access in basic block.
19385         (find_data_references_in_bb): New function.
19386         (find_data_references_in_loop): Move code to
19387         find_data_references_in_bb and add a call to it.
19388         (compute_data_dependences_for_bb): New function.
19389         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
19390         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
19391         that STEP is 0.
19392         (vect_analyze_data_ref_dependence): Check for interleaving in case of
19393         unknown dependence in basic block and fail in case of dependence in
19394         basic block.
19395         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
19396         dependence instances from either loop or basic block vectorization
19397         info.
19398         (vect_compute_data_ref_alignment): Check if it is loop vectorization
19399         before calling nested_in_vect_loop_p.
19400         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
19401         dependence instances from either loop or basic block vectorization
19402         info.
19403         (vect_verify_datarefs_alignment): Likewise.
19404         (vect_enhance_data_refs_alignment): Adjust function calls.
19405         (vect_analyze_data_refs_alignment): Likewise.
19406         (vect_analyze_group_access): Fix printing. Skip different checks if
19407         DR_STEP is 0. Keep strided stores either in loop or basic block
19408         vectorization data structure. Fix indentation.
19409         (vect_analyze_data_ref_access): Fix comments, allow zero step in
19410         basic blocks.
19411         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
19412         dependence instances from either loop or basic block vectorization
19413         info.
19414         (vect_analyze_data_refs): Update comment. Call
19415         compute_data_dependences_for_bb to analyze basic blocks.
19416         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
19417         case of loop vectorization. In case of basic block vectorization use
19418         data-ref itself as a base.
19419         (vect_create_data_ref_ptr): In case of basic block vectorization:
19420         don't advance the pointer, add new statements before the current
19421         statement.  Adjust function calls.
19422         (vect_supportable_dr_alignment): Support only aligned accesses in
19423         basic block vectorization.
19424         * common.opt (ftree-slp-vectorize): New flag.
19425         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
19426         (vect_pattern_recog_1): Likewise.
19427         * tree-vect-stmts.c (process_use): Likewise.
19428         (vect_init_vector): Add new statements in the beginning of the basic
19429         block in case of basic block SLP.
19430         (vect_get_vec_def_for_operand): Adjust function calls.
19431         (vect_finish_stmt_generation): Likewise.
19432         (vectorizable_call): Add assert that it is loop vectorization, adjust
19433         function calls.
19434         (vectorizable_conversion, vectorizable_assignment): Likewise.
19435         (vectorizable_operation): In case of basic block SLP, take
19436         vectorization factor from statement's type and skip the relevance
19437         check. Adjust function calls.
19438         (vectorizable_type_demotion): Add assert that it is loop
19439         vectorization, adjust function calls.
19440         (vectorizable_type_promotion): Likewise.
19441         (vectorizable_store): Check for outer loop only in case of loop
19442         vectorization. Adjust function calls. For basic blocks, skip the
19443         relevance check and don't advance pointers.
19444         (vectorizable_load): Likewise.
19445         (vectorizable_condition): Add assert that it is loop vectorization,
19446         adjust function calls.
19447         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
19448         that it is not reduction, get vector type, call only supported
19449         functions, skip loop specific parts.
19450         (vect_transform_stmt): Check for outer loop only in case of loop
19451         vectorization.
19452         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
19453         (vect_is_simple_use): Fix comment, add new argument, fix conditions
19454         for external definition.
19455         * passes.c (pass_slp_vectorize): New pass.
19456         * tree-vect-slp.c (find_bb_location): New function.
19457         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
19458         check for patterns only in loops.
19459         (vect_build_slp_tree): Add argument, adjust function calls, fail in
19460         case of multiple types in basic block SLP.
19461         (vect_mark_slp_stmts_relevant): New function.
19462         (vect_supported_load_permutation_p): Fix comment.
19463         (vect_analyze_slp_instance): Add argument. In case of basic block
19464         SLP, take vectorization factor from statement's type, check that
19465         unrolling factor is 1. Adjust function call. Save SLP instance in
19466         either loop or basic block vectorization structure. Return FALSE,
19467         if SLP failed.
19468         (vect_analyze_slp): Add argument. Get strided stores groups from
19469         either loop or basic block vectorization structure. Return FALSE
19470         if basic block SLP failed.
19471         (new_bb_vec_info): New function.
19472         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
19473         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
19474         (vect_schedule_slp): Add argument. Get SLP instances from either
19475         loop or basic block vectorization structure. Set vectorization factor
19476         to be 1 for basic block SLP.
19477         (vect_slp_transform_bb): New function.
19478         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
19479
19480 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
19481
19482         * final.c (shorten_branches): Do not align labels for jump tables.
19483         (final_scan_insn): Use JUMP_TABLE_DATA_P.
19484
19485 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
19486
19487         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
19488         Remove outdated reference to flow.c and fix nits.
19489         * doc/gccint.texi: Tweak RTL description.
19490         * doc/rtl.texi: Likewise.
19491
19492 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
19493
19494         * config/avr/avr.c: Change my email address.
19495         * config/avr/avr.h: Likewise.
19496         * config/avr/avr.md: Likewise.
19497         * config/avr/avr-protos.h: Likewise.
19498         * config/avr/libgcc.S: Likewise.
19499
19500 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
19501
19502         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
19503         (spu_split_load, spu_split_store): Change return type to int.
19504         (spu_split_convert): Declare.
19505         * config/spu/predicates.md (spu_mem_operand): Remove.
19506         (spu_mov_operand): Update.
19507         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
19508         * config/spu/spu.c (regno_aligned_for_load): Remove.
19509         (reg_aligned_for_addr, spu_expand_load): Define.
19510         (spu_expand_extv): Reimplement and handle MEM.
19511         (spu_expand_insv): Handle MEM.
19512         (spu_sched_reorder): Handle insn's with length 0.
19513         (spu_legitimate_address_p): Reimplement.
19514         (store_with_one_insn_p): Return TRUE for any mode with size
19515         larger than 16 bytes.
19516         (address_needs_split): Define.
19517         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
19518         operands.
19519         (spu_convert_move): Define.
19520         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
19521         (spu_split_store): Change all MEM's to TImode.
19522         (spu_init_expanders): Preallocate registers that correspond to
19523         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
19524         mark_reg_pointer.
19525         (spu_split_convert): Define.
19526         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
19527         (_move<mode>, _movdi, _movti): Update predicate and condition.
19528         (load, store): Change to define_split.
19529         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
19530         extend<mode>ti2.
19531         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
19532         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
19533         define_insn_and_split of lshr<mode>3.
19534         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
19535         (<v>ashr<mode>3_imm): Define.
19536         (extv, extzv, insv): Allow MEM operands.
19537         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
19538         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
19539         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
19540         (_spu_convert2): Change to define_insn_and_split and remove the
19541         corresponding define_peephole2.
19542         (stack_protect_set, stack_protect_test, stack_protect_test_si):
19543         Change predicates to memory_operand.
19544
19545 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19546
19547         * config/arm/thumb2.md: Add 16-bit multiply instructions.
19548
19549 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
19550
19551         PR tree-optimization/40219
19552         * tree.c (iterative_hash_expr): Make sure the builtin function is
19553         a normal builtin function and not a front end or back end builtin
19554         before indexing into the built_in_decls array.
19555
19556 2009-05-22  Richard Guenther  <rguenther@suse.de>
19557
19558         PR middle-end/38964
19559         * alias.c (write_dependence_p): Do not use TBAA for answering
19560         anti-dependence or output-dependence.
19561         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
19562         (emit_pointer_definition): Remove.
19563         (emit_alias_warning): Likewise.
19564         (find_what_var_points_to): Remove TBAA pruning code.
19565         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
19566         violations.
19567         (compute_points_to_sets): Remove code computing the set of
19568         dereferenced pointers.
19569         * tree-data-ref.c (dr_may_alias_p): Properly use the split
19570         oracle for querying anti and output dependencies.
19571         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
19572         if TBAA may be applied.
19573         (refs_anti_dependent_p): New function.
19574         (refs_output_dependent_p): Likewise.
19575         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
19576         (refs_output_dependent_p): Likewise.
19577         * doc/tree-ssa.texi (Memory model): New section.
19578         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19579         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19580         * cfgexpand.c (expand_gimple_basic_block): Do not handle
19581         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
19582         * expr.c (expand_expr_real_1): Likewise.
19583         * gimple-low.c (lower_stmt): Likewise.
19584         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
19585         (dump_gimple_cdt): Remove.
19586         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19587         (gimple_size): Likewise.
19588         (walk_gimple_op): Likewise.
19589         (is_gimple_stmt): Likewise.
19590         (walk_stmt_load_store_addr_ops): Likewise.
19591         (gimple_build_cdt): Remove.
19592         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
19593         * gimple.h (gimple_cdt_new_type): Remove.
19594         (gimple_cdt_new_type_ptr): Likewise.
19595         (gimple_cdt_set_new_type): Likewise.
19596         (gimple_cdt_location): Likewise.
19597         (gimple_cdt_location_ptr): Likewise.
19598         (gimple_cdt_set_location): Likewise.
19599         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19600         * tree-cfg.c (remove_useless_stmts_1): Do not handle
19601         GIMPLE_CHANGE_DYNAMIC_TYPE.
19602         (verify_types_in_gimple_stmt): Likewise.
19603         * tree-inline.c (estimate_num_insns): Likewise.
19604         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
19605         (copy_decl_to_var): Likewise.
19606         (copy_result_decl_to_var): Likewise.
19607         * tree-pretty-print.c (dump_generic_node): Do not handle
19608         CHANGE_DYNAMIC_TYPE_EXPR.
19609         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
19610         * tree-ssa-operands.c (get_expr_operands): Likewise.
19611         * tree-ssa-structalias.c (struct variable_info): Remove
19612         no_tbaa_pruning member.
19613         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
19614         (unify_nodes): Do not copy it.
19615         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
19616         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
19617         (set_uids_in_ptset): Do not check it.
19618         (find_what_var_points_to): Likewise.
19619         (compute_tbaa_pruning): Remove.
19620         (compute_points_to_sets): Do not call it.
19621         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
19622         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
19623         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
19624         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
19625         (DECL_NO_TBAA_P): Likewise.
19626         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
19627         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
19628         (expand_omp_atomic_pipeline): Do not set it.
19629         * print-tree.c (print_node): Do not dump it.
19630         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
19631         redundant check.
19632
19633 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
19634
19635         PR target/39856
19636         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
19637         for clobber.
19638
19639 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
19640
19641         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
19642         non-external.
19643
19644 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19645
19646         * Makefile.in (bversion.h, s-bversion): New targets.
19647         (TOPLEV_H): Add bversion.h.
19648         * toplev.h: Include "bversion.h".
19649         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
19650         the __format__ attribute only if compiling with the same version
19651         of GCC as the sources (the "build version").
19652
19653 2009-05-22  Ben Elliston  <bje@au.ibm.com>
19654
19655         * c-format.c (handle_format_attribute): Fix comment typo.
19656
19657 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
19658
19659         PR target/37846
19660         * config/ia64/ia64.opt (mfused-madd): New.
19661         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
19662         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
19663         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
19664         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
19665         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
19666         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
19667         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
19668         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
19669         instruction if !TARGET_FUSED_MADD.
19670         (fpma, fpms): Remove colon from name.
19671
19672 2009-05-22  Richard Guenther  <rguenther@suse.de>
19673
19674         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
19675         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
19676         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
19677         TARGET_MEM_REF.
19678         (create_expression_by_pieces): Only convert if necessary.
19679         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
19680         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
19681
19682 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
19683
19684         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
19685         regular pattern from a template and rename it ...
19686         (*extzv_truncsi_exts): ... to this.
19687
19688 2009-05-21  Richard Guenther  <rguenther@suse.de>
19689
19690         * cgraph.h (struct cgraph_node): Remove inline_decl member.
19691         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
19692         (cgraph_default_inline_p): Likewise.
19693         (cgraph_decide_inlining_incrementally): Likewise.
19694
19695 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
19696             Uros Bizjak  <ubizjak@gmail.com>
19697
19698         * config/i386/cpuid.h (bit_MOVBE): New.
19699
19700         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
19701
19702         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
19703         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
19704         (ix86_handle_option): Handle OPT_mmovbe.
19705         (ix86_target_string): Add -mmovbe.
19706         (pta_flags): Add PTA_MOVBE.
19707         (processor_alias_table): Add PTA_MOVBE to "atom".
19708         (override_options): Handle PTA_MOVBE.
19709
19710         * config/i386/i386.h (TARGET_MOVBE): New.
19711
19712         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
19713         (*bswapsi_movbe): New.
19714         (*bswapdi_movbe): Likewise.
19715         (bswapdi2): Renamed to ...
19716         (*bswapdi_1): This.
19717         (bswapdi2): New expander.
19718
19719         * config/i386/i386.opt (mmovbe): New.
19720
19721         * doc/invoke.texi: Document -mmovbe.
19722
19723 2009-05-21  Taras Glek  <tglek@mozilla.com>
19724
19725         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
19726         * gcc-plugin.h (plugin_init): Updated signature.
19727         * gcc-plugin.h (plugin_name_args): Moved to this header.
19728         * doc/plugins.texi (plugin_init): Updated documention to reflect
19729         API change.
19730         * doc/plugins.texi (plugin_name_args): Added to documention.
19731
19732 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
19733
19734         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
19735         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
19736
19737 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
19738
19739         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
19740         JUMP_TABLE_DATA_P predicates where applicable.
19741         * config/i386/predicates.md: Ditto.
19742         * config/i386/sse.md: Ditto.
19743
19744 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
19745
19746         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
19747         operand2 -128 override length_immediate attribute to 1.
19748         * config/i386/predicates.md (constm128_operand): New predicate.
19749
19750         * config/i386/i386.c (memory_address_length): Handle %r12
19751         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
19752         also check REGNO.
19753         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
19754         mode look through optional ZERO_EXTEND and SUBREG.
19755         * config/i386/i386.md (R12_REG): New define_constant.
19756         (prefix_data16): For sse unit set also for MODE_TI insns.
19757         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
19758         insns set if operand 1 is ext_QIreg_operand.
19759         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
19760         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
19761         immediate.
19762         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
19763         mode from MODE_DI to MODE_SI.
19764         (movdi_1_rex64): Override modrm and length_immediate attributes
19765         only for movabs (TYPE_IMOV, alternative 2).
19766         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
19767         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
19768         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
19769         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
19770         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
19771         prefix_rex attribute if DImode.
19772         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
19773         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
19774         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
19775         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
19776         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
19777         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
19778         Likewise.  For TYPE_IMOV clear length_immediate attribute.
19779         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
19780         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
19781         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
19782         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
19783         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
19784         or one operand TYPE_ISHIFT.
19785         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
19786         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
19787         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
19788         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
19789         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
19790         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
19791         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
19792         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
19793         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
19794         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
19795         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
19796         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
19797         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
19798         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
19799         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
19800         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
19801         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
19802         set mode attribute, don't override length attribute.
19803         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
19804         to 1.
19805         (return_internal_long): Set length attribute to 2 instead of 1.
19806         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
19807         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
19808         prefix_rex attribute.
19809         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
19810         New predicates.
19811         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
19812
19813 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19814
19815         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
19816
19817 2009-05-20  Ian Lance Taylor  <iant@google.com>
19818
19819         * tree.c (build_tree_list_vec_stat): New function.
19820         (ctor_to_vec): New function.
19821         (build_nt_call_vec): New function.
19822         (build_call_array): Change args to be a const pointer.
19823         (build_call_vec): New function.
19824         * tree.h (build_nt_call_vec): Declare.
19825         (build_tree_list_vec_stat): Declare.
19826         (build_tree_list_vec): Define.
19827         (build_call_array): Update declaration.
19828         (build_call_vec): Declare.
19829         (ctor_to_vec): Declare.
19830         * c-common.c (tree_vector_cache): New static variable.
19831         (make_tree_vector): New function.
19832         (release_tree_vector): New function.
19833         (make_tree_vector_single): New function.
19834         (make_tree_vector_copy): New function.
19835         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
19836         (make_tree_vector_single, make_tree_vector_copy): Declare.
19837         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
19838         (c_parser_expr_list): Don't manage cache here, instead call
19839         make_tree_vector.
19840         (c_parser_release_expr_list): Remove static function.
19841         (c_parser_vec_to_tree_list): Remove static function.
19842         (c_parser_attributes): Call build_tree_list_vec instead of
19843         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
19844         c_parser_release_expr_list.
19845         (c_parser_postfix_expression_after_primary): Likewise.
19846         (c_parser_objc_keywordexpr): Likewise.
19847
19848 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
19849
19850         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
19851         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
19852         TARGET_CONVERT_TO_TYPE.
19853         * hooks.c (hook_tree_const_tree_null): Define.
19854         * hooks.h (hook_tree_const_tree_null): Declare.
19855         * target.h (struct gcc_target):  Add invalid_parameter_type,
19856         invalid_return_type, promoted_type, and convert_to_type fields.
19857         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
19858         (TARGET_INVALID_RETURN_TYPE): Define.
19859         (TARGET_PROMOTED_TYPE): Define.
19860         (TARGET_CONVERT_TO_TYPE): Define.
19861         (TARGET_INITIALIZER): Update for new fields.
19862         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
19863         (grokparms): Check targetm.invalid_parameter_type.
19864         * c-typeck.c (default_conversion): Check targetm.promoted_type.
19865         * c-convert.c (convert): Check targetm.convert_to_type.
19866
19867 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
19868
19869         * config/mips/mips.md (*extenddi_truncate<mode>,
19870         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
19871         defintions.
19872         (*extendhi_truncateqi): New define_insn_and_sptit.
19873
19874 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
19875
19876         PR middle-end/40204
19877         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
19878         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
19879
19880 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
19881
19882         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
19883         the operand of VIEW_CONVERT_EXPR.
19884
19885 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
19886
19887         * config/i386/driver-i386.c (host_detect_local_cpu): Check
19888         extended family and model for Intel processors.  Support Intel Atom.
19889
19890 2009-05-20  Olivier Hainque  <hainque@adacore.com>
19891
19892         * gstab.h (stab_code_type): Define, to be used instead of the
19893         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
19894         notice.
19895         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
19896         occurrences by stab_code_type.
19897         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
19898
19899 2009-05-20  Martin Jambor  <mjambor@suse.cz>
19900
19901         * tree-flow.h (insert_edge_copies_seq): Undeclare.
19902         (sra_insert_before): Likewise.
19903         (sra_insert_after): Likewise.
19904         (sra_init_cache): Likewise.
19905         (sra_type_can_be_decomposed_p): Likewise.
19906         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
19907         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
19908         (sra_insert_before): Likewise.
19909         (sra_insert_after): Likewise.
19910         (sra_init_cache): Likewise.
19911         (insert_edge_copies_seq): Made static and moved upwards.
19912
19913         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
19914         case.
19915
19916         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
19917
19918         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
19919         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
19920         simple copies.
19921
19922 2009-05-20  Richard Guenther  <rguenther@suse.de>
19923
19924         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
19925         with mismatched comparison modes.
19926
19927 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19928
19929         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
19930         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
19931         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
19932         with shifts for Thumb2.
19933         (orsi_notsi): New for orn.
19934         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
19935         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
19936         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
19937         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
19938         Don't invert remainder for IOR.
19939
19940 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
19941
19942         PR tree-optimization/40087
19943         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
19944         number_of_iterations_ne): Rename never_infinite argument.
19945         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
19946         number_of_iterations_le): Handle pointer-type ivs when
19947         exit_must_be_taken is false.
19948         (number_of_iterations_cond):  Do not always assume that
19949         exit_must_be_taken if the control variable is a pointer.
19950
19951 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19952
19953         * c-typeck.c (build_binary_op): Allow % on integal vectors.
19954         * doc/extend.texi (Vector Extension): Document that % is allowed too.
19955
19956 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
19957
19958         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
19959         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
19960
19961 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
19962
19963         PR c/40172
19964         * c.opt (Wlogical-op): Disabled by default.
19965         * c-opt (c_common_post_options): Do not enable Wlogical-op with
19966         Wextra.
19967         * doc/invoke.texi (Wlogical-op): Likewise.
19968
19969 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
19970
19971         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
19972         into CASE_CONVERT.
19973         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
19974         Propagate the type of the first operand.
19975         <ASSERT_EXPR>: Simplify.
19976         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
19977         Rewrite using the RHS code as discriminant.
19978         <NOP_EXPR>: Turn into CASE_CONVERT.
19979         <PLUS_EXPR>: Propagate the type of the first operand.
19980
19981 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
19982
19983         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
19984         (ia64_dconst_0_375): New.
19985         * config/ia64/ia64.c (ia64_override_options): Remove
19986         -minline-sqrt-min-latency warning.
19987         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
19988         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
19989         * config/ia64/ia64.md (*sqrt_approx): Remove.
19990         (sqrtsf2): Remove #if 0.
19991         (sqrtsf2_internal_thr): Rewrite and move to div.md.
19992         (sqrtdf): Remove assert.
19993         (sqrtdf2_internal_thr): Rewrite and move to div.md.
19994         (sqrtxf2): Remove #if 0.
19995         (sqrtxf2_internal_thr): Rewrite and move to div.md.
19996         * div.md (sqrt_approx_rf): New.
19997         (sqrtsf2_internal_thr): New implementation.
19998         (sqrtsf2_internal_lat): New.
19999         (sqrtdf2_internal_thr: New implementation.
20000         (sqrtxf2_internal): New implementation.
20001
20002 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20003             Hans-Peter Nilsson  <hp@axis.com>
20004
20005         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
20006         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
20007         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
20008         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
20009         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
20010         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
20011         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
20012         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
20013         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
20014         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
20015         * c-common.c: ...from here.
20016
20017 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20018
20019         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
20020
20021 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20022
20023         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
20024
20025 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20026
20027         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
20028         assignments with memcpy calls.
20029         (add_fdes): Likewise.
20030         (binary_search_unencoded_fdes): Likewise.
20031         (linear_search_fdes): Eliminate type puns.
20032
20033 2009-05-19  Richard Guenther  <rguenther@suse.de>
20034
20035         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
20036         not falsely claim to have propagated into all uses.
20037
20038 2009-05-19  Ben Elliston  <bje@au.ibm.com>
20039
20040         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
20041         version to v3.0.
20042
20043 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20044
20045         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
20046         * config/sh/sh.c (sh_legitimate_address_p): Make static.
20047         (TARGET_LEGITIMATE_ADDRESS_P): New.
20048         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20049         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20050
20051 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
20052
20053         PR debug/40109
20054         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
20055         child of the containing namespace's DIE.
20056
20057 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
20058
20059         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
20060         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
20061         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
20062         extend patterns.
20063
20064 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
20065
20066         PR target/39942
20067         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
20068         gen_align with gen_pad.
20069         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
20070         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
20071
20072         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
20073         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
20074
20075         * config/i386/i386.md (align): Renamed to ...
20076         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
20077         ASM_OUTPUT_MAX_SKIP_PAD.
20078
20079 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
20080
20081         * config.gcc: Fix variable syntax.
20082
20083         PR target/39531
20084         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
20085         before calling exact_log2.
20086         (output_iorsi3): Likewise.
20087         (output_xorsi3): Likewise.
20088
20089 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
20090
20091         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
20092         for the none zero constant operand except for EQ and NE
20093         comprisons even when the first operand is R0.
20094
20095 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
20096
20097         * config/s390/2064.md: Remove trailing whitespaces.
20098         * config/s390/2084.md: Likewise.
20099         * config/s390/constraints.md: Likewise.
20100         * config/s390/fixdfdi.h: Likewise.
20101         * config/s390/libgcc-glibc.ver: Likewise.
20102         * config/s390/s390-modes.def: Likewise.
20103         * config/s390/s390-protos.h: Likewise.
20104         * config/s390/s390.c: Likewise.
20105         * config/s390/s390.h: Likewise.
20106         * config/s390/s390.md: Likewise.
20107         * config/s390/tpf-unwind.h: Likewise.
20108
20109 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20110
20111         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
20112
20113 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
20114
20115         M68K TLS support.
20116         * configure.ac (m68k-*-*): Check if binutils support TLS.
20117         * configure: Regenerate.
20118         * config/m68k/predicates.md (symbolic_operand): Extend comment.
20119         * config/m68k/constraints.md (Cu): New constraint.
20120         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
20121         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
20122         (movsi): Handle TLS symbols.
20123         (addsi3_5200): Handle XTLS symbols, indent.
20124         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
20125         (m68k_tls_reference_p): Declare.
20126         (m68k_legitimize_address): Declare.
20127         (m68k_unwrap_symbol): Declare.
20128         * config/m68k/m68k.opt (mxtls): New option.
20129         * config/m68k/m68k.c (ggc.h): Include.
20130         (m68k_output_dwarf_dtprel): Implement hook.
20131         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
20132         (m68k_expand_prologue): Load GOT pointer when function needs it.
20133         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
20134         (m68k_legitimate_constant_address_p): Same.
20135         (m68k_decompose_address): Handle TLS references.
20136         (m68k_get_gp): New static function.
20137         (enum m68k_reloc): New contants.
20138         (TLS_RELOC_P): New macro.
20139         (m68k_wrap_symbol): New static function.
20140         (m68k_unwrap_symbol): New function.
20141         (m68k_final_prescan_insn_1): New static function.
20142         (m68k_final_prescan_insn): New function.
20143         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
20144         functions.
20145         (legitimize_pic_address): Handle TLS references..
20146         (m68k_tls_get_addr, m68k_get_tls_get_addr)
20147         (m68k_libcall_value_in_a0_p)
20148         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
20149         (m68k_call_m68k_read_tp): Helper variables and functions for ...
20150         (m68k_legitimize_tls_address): Handle TLS references.
20151         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
20152         New functions.
20153         (m68k_legitimize_address): Handle TLS symbols.
20154         (m68k_get_reloc_decoration): New static function.
20155         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
20156         UNSPEC_RELOC32.
20157         (m68k_output_dwarf_dtprel): Implement hook.
20158         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
20159         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
20160         m68k_call_* routines.
20161         (sched_attr_op_type): Handle TLS symbols.
20162         (gt-m68k.h): Include.
20163         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
20164         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
20165
20166 2009-05-18  Martin Jambor  <mjambor@suse.cz>
20167
20168         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
20169         (visit_store_addr_for_mod_analysis): New function.
20170         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
20171         (determine_cst_member_ptr): Use gimple_assign_single_p.
20172         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
20173         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
20174         operands.  Don't check number of operands of a NOP_EXPR.
20175
20176 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
20177
20178         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
20179
20180 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20181
20182         PR c/40172
20183         * c-common.c (warn_logical_operator): Don't warn if one of
20184         expression isn't always true or false.
20185
20186 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
20187
20188         * config/i386/biarch32.h: New file.
20189         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
20190
20191 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
20192
20193         * config/mips/mips.md (*zero_extend<mode>_trunchi,
20194         *zero_extend<mode>_truncqi): Merge these into ...
20195         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
20196         Name the pattern following this as *zero_extendhi_truncqi.
20197
20198 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
20199
20200         PR middle-end/39301
20201         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
20202         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
20203         (output_info): Make field HOST_WIDEST_INT.
20204         (print_statistics): Use HOST_WIDEST_INT_PRINT.
20205         (dump_bitmat_statistics): Same.
20206
20207 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
20208
20209         * config.gcc (use_gcc_stdint):  Set to wrap.
20210         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
20211         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
20212         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
20213         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
20214         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
20215         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
20216         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
20217         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
20218
20219 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
20220
20221         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
20222         tune_64.
20223         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
20224         Move definitions earlier.
20225         (OPT_ARCH64, OPT_ARCH32): Define.
20226         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
20227         and tune_64.
20228
20229 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20230
20231         PR target/40153
20232         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
20233         implies.
20234
20235 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
20236
20237         * arm.md (movdi2): Copy non-reg values to DImode registers.
20238
20239 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
20240
20241         PR target/39942
20242         * final.c (label_to_max_skip): New function.
20243         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
20244         CODE_LABEL_NUMBER <= max_labelno.
20245         * output.h (label_to_max_skip): New prototype.
20246         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
20247         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
20248         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
20249         Handle CODE_LABELs with >= 16 byte alignment or with
20250         max_skip == (1 << align) - 1.
20251         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
20252         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
20253
20254         PR target/39942
20255         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
20256         .p2align 3 if MAX_SKIP is smaller than 7.
20257         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
20258
20259 2009-05-15  Ian Lance Taylor  <iant@google.com>
20260
20261         * alias.c (struct alias_set_entry_d): Rename from struct
20262         alias_set_entry.  Change all uses.
20263         * except.c (struct call_site_record_d): Rename from struct
20264         call_site_record.  Change all uses.
20265         * except.h (struct eh_region_d): Rename from struct eh_region.
20266         Change all uses.
20267         * gcse.c (struct hash_table_d): Rename from struct hash_table.
20268         Change all uses.
20269         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
20270         ivtype_map_elt.  Change all uses.
20271         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
20272         Change all uses.
20273         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
20274         * graphite.h (struct name_tree_d): Rename from struct name_tree.
20275         Change all uses.
20276         (struct sese_d): Rename from struct sese.  Change all uses.
20277         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
20278         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
20279         * optabs.h (struct optab_d): Rename from struct optab.  Change all
20280         uses.
20281         (struct convert_optab_d): Rename from struct convert_optab.
20282         Change all uses.
20283         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
20284         ipa_opt_pass.  Change all uses.
20285         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
20286         all uses.
20287
20288         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
20289         defined as a typedef.
20290         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
20291         defined as a tag.
20292
20293 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20294
20295         PR 16302
20296         * fold-const.c (make_range,build_range_check,merge_ranges): Move
20297         declaration to...
20298         (merge_ranges): Returns bool.
20299         * tree.h (make_range): .. to here.
20300         (build_range_check): Likewise.
20301         (merge_ranges): Likewise. Renamed from merge_ranges.
20302         * c-typeck.c (parser_build_binary_op): Update calls to
20303         warn_logical_operator.
20304         * c-common.c (warn_logical_operator): Add new warning.
20305         * c-common.h (warn_logical_operator): Update declaration.
20306
20307 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
20308
20309         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
20310
20311 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20312
20313         * doc/install.texi: Document MPC requirements, flags etc.
20314
20315         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
20316         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
20317         Evaluate constant arguments.
20318         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
20319         (fold_builtin_1): Likewise, also evaluate constant arguments.
20320         Remove superfluous break.
20321         (do_mpc_ckconv): New.
20322         * real.h: Include mpc.h.
20323         * toplev.c (print_version): Output MPC version info if available.
20324
20325 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20326
20327         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
20328
20329 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
20330
20331         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
20332         only once.
20333
20334 2009-05-15  Jan Hubicka  <jh@suse.cz>
20335
20336         * doc/invoke.texi (max-early-inliner-iterations): New flag.
20337         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
20338         (try_inline): Fix return value.
20339         (cgraph_decide_inlining_incrementally): Honor new value.
20340         (cgraph_early_inlining): Handle indirect inlining.
20341         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
20342
20343 2009-05-15  Jan Hubicka  <jh@suse.cz>
20344
20345         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
20346         * cgraphunit.c (cgraph_finalize_function): Set it.
20347         (cgraph_expand_function): Use it.
20348
20349 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20350
20351         * real.c (encode_ieee_half): Define.
20352         (decode_ieee_half): Define.
20353         (ieee_half_format): Define.
20354         (arm_half_format): Define.
20355         * real.h (ieee_half_format): Declare.
20356         (arm_half_format): Declare.
20357
20358 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
20359
20360         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
20361         swapped, and reversed optabs exist before trying to use them.
20362
20363 2009-05-15  Paul Brook  <paul@codesourcery.com>
20364             Sandra Loosemore  <sandra@codesourcery.com>
20365
20366         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
20367         loads.  Allow PRE_DEC.
20368         (output_move_neon): Handle PRE_DEC.
20369         (arm_print_operand): Add 'A' for neon structure loads.
20370         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
20371         * config/arm/neon.md (neon_mov): Update comment.
20372         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
20373         calls.
20374         (Um): New constraint.
20375
20376 2009-05-15  Jan Hubicka  <jh@suse.cz>
20377
20378         Revert the following patch until testsuite fallout is fixed:
20379         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20380         * cgraph.h (struct inline_summary): New filed self_wize,
20381         size_inlining_benefit, self_time and time_inlining_benefit.
20382         (struct cgraph_global_info): Replace insns by time ans size fields.
20383         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20384         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20385         (ipcp_update_callgraph): Do not touch function bodies.
20386         * ipa-inline.c: Include except.h
20387         (MAX_TIME): New constant.
20388         (overall_insns): Remove
20389         (overall_size, max_benefit): New static variables.
20390         (cgraph_estimate_time_after_inlining): New function.
20391         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20392         (cgraph_clone_inlined_nodes): Update size.
20393         (cgraph_mark_inline_edge): Update size.
20394         (cgraph_estimate_growth): Use size info.
20395         (cgraph_check_inline_limits): Check size.
20396         (cgraph_default_inline_p): Likewise.
20397         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20398         (cgraph_decide_recursive_inlining): Check size.
20399         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20400         and times.
20401         (cgraph_decide_inlining): Likewise.
20402         (cgraph_decide_inlining_incrementally): Likewise; honor
20403         PARAM_EARLY_INLINING_INSNS.
20404         (likely_eliminated_by_inlining_p): New predicate.
20405         (estimate_function_body_sizes): New function.
20406         (compute_inline_parameters): Use it.
20407         * except.c (must_not_throw_labels): New function.
20408         * except.h (must_not_throw_labels): Declare.
20409         * tree-inline.c (init_inline_once): Kill inlining_weigths
20410         * tree-ssa-structalias.c: Avoid uninitialized warning.
20411         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20412         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20413         (PARAM_INLINE_CALL_COST): Remove.
20414         (PARAM_EARLY_INLINING_INSNS): New.
20415
20416 2009-05-15  Richard Guenther  <rguenther@suse.de>
20417
20418         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
20419         not TODO_update_ssa.
20420
20421 2009-05-15  Richard Guenther  <rguenther@suse.de>
20422
20423         PR tree-optimization/39999
20424         * gimple.h (gimple_expr_type): Use the expression type looking
20425         through useless conversions.
20426         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
20427         (vn_nary_op_insert_stmt): Likewise.
20428         (simplify_binary_expression): Likewise.
20429
20430 2009-05-15  Richard Guenther  <rguenther@suse.de>
20431
20432         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20433         New options, enabled by default.
20434         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
20435         Document.
20436         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
20437         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
20438         * tree-ssa-structalias.c (gate_tree_pta): New function.
20439         (pass_build_alias): Use it.
20440
20441 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
20442
20443         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
20444         recurse on an invariant address if a conversion from a pointer
20445         type to a wider integer type is involved.
20446
20447 2009-05-15  Jan Hubicka  <jh@suse.cz>
20448
20449         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20450         * cgraph.h (struct inline_summary): New filed self_wize,
20451         size_inlining_benefit, self_time and time_inlining_benefit.
20452         (struct cgraph_global_info): Replace insns by time ans size fields.
20453         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20454         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20455         (ipcp_update_callgraph): Do not touch function bodies.
20456         * ipa-inline.c: Include except.h
20457         (MAX_TIME): New constant.
20458         (overall_insns): Remove
20459         (overall_size, max_benefit): New static variables.
20460         (cgraph_estimate_time_after_inlining): New function.
20461         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20462         (cgraph_clone_inlined_nodes): Update size.
20463         (cgraph_mark_inline_edge): Update size.
20464         (cgraph_estimate_growth): Use size info.
20465         (cgraph_check_inline_limits): Check size.
20466         (cgraph_default_inline_p): Likewise.
20467         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20468         (cgraph_decide_recursive_inlining): Check size.
20469         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20470         and times.
20471         (cgraph_decide_inlining): Likewise.
20472         (cgraph_decide_inlining_incrementally): Likewise; honor
20473         PARAM_EARLY_INLINING_INSNS.
20474         (likely_eliminated_by_inlining_p): New predicate.
20475         (estimate_function_body_sizes): New function.
20476         (compute_inline_parameters): Use it.
20477         * except.c (must_not_throw_labels): New function.
20478         * except.h (must_not_throw_labels): Declare.
20479         * tree-inline.c (init_inline_once): Kill inlining_weigths
20480         * tree-ssa-structalias.c: Avoid uninitialized warning.
20481         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20482         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20483         (PARAM_INLINE_CALL_COST): Remove.
20484         (PARAM_EARLY_INLINING_INSNS): New.
20485         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
20486         (inline-call-cost): Remove.
20487         (early-inlining-insns): New.
20488
20489 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
20490
20491         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
20492         for bounds.
20493         (print_int_cst_bounds_in_octal_p): Likewise.
20494         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
20495         with subtypes.
20496         * dwarf2out.c (base_type_die): Likewise.
20497         (is_subrange_type): Delete.
20498         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
20499         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
20500         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
20501         if the destination type is boolean.
20502         (build_range_check): Do not special-case subtypes.
20503         (fold_sign_changed_comparison): Likewise.
20504         (fold_unary): Likewise.
20505         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
20506         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
20507         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
20508         * tree.c (subrange_type_for_debug_p): New predicate based on the
20509         former is_subrange_type.
20510         * tree.h (subrange_type_for_debug_p): Declare.
20511         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
20512         (convert_affine_scev): Remove call to above function.
20513         (chrec_convert_aggressive): Likewise.
20514         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
20515         false for conversions involving subtypes.
20516         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
20517         (vrp_val_min): Likewise.
20518         (needs_overflow_infinity): Likewise.
20519         (extract_range_from_unary_expr): Likewise.
20520
20521 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
20522
20523         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
20524         * config/frv/frv.c: Likewise.
20525         * config/s390/s390.c: Likewise.
20526         * config/sparc/sparc.h: Likewise.
20527         * config/i386/i386.h: Likewise.
20528         * config/i386/i386.c: Likewise.
20529         * config/crx/crx.c: Likewise.
20530         * config/m68hc11/m68hc11.h: Likewise.
20531         * config/iq2000/iq2000.c: Likewise.
20532         * config/mn10300/mn10300.h: Likewise.
20533         * config/mn10300/mn10300.c: Likewise.
20534         * config/m68k/m68k.c: Likewise.
20535         * config/rs6000/rs6000.c: Likewise.
20536         * config/rs6000/xcoff.h: Likewise.
20537         * config/rs6000/linux64.h: Likewise.
20538         * config/rs6000/sysv4.h: Likewise.
20539         * config/score/score3.c: Likewise.
20540         * config/score/score7.c: Likewise.
20541         * config/score/score.c: Likewise.
20542         * config/arm/arm.md: Likewise.
20543         * config/mips/mips.c: Likewise.
20544         * config/mips/mips.md: Likewise.
20545         * config/bfin/bfin.h: Likewise.
20546         * config/pa/pa.c: Likewise.
20547         * config/pa/constraints.md: Likewise.
20548
20549         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
20550         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
20551         * config/pdp11/pdp11.h: Use memory_address_p instead.
20552
20553 2009-05-14  Ian Lance Taylor  <iant@google.com>
20554
20555         * passes.c (finish_optimization_passes): Change i to int.
20556         * plugin.c (plugins_active_p): Change event to int.
20557         (dump_active_plugins): Likewise.
20558         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
20559         Add cast.
20560         * tree.c (tree_range_check_failed): Change c to unsigned int.
20561         (omp_clause_range_check_failed): Likewise.
20562         (build_common_builtin_nodes): Change mode to int.  Add cast.
20563         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
20564         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
20565
20566         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
20567         ++ or -- with a variable of enum type.
20568
20569 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20570
20571         PR driver/40144
20572         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
20573
20574 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20575
20576         * store-motion.c: Do not include params.h
20577         * Makefile.in: Fix dependencies for various files.
20578
20579 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
20580
20581         * auto-inc-dec.c: Fix pass description, remove apparent
20582         accidental duplication.
20583
20584 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
20585
20586         PR middle-end/40147
20587         * ipa-utils.h (memory_identifier_string): Moved to ...
20588         * tree.h (memory_identifier_string): Here.  Add GTY(()).
20589
20590 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20591
20592         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
20593         in the former documentation of...
20594         (GO_IF_LEGITIMATE_ADDRESS): ... this.
20595         * ira-conflicts.c (get_dup_num): Use address_operand.
20596         * targhooks.c (default_legitimate_address_p): New.
20597         * targhooks.h (default_legitimate_address_p): New.
20598         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
20599         Call hook.
20600         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
20601         * target.h (struct target): Add legitimate_address_p.
20602         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
20603         (TARGET_INITIALIZER): Include it.
20604
20605         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20606         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
20607         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
20608         (TARGET_LEGITIMATE_ADDRESS_P): New.
20609
20610         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20611         (REG_OK_STRICT_P): Delete.
20612         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
20613         (frv_legitimate_address_p_1): ... this.
20614         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
20615         (frv_legitimate_address_p_1): ... the renamed old
20616         frv_legitimate_address_p.
20617         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
20618         (TARGET_LEGITIMATE_ADDRESS_P): New.
20619
20620         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20621         * config/s390/s390-protos.h (legitimate_address_p): Remove.
20622         * config/s390/s390.c (legitimate_address_p): Rename to...
20623         (s390_legitimate_address_p): ... this, make static.
20624         (legitimize_address): Adjust call.
20625         (TARGET_LEGITIMATE_ADDRESS_P): New.
20626         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
20627
20628         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20629         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
20630         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
20631         (TARGET_LEGITIMATE_ADDRESS_P): New.
20632
20633         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20634         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
20635         * config/spu/spu.c (spu_legitimate_address): Rename to...
20636         (spu_legitimate_address_p): ... this, make static.
20637         (TARGET_LEGITIMATE_ADDRESS_P): New.
20638
20639         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20640         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
20641         * config/sparc/sparc.c (legitimate_address_p): Rename to...
20642         (sparc_legitimate_address_p): ... this, make static and return bool.
20643         (legitimize_address): Adjust call.
20644         (TARGET_LEGITIMATE_ADDRESS_P): New.
20645
20646         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20647         * config/i386/i386-protos.h (legitimate_address_p): Remove.
20648         * config/i386/i386.c (legitimate_address_p): Rename to...
20649         (ix86_legitimate_address_p): ... this, make static.
20650         (constant_address_p): Move after it, adjust call.
20651         (TARGET_LEGITIMATE_ADDRESS_P): New.
20652
20653         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20654         * config/avr/avr-protos.h (legitimate_address_p): Remove.
20655         * config/avr/avr.c (legitimate_address_p): Rename to...
20656         (avr_legitimate_address_p): ... this, make static.
20657         (legitimize_address): Adjust call.
20658         (TARGET_LEGITIMATE_ADDRESS_P): New.
20659
20660         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20661         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
20662         * config/crx/crx.c (crx_legitimate_address_p): Make static.
20663         (TARGET_LEGITIMATE_ADDRESS_P): New.
20664
20665         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20666         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
20667         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
20668         (TARGET_LEGITIMATE_ADDRESS_P): New.
20669
20670         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20671         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
20672         Remove.
20673         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
20674         Make static.
20675         (TARGET_LEGITIMATE_ADDRESS_P): New.
20676
20677         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20678         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
20679         Remove.
20680         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
20681         Rename to...
20682         (m68hc11_legitimate_address_p): ... this, make static.
20683         (go_if_legitimate_address_internal): Rename to...
20684         (m68hc11_legitimate_address_p_1): ... this.
20685         (legitimize_address): Adjust call.
20686         (TARGET_LEGITIMATE_ADDRESS_P): New.
20687
20688         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20689         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
20690         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
20691         (TARGET_LEGITIMATE_ADDRESS_P): New.
20692
20693         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20694         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
20695         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
20696         (mn10300_legitimate_address_p): ... this, make static.
20697         (TARGET_LEGITIMATE_ADDRESS_P): New.
20698
20699         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20700         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
20701         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
20702         (TARGET_LEGITIMATE_ADDRESS_P): New.
20703
20704         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20705         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
20706         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
20707         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20708         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
20709         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
20710         (rs6000_legitimate_address_p): ... this, make static.
20711         (TARGET_LEGITIMATE_ADDRESS_P): New.
20712         (REG_MODE_OK_FOR_BASE_P): Delete.
20713         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
20714
20715         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20716         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
20717         Delete.
20718         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
20719         static, adjust types.
20720         (TARGET_LEGITIMATE_ADDRESS_P): New.
20721
20722         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20723         * config/score/score.c (score_address_p): Rename to...
20724         (score_legitimate_address_p): ... this.
20725         (TARGET_LEGITIMATE_ADDRESS_P): New.
20726         * config/score/score3.c (score3_address_p): Rename to...
20727         (score3_legitimate_address_p): ... this.
20728         * config/score/score7.c (score7_address_p): Rename to...
20729         (score7_legitimate_address_p): ... this.
20730
20731         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
20732         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
20733         GO_IF_LEGITIMATE_ADDRESS): Delete.
20734         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
20735         thumb2_legitimate_address_p): Delete.
20736         (arm_legitimate_address_p): Rename to...
20737         (arm_legitimate_address_outer_p): ... this.
20738         * config/arm/constraints.md ("Uq"): Adjust call.
20739         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
20740         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
20741         to...
20742         (arm_legitimate_address_outer_p): ... this.
20743         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
20744         static.
20745         (TARGET_LEGITIMATE_ADDRESS_P): New.
20746
20747         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20748         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
20749         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
20750         (TARGET_LEGITIMATE_ADDRESS_P): New.
20751
20752         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20753         * config/vax/vax-protos.h (legitimate_address_p): Remove.
20754         * config/vax/vax.c (legitimate_address_p): Rename to...
20755         (vax_legitimate_address_p): ... this, make static.
20756         (TARGET_LEGITIMATE_ADDRESS_P): New.
20757
20758         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20759         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
20760         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
20761         (TARGET_LEGITIMATE_ADDRESS_P): New.
20762
20763         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20764         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
20765         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
20766         (mmix_legitimate_address_p): ... this, make static.
20767         (TARGET_LEGITIMATE_ADDRESS_P): New.
20768
20769         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
20770         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
20771         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
20772         (TARGET_LEGITIMATE_ADDRESS_P): New.
20773
20774 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
20775
20776         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
20777         of MODE_COMPLEX_INT.
20778
20779 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20780
20781         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
20782         LCT_NORMAL in function call.
20783         * mips-tdump.c (print_file_desc): Add cast to enum type.
20784         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
20785         (mark_stabs): Add casts to enum types.
20786         (parse_stabs_common): Add casts to enum types.
20787
20788 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20789
20790         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
20791         Check for invalid values of LETTER.
20792
20793 2009-05-13  Taras Glek  <tglek@mozilla.com>
20794
20795         * attribs.c (register_attribute): moved out attribute registration
20796         into register_attribute.
20797         * doc/plugins.texi: Documented register_attribute and
20798         PLUGIN_ATTRIBUTES.
20799         * gcc-plugin.h: Added forward decl for register_attribute.
20800         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
20801         * plugin.c (register_callback, invoke_plugin_callbacks): Added
20802         PLUGIN_ATTRIBUTES boilerplate.
20803
20804 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
20805
20806         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
20807         values even in sentinel and empty entries.
20808         (ms_printf_flag_specs):  Likewise.
20809         (ms_scanf_flag_specs):  Likewise.
20810         (ms_strftime_flag_specs):  Likewise.
20811         (ms_print_char_table):  Likewise.
20812         (ms_scan_char_table):  Likewise.
20813         (ms_time_char_table):  Likewise.
20814
20815 2009-05-13  Doug Kwan  <dougkwan@google.com>
20816
20817         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
20818
20819 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
20820
20821         * config/mips/mips.md (store): Add attributes for QI and HI.
20822         Update comment.
20823         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
20824         (truncdi<mode>2): ... this new pattern.
20825
20826 2009-05-13  Brad Hards  <bradh@kde.org>
20827
20828         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
20829
20830 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
20831             Ben Elliston <bje@au.ibm.com>
20832
20833         PR middle-end/40035
20834         * dse.c (check_mem_read_rtx): Guard against width == -1.
20835
20836 2009-05-13  Michael Matz  <matz@suse.de>
20837
20838         PR middle-end/39976
20839         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
20840         (trivially_conflicts_p): New function.
20841         (insert_backedge_copies): Use it.
20842
20843 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
20844
20845         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
20846         (handle_stdc_pragma): Use new enum constant names.
20847         (handle_pragma_float_const_decimal64): Ditto.
20848
20849 2009-05-13  Ian Lance Taylor  <iant@google.com>
20850
20851         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
20852         tree.def.
20853
20854 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
20855
20856         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
20857         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
20858         multilibs.
20859         * config/m68k/m68k.h (FL_UCLINUX): Define.
20860
20861 2009-05-13  Jan Hubicka  <jh@suse.cz>
20862
20863         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
20864
20865 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20866
20867         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
20868         unless -fschedule-insns is specified.
20869
20870 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20871
20872         PR target/39561
20873         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
20874         TARGET_EXPAND_CBRANCHDI4.
20875         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
20876         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
20877         (cmpeqdi): Fix comment.
20878
20879 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
20880
20881         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
20882         (sh_legitimate_address_p): Likewise.
20883         * config/sh/sh.c (sh_legitimate_index_p): New.
20884         (sh_legitimate_address_p): Likewise.
20885         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
20886         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
20887         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
20888         (MAYBE_BASE_REGISTER_RTX_P): New macro.
20889         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
20890         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
20891         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
20892         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
20893         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
20894
20895 2009-05-12  Jan Hubicka  <jh@suse.cz>
20896
20897         * tree-inline.c (estimate_operator_cost): Add operands;
20898         when division happens by constant, it is cheap.
20899         (estimate_num_insns): Loads and stores are not having cost of 0;
20900         EH magic stuff is cheap; when computing runtime cost of switch,
20901         use log2 base of amount of its cases; builtin_expect has cost of 0;
20902         compute cost for moving return value of call.
20903         (init_inline_once): Initialize time_based flags.
20904         * tree-inline.h (eni_weights_d): Add time_based flag.
20905
20906 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20907
20908         * df-core.c: Update head documentation.
20909
20910 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
20911
20912         PR bootstrap/40118
20913         * rs6000.c (rs6000_generate_compare): Use op1b instead of
20914         shadowing exisiting variable op1.
20915
20916 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
20917
20918         PR target/37179
20919         * config/i386/driver-i386.c (processor_signatures): New enum.
20920         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
20921         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
20922         processor signature to detect geode processor.
20923
20924 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20925
20926         Revert:
20927
20928         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20929
20930         * optabs.c (prepare_cmp_insn): Temporarily disable test that
20931         causes spurious differences between trunk and cond-optab branch.
20932
20933 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
20934
20935         * dojump.c (compare_from_rtx): Delete.
20936         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
20937         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
20938         if the comparison does not satisfy the predicate; test predicates for
20939         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
20940         further if one existing pattern fails.
20941         * expr.h (compare_from_rtx): Delete.
20942         (prepare_operand): Declare it.
20943         * optabs.c: Change "lib call" to "libcall" throughout.
20944         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
20945         HAVE_conditional_trap, emit_cmp_insn): Delete.
20946         (can_compare_p): Delete cmp_optab case.
20947         (prepare_float_lib_cmp): Return an rtx and a machine mode.
20948         Accept other parameters by value.
20949         (prepare_operand): Make non-static.
20950         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
20951         other parameters by value.  Try to widen operands here based on
20952         an optab_methods argument and looking at cbranch_optab.
20953         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
20954         loop.  Use cbranch_optab directly.
20955         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
20956         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
20957         assertion.
20958         (emit_conditional_move, emit_conditional_add): Inline what's needed
20959         of compare_from_rtx, using new prepare_cmp_insn for the rest.
20960         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
20961         with COMPARE.  Move cmov_optab and cstore_optab above
20962         with cbranch_optab, move cmp_optab down with ucmp_optab,
20963         remove tst_otpab.  Do not initialize trap_rtx.
20964         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
20965         for trap code.  Do not check HAVE_conditional_trap.  Use
20966         prepare_cmp_insn.  Accept no predicate for operand 3.
20967         * optabs.h (OTI_cmp): Mark as used only for libcalls.
20968         (OTI_ctrap, ctrap_optab): New.
20969         (tst_optab): Delete.
20970         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
20971         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
20972         with lookup of ctrap_optab.
20973         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
20974         Delete.
20975         (ctrap_optab): New.
20976
20977         * combine.c (combine_simplify_rtx, simplify_set): Do not
20978         special case comparing against zero for cc0 machines.
20979         * simplify-rtx.c (simplify_binary_operation_1): Never remove
20980         COMPARE on cc0 machines.
20981         (simplify_relational_operation): Return a new expression when
20982         a COMPARE could be removed.
20983         * final.c (final_scan_insn): Compare cc_status values
20984         against LHS of a (compare FOO (const_int 0)) cc0 source.
20985         Also check if cc_status.value is the full compare.
20986
20987         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
20988         (cstoreMM4): Document.
20989         (conditional_trap): Document ctrapMM4 instead.
20990         (sync_compare_and_swapMM): Refer to cbranchcc4.
20991         (Dependent Patterns): Eliminate obsolete information referring to
20992         the old jump optimization phase.
20993         (Canonicalization): Include cbranchcc4 case, omit canonicalization
20994         of compares with 0 on cc0 machines.
20995         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
20996         avoiding references to cc0.  Remove text about storing operands
20997         in cmpMM.
20998         * doc/tm.texi (Condition Codes): Include blurb on different
20999         condition code representations, separate into subsections for
21000         CC0, MODE_CC and conditional execution.
21001
21002         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
21003         alpha_emit_setcc): Accept operands and a machine mode.
21004         * config/alpha/alpha.c (alpha_emit_conditional_branch):
21005         Get code/op0/op1 from operands, use machine mode argument
21006         instead of alpha_compare.fp_p.  Emit the branch here.
21007         (alpha_emit_setcc): Likewise, and return boolean.
21008         (alpha_emit_conditional_move): Likewise.  Assert that
21009         cmp_op_mode == cmp_mode, and simplify accordingly.
21010         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
21011         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
21012         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
21013         Delete.
21014         (stack probe test): Use cbranchdi4.
21015         * config/alpha/predicates.md (alpha_cbranch_operator): New.
21016
21017         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
21018         * config/arc/arc.h (movsicc, movsfcc): Use it.
21019         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
21020         (cbranchsi4, cstoresi4): New.
21021         (cmpsi, bCC and sCC expanders): Remove.
21022
21023         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
21024         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
21025         * config/arm/predicates.md (arm_comparison_operator): Only include
21026         floating-point operators if there is a hardware floating-point unit.
21027         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
21028         deferring to cbranch_cc and cstore_cc respectively.
21029         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
21030         cbranch_cc, cstore_cc): New.
21031         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
21032         arm_compare_op1.
21033         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
21034
21035         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
21036         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
21037         as an argument.
21038         (adjust_insn_length): Adjust calls.
21039         (avr_reorg): Handle (compare (foo) (const_int 0)).
21040         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
21041         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
21042         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
21043         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
21044         (bCC): Remove.
21045         (cbranchqi4, cbranchhi4, cbranchsi4): New.
21046         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
21047
21048         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
21049         (cbranchsi4, cstorebi4, cstoresi4): New.
21050         (movbisi): This insn is duplicate, split it to zero_extend.
21051         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
21052         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
21053         (bfin_optimize_loop): Use cbranch expander.
21054         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
21055         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
21056         (bfin_bimode_comparison_operator): ... this.
21057         (bfin_direct_comparison_operator): New.
21058
21059         * config/cris/cris.c (cris_normal_notice_update_cc): Look
21060         inside (compare FOO (const_int 0)).
21061         (cris_rtx_costs): Handle ZERO_EXTRACT.
21062         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
21063         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
21064         (*tstdi_v32): Delete.
21065         (*cmpdi_non_v32): Add M alternative for operand 1.
21066         (cmpsi, cmp<mode>): Make private.
21067         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
21068         with COMPARE.
21069         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
21070
21071         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
21072         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
21073         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
21074         (cc_reg_operand): New.
21075         (any_cond): Delete.
21076         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
21077         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
21078         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
21079         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
21080         crx_expand_scond): Delete.
21081
21082         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
21083         (cbranchsi4): New.
21084         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
21085         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
21086
21087         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
21088         cstoresi4, cstoresf4, cstoredf4): New.
21089         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
21090         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21091         Receive the entire operands array.
21092         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
21093         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
21094         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
21095         Get test/op0/op1 from the operands array.
21096         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
21097
21098         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
21099         (h8300_expand_store): New.
21100         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
21101         (const_int 0)).
21102         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
21103         (h8300_expand_store): New.
21104         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
21105         or do not try to produce (set (cc0) REG).
21106         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
21107         change a compare into a move to a scratch register.  Disable some
21108         peepholes when comparing with zero.
21109         (tstsi, tsthi, tstsi, cmpqi): Make private.
21110         (cmphi): Delete.
21111         (bCC, sCC): Delete.
21112         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
21113         cstoresi4): New.
21114
21115         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
21116         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
21117         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
21118         (ix86_emit_i387_log1p): Use cbranchxf2.
21119         (ix86_expand_setcc): Return void.
21120         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
21121         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
21122         cmp<MODEF>, cmpcc): Remove.
21123         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
21124         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
21125         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
21126         (sCC and bCC expanders): Remove.
21127         (stack_protect_test): Use cbranchcc4.
21128
21129         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
21130         Delete.
21131         (ia64_expand_compare): Accept three rtx by reference and return void.
21132         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
21133         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
21134         from *expr.  Update *expr with the BImode comparison to do.
21135         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
21136         cmptf, bCC, sCC, conditional_trap): Delete.
21137         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
21138         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
21139         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
21140         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
21141         * config/ia64/predicates.md (ia64_cbranch_operator): New.
21142
21143         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
21144         type of last argument.
21145         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
21146         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
21147         use machine mode argument instead of branch_type.  Remove dead
21148         code for floating-point comparisons.
21149         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
21150         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
21151         Remove.
21152         (cbranchsi4, cstoresi4): New.
21153         * config/iq2000/predicates.md (reg_or_const_operand): New.
21154
21155         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
21156         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
21157         (b<code>_op): Rewrite to...
21158         (bcc_op): ... this, using match_operator.
21159         (s<code>_op): Rewrite to...
21160         (scc_op): ... this, using match_operator.
21161         (s<code>_24_op): Rewrite to...
21162         (scc_op_24): ... this, using match_operator.
21163         (s<code>_<mode>): Rewrite to...
21164         (cstore<mode>4): ... this, using match_operator.
21165         (s<code>_<mode>_24): Rewrite to...
21166         (cstore<mode>4_24): ... this, using match_operator.
21167         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
21168         m32c_unpend_compare, m32c_expand_scc): Delete.
21169         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
21170         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
21171         (m32c_expand_movcc): Change NE to EQ if necessary.
21172         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
21173
21174         * config/m32r/m32r-protos.h (gen_cond_store): New.
21175         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
21176         (gen_cond_store): New, from sCC patterns.
21177         (m32r_expand_block_move): Use cbranchsi4.
21178         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
21179         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
21180         (cbranchsi4, cstoresi4): New.
21181
21182         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
21183         Delete.
21184         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
21185         (m68hc11_notice_update_cc): Look into a compare with 0.
21186         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
21187         Delete.
21188         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
21189         cmphi, cmpqi, bCC): Delete.
21190         (cbranchsi4, cbranchhi4, cbranchqi4): New.
21191         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
21192         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
21193         sets with COMPARE.
21194
21195         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
21196         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
21197         * config/m68k/constraints.md (H): New.
21198         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
21199         the define_insn below.
21200         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
21201         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
21202         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
21203         patterns): Wrap RHS with COMPARE.
21204         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
21205         (*cmpdi_internal): Name this pattern.
21206         (cmpdi): Change to define_insn.
21207         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
21208         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
21209         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
21210         predicate.
21211         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
21212         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
21213         (conditional_trap): Change to...
21214         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
21215         (*conditional_trap): Use the ordered_comparison_operator and
21216         const1_operand predicates.
21217         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
21218         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
21219         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
21220         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
21221
21222         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
21223         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
21224         (mcore_gen_compare): New.
21225         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
21226         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
21227         (mcore_gen_compare): ... this.
21228         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
21229         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
21230         (stack probe pattern): Use cbranchsi4.
21231
21232         * config/mips/predicates.md (mips_cstore_operator): New.
21233         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
21234         * config/mips/mips.md (any_cond): Delete.
21235         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
21236         always succeed.
21237         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
21238         fixuns_truncsfdi2): Use cbranch patterns.
21239         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
21240         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
21241         Adjust call to mips_expand_conditional_branch.
21242         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
21243         cstore<GPR:mode>4.
21244         * config/mips/mips-protos.h (mips_expand_conditional_branch,
21245         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
21246         * config/mips/mips.c (cmp_operands): Delete.
21247         (mips_emit_compare): Get comparison operands from *op0/*op1.
21248         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
21249         that it succeeds.  Use op0/op1 instead of cmp_operands.
21250         (mips_expand_conditional_branch, mips_expand_conditional_move,
21251         mips_expand_conditional_trap): Likewise.
21252         (mips_block_move_loop): Use cbranch patterns.
21253         * config/mips/mips.h (cmp_operands): Delete.
21254
21255         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
21256         (mmix_gen_compare_reg): Just return a register in the right CC mode.
21257         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
21258         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
21259         (*cmpcc_folded): Rename to...
21260         (*cmpdi_folded): this.
21261         (*cmpcc): Rename to...
21262         (*cmps): ... this.
21263         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
21264         (bCC): Remove.
21265         (cbranchdi4): New.
21266         (cbranchdf4): New.  Handle invalid comparisons here.
21267         * config/mmix/predicates.md (float_comparison_operator): New.
21268
21269         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
21270         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
21271         * config/mn10300/mn10300.md (tst): Delete.
21272         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
21273         Name these patterns and wrap RHS in a compare.
21274         (*cmpsi): Make this pattern private.  Include tst.
21275         (*cmpsf): Make this pattern private.
21276         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
21277         (compare with zero peepholes): Likewise.
21278         (bCC): Remove.
21279         (cbranchsi4, cbranchsf4): New.
21280         (casesi): Use cbranchsi4.
21281
21282         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
21283         hppa_branch_type): Delete.
21284         (return_addr_rtx): Use cbranchsi4.
21285         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
21286         Emit CCFPmode comparison here.
21287         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
21288         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
21289         hppa_branch_type): Delete.
21290         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
21291         (movsicc, movdicc): Remove references to hppa_compare_op0,
21292         hppa_compare_op1 and compare_from_rtx.
21293         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
21294         (casesi): Use cbranchsi4.
21295
21296         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
21297         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
21298         * config/pdp11/pdp11.md (register_or_const0_operand): New.
21299         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
21300         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
21301         (bCC): Delete.
21302         (cbranchdf4, cbranchhi4, cbranchqi4): New.
21303         (*branch, *branch_inverted): New.
21304
21305         * config/picochip/picochip.md (cbranchhi4): Use
21306         ordered_comparison_operator.
21307         (cmphi, bCC): Remove.
21308
21309         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
21310         (trap_comparison_operator): Delete.
21311         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
21312         rs6000_emit_cbranch): Accept mode and operands.
21313         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
21314         rs6000_compare_fp_p): Delete.
21315         (rs6000_generate_compare): Accept mode and comparison.  Extract code
21316         and op0/op1 from there.  Replace references to rs6000_compare_op0
21317         and rs6000_compare_op1.
21318         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
21319         extract result from passed operands.
21320         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
21321         extract loc from passed operands.
21322         (rs6000_emit_cmove): Likewise.
21323         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
21324         rs6000_compare_fp_p): Delete.
21325         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
21326         (cbranch<GPR>4, cbranch<FP>4): New.
21327         (cstore<mode>4): New.  Consolidate here all choices about when to use
21328         portable or specialized sCC sequences.
21329         (stack_protect_test): Use cbranchsi4.
21330         (conditional_trap): Replace with ctrap<GPR>4.
21331         (conditional trap insn): Replace trap_comparison_operator with
21332         ordered_comparison_operator.
21333
21334         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
21335         (s390_emit_prologue): Use ctrap.
21336         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
21337         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
21338         New predicates replacing...
21339         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
21340         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
21341         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
21342         (add<mode>cc): Do not use s390_compare_op0/op1.
21343         (s<code>): Change to...
21344         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
21345         (seq): Change to...
21346         (cstorecc4): ... this.  Handle EQ or NE equally.
21347         (*sne): Un-privatize for use in cstorecc4.
21348         (b<code>): Change to...
21349         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
21350         (conditional_trap): Replace with...
21351         (ctrap<GPR>4, ctrap<FP>4): ... these.
21352         (stack_protect): Use cbranchcc4.
21353
21354         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
21355         * config/score/score-protos.h (score_gen_cmp): Delete.
21356         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
21357         (score_block_move-loop): Use cbranchsi4.
21358         * config/score/score.md (cbranchsi4): New.
21359         (cmpsi, bCC): Delete.
21360         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
21361         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21362         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
21363         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
21364         * config/score/score3.h (score3_gen_cmp): Delete.
21365         * config/score/score7.h (score7_gen_cmp): Delete.
21366
21367         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
21368         (sh_emit_scc_to_t): ... this.  Return void.
21369         (from_compare): Rename to...
21370         (sh_emit_compare_and_branch): ... this.
21371         (sh_emit_compare_and_set): New.
21372         (sh_expand_t_scc): Accept operands.
21373         * config/sh/predicates.md (sh_float_comparison_operator): New.
21374         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
21375         (prepare_scc_operands): Rename to...
21376         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
21377         arguments.
21378         (sh_emit_cheap_store_flag): New.
21379         (sh_emit_set_t_insn): New.
21380         (from_compare): Rename to...
21381         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
21382         handling of TARGET_SH2E floating point to avoid recursive call.
21383         Generate branch here.
21384         (sh_emit_compare_and_set): New.
21385         (sh_expand_t_scc): Get op0/op1 from arguments.
21386         (sh_emit_cheap_store_flag): New.
21387         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
21388         cases.
21389         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
21390         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
21391         (movsicc, movdicc): Do nothing when it recreated operands from
21392         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
21393         prepare_scc_operands (now sh_emit_scc_to_t).
21394         (udivdi3): Use cstoresi4.
21395         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
21396         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
21397         (cbranchint4_media, cbranchfp4_media): New.
21398         (casesi): Use cbranchdi4.
21399         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
21400         Delete.
21401         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
21402         (movnegt): Remove second operand.
21403         (cbranchsf4, cbranchdf4): New.
21404         (stack_protect): Use cbranchdi4/cbranchsi4.
21405
21406         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
21407         (gen_compare_reg): Accept comparison, extract part of it to...
21408         (gen_compare_reg_1): ... this.
21409         (gen_compare_operator): Delete.
21410         (gen_v9_scc): Accept separate destination, comparison code and arms.
21411         Do not use sparc_compare_op0/sparc_compare_op1.
21412         (emit_scc_insn, emit_conditional_branch_insn): New.
21413         (emit_v9_brxx): Make static.  Remove useless assertion.
21414         (sparc_emit_float_lib_cmp): Return RTL instead of calling
21415         emit_cmp_insn.
21416         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
21417         * config/sparc/sparc-protos.h (gen_compare_reg,
21418         sparc_emit_float_lib_cmp): Adjust prototype.
21419         (emit_scc_insn, emit_conditional_branch_insn): New.
21420         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
21421         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
21422         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
21423         iterators to the top.
21424         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
21425         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
21426         snedi_special_trunc): Delete.
21427         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
21428         and snedi_special_trunc.
21429         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
21430         cbranchdi4, cbranch<F:mode>4): New.
21431         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
21432         here.  Use gen_compare_reg instead of gen_compare_operator.
21433         (conditional_trap): Replace with...
21434         (ctrapsi4, ctrapdi4): ... this.
21435         (stack_protect_test): Use cbranchcc4.
21436
21437         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
21438         argument to rtx.
21439         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
21440         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
21441         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
21442         from operands[0] or operands[3] depending on is_set.
21443         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
21444         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
21445         cmpdf, bCC), sCC: Remove.
21446         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
21447         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
21448         cstoredf4): New.
21449         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
21450         spu_emit_branch_or_set.
21451
21452         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
21453         Add two arguments.
21454         * config/stormy16/stormy16.h (xstormy16_compare_op0,
21455         xstormy16_compare_op1): Delete.
21456         * config/stormy16/stormy16.c (xstormy16_compare_op0,
21457         xstormy16_compare_op1): Delete.
21458         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
21459         Adjust calls.
21460         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
21461         (cmphi, cmpsi, bCC): Remove.
21462
21463         * config/v850/v850.md (tstsi, cmpsi): Fold into...
21464         (*cmpsi): ... this one.
21465         (cbranchsi4, cstoresi4): New.
21466         (bCC expanders): Delete.
21467         (sCC insns): Fold into...
21468         (*setcc): ... this one.
21469         (casesi): Do not use gen_cmpsi and gen_bgtu.
21470         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
21471         (movsicc): Simplify.
21472         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
21473
21474         * config/vax/vax-protos.h (cond_name): New.
21475         (vax_output_conditional_branch): Remove.
21476         * config/vax/vax.c (cond_name): New.
21477         (vax_output_conditional_branch): Remove.
21478         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
21479         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
21480         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
21481         (bit<VAXint>): Wrap source with (compare).
21482         (b<code> and following unnamed pattern): Rename to *branch and
21483         *branch_reversed.  Change macroization to match_operator.
21484         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
21485
21486         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
21487         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
21488         Change last argument to machine_mode.
21489         (xtensa_expand_scc): Add machine_mode argument.
21490         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
21491         (gen_conditional_move, xtensa_expand_conditional_branch,
21492         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
21493         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
21494         Adjust operand numbers.
21495         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
21496         Delete.
21497         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
21498         (cmpsi, cmpsf, b<code>, s<code>): Delete.
21499         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
21500
21501 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
21502
21503         * optabs.c (prepare_cmp_insn): Temporarily disable test that
21504         causes spurious differences between trunk and cond-optab branch.
21505
21506 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21507
21508         PR target/37137
21509         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
21510
21511 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
21512
21513         * tree.c (iterative_hash_pointer): Delete.
21514         (iterative_hash_expr): Short-circuit handling of NULL pointer.
21515         Hash UIDs and versions of SSA names.  Don't special-case built-in
21516         function declarations.
21517
21518 2009-05-11  Ian Lance Taylor  <iant@google.com>
21519
21520         PR bootstrap/40103
21521         * graphite.c: Force -Wc++-compat to only be a warning before
21522         #including "cloog/cloog.h".
21523
21524 2009-05-11  Martin Jambor  <mjambor@suse.cz>
21525
21526         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
21527
21528 2009-05-11  Jan Hubicka  <jh@suse.cz>
21529
21530         * tree-ssa-loop-ivcanon.c: Include target.h
21531         (struct loop_size): new structure.
21532         (constant_after_peeling): New predicate.
21533         (tree_estimate_loop_size): New function.
21534         (estimated_unrolled_size): Rewrite for new estimates.
21535         (try_unroll_loop_completely): Use new estimates.
21536         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
21537
21538 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21539
21540         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
21541         libcpp interface change.
21542         (spu_macro_to_expand): Likewise.
21543
21544 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
21545
21546         PR tree-optimization/40026
21547         * gimplify.c (gimplify_init_constructor): Change initial conditional
21548         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
21549         optimize_compound_literals_in_ctor.
21550
21551 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
21552
21553         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
21554         New devices.
21555         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
21556
21557 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
21558
21559         * tree-vect-data-refs.c (vect_analyze_group_access): Use
21560         HOST_WIDE_INT for gap.
21561
21562 2009-05-11  Ira Rosen  <irar@il.ibm.com>
21563
21564         PR tree-optimization/40074
21565         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
21566         account in group size and step comparison.
21567
21568 2009-05-11  Richard Guenther  <rguenther@suse.de>
21569
21570         * passes.c (init_optimization_passes): Strip now incorrect comment.
21571         (execute_function_todo): Do not set PROP_alias.
21572         * tree-pass.h (PROP_alias): Remove.
21573         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
21574         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
21575         * tree-nrv.c (pass_return_slot): Likewise.
21576         * tree-object-size.c (pass_object_sizes): Likewise.
21577         * tree-ssa-dom.c (pass_dominator): Likewise.
21578         (pass_phi_only_cprop): Likewise.
21579         * tree-ssa-dse.c (pass_dse): Likewise.
21580         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
21581         (pass_cselim): Likewise.
21582         * tree-ssa-pre.c (pass_pre): Likewise.
21583         (pass_fre): Likewise.
21584         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
21585         * tree-ssa-sink.c (pass_sink_code): Likewise.
21586         * tree-stdarg.c (pass_stdarg): Likewise.
21587         * tree-tailcall.c (pass_tail_calls): Likewise.
21588         * tree-vrp.c (pass_vrp): Likewise.
21589
21590 2009-05-10  Ian Lance Taylor  <iant@google.com>
21591
21592         * basic-block.h (enum profile_status): Break out of struct
21593         control_flow_graph.
21594         * cgraph.h (struct inline_summary): Break out of struct
21595         cgraph_local_info.
21596         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
21597         of struct cgraph_order_sort.
21598         * combine.c (enum undo_kind): New enum, broken out of struct undo.
21599         * cse.c (struct branch_path): Break out of struct
21600         cse_basic_block_data.
21601         * except.h (enum eh_region_type): Break out of struct eh_region.
21602         * gcc.c (enum add_del): Break out of struct modify_target.
21603         * genrecog.c (enum decision_type): Break out of struct decision_test.
21604         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
21605         ggc_pch_data.
21606         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
21607         * regmove.c (enum match_use): New enum, broken out of struct match.
21608         * sched-int.h (enum post_call_group): New enum, broken out of
21609         struct deps.
21610         (struct deps_reg): Break out of struct deps.
21611         * target.h (struct asm_int_op): Break out of struct gcc_target.
21612         * tree-eh.c (struct goto_queue_node): Break out of struct
21613         leh_tf_state.
21614         * tree-inline.h (enum copy_body_cge_which): Break out of
21615         copy_body_data.
21616         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
21617
21618         * c-decl.c (in_struct, struct_types): New static variables.
21619         (pushtag): Add loc parameter.  Change all callers.
21620         (lookup_tag): Add ploc parameter.  Change all callers.
21621         (check_compound_literal_type): New function.
21622         (parser_xref_tag): Add loc parameter.  Change all callers.  If
21623         -Wc++-compat, warn about struct/union/enum types defined within a
21624         struct or union.
21625         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
21626         and loc parameters.  Change all callers.  Change error calls to
21627         error_at, using loc.  For a redefinition, if the location of the
21628         original definition is known, report it.  Set in_struct and
21629         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
21630         (finish_struct): Add new parameters enclosing_in_struct and
21631         enclosing_struct_types.  Change all callers.  Set
21632         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
21633         in the struct.  If in a struct, add this struct to struct_types.
21634         (start_enum): Add loc parameter.  Change all callers.  Use
21635         error_at for errors, using loc.  For a redefinition, if the
21636         location of the original definition is known, report it.  If in a
21637         struct, add this enum type to struct_types.  If -Wc++-compat warn
21638         if in sizeof, typeof, or alignof.
21639         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
21640         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
21641         (c_parser_enum_specifier): Get enum location for start_enum.
21642         (c_parser_struct_or_union_specifier): Get struct location for
21643         start_struct.  Save in_struct and struct_types status between
21644         start_struct and finish_struct.
21645         (c_parser_cast_expression): Get location of cast.
21646         (c_parser_alignof_expression): Get location of type.
21647         (c_parser_postfix_expression): Likewise.
21648         (c_parser_postfix_expression_after_paren_type): Add type_loc
21649         parameter.  Change all callers.  Call check_compound_literal_type.
21650         Use type_loc for error about variable size type.
21651         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
21652         of an enum constant from an enum type defined in a struct or union.
21653         (c_cast_expr): Add loc parameter.  Change all callers.  If
21654         -Wc++-compat, warn about defining a type in a cast.
21655         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
21656         (start_enum, start_struct, finish_struct): Update declarations.
21657         (parser_xref_tag, c_cast_expr): Update declarations.
21658         (check_compound_literal_type): Declare.
21659
21660 2009-05-11  Ben Elliston  <bje@au.ibm.com>
21661
21662         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
21663         for recent libcpp interface change.
21664         (rs6000_macro_to_expand): Likewise.
21665
21666 2009-05-10  Michael Matz  <matz@suse.de>
21667
21668         PR target/40031
21669         * config/arm/arm.c (require_pic_register): Emit on entry edge,
21670         not at entry of function.
21671
21672 2009-05-10  Richard Guenther  <rguenther@suse.de>
21673
21674         PR tree-optimization/40081
21675         Revert
21676         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21677         using the main variant of the element type.  Do not fiddle with
21678         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21679
21680         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
21681         structs with volatile fields.
21682
21683 2009-05-10  Jan Hubicka  <jh@suse.cz>
21684
21685         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
21686         (estimate_move_cost): Assert that it does not get called for
21687         VOID_TYPE_P.
21688         (estimate_num_insns): Skip VOID types in argument handling.
21689         (optimize_inline_calls): Delete unreachable blocks and verify that
21690         callgraph is valid.
21691
21692 2009-05-10  Jan Hubicka  <jh@suse.cz>
21693
21694         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
21695         * cgraph.c (cgraph_mark_address_taken_node): New function.
21696         (dump_cgraph_node): Dump new flag.
21697         * cgraph.h (struct cgraph_node): Add address_taken.
21698         (cgraph_mark_address_taken_node): New function.
21699         * ipa.c (cgraph_postorder): Prioritize functions with address taken
21700         since new direct calls can be born.
21701
21702 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21703
21704         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
21705         tok->val.node.node.
21706
21707 2009-05-10  Jan Hubicka  <jh@suse.cz>
21708
21709         PR middle-end/40084
21710         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
21711         argument; rewrite.
21712         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
21713         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
21714         * tree-inline.c (copy_bb): Set frequency correctly.
21715         (fold_marked_statements): Update call to
21716         cgraph_update_edges_for_call_stmt.
21717
21718 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21719
21720         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
21721         identifiers in diagnostics.
21722         * config/arm/arm.c (arm_handle_fndecl_attribute,
21723         arm_handle_isr_attribute): Likewise.
21724         * config/avr/avr.c (avr_handle_progmem_attribute,
21725         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
21726         * config/bfin/bfin.c (handle_int_attribute,
21727         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
21728         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
21729         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
21730         Likewise.
21731         * config/darwin.c (darwin_handle_kext_attribute,
21732         darwin_handle_weak_import_attribute): Likewise.
21733         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
21734         h8300_handle_eightbit_data_attribute,
21735         h8300_handle_tiny_data_attribute): Likewise.
21736         * config/i386/i386.c (ix86_handle_cconv_attribute,
21737         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
21738         * config/i386/winnt.c (ix86_handle_shared_attribute,
21739         ix86_handle_selectany_attribute): Likewise.
21740         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
21741         * config/m32c/m32c.c (function_vector_handler): Likewise.
21742         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
21743         m68hc11_handle_fntype_attribute): Likewise.
21744         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
21745         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
21746         * config/mips/mips.c (mips_insert_attributes,
21747         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
21748         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
21749         rs6000_handle_struct_attribute): Likewise.
21750         * config/sh/sh.c (sh_insert_attributes,
21751         sh_handle_resbank_handler_attribute,
21752         sh_handle_interrupt_handler_attribute,
21753         sh2a_handle_function_vector_handler_attribute,
21754         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
21755         Likewise.
21756         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
21757         * config/spu/spu.c (spu_handle_fndecl_attribute,
21758         spu_handle_vector_attribute): Likewise.
21759         * config/stormy16/stormy16.c
21760         (xstormy16_handle_interrupt_attribute): Likewise.
21761         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
21762         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
21763
21764 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
21765
21766         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
21767         (pp_translate_identifiers): New.
21768         (pp_identifier): Only conditionally translate identifier to locale
21769         character set.
21770         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
21771         (pp_base_tree_identifier): Only conditionally translate identifier
21772         to locale character set.
21773         * c-pretty-print.c (M_): Define.
21774         (pp_c_type_specifier, pp_c_primary_expression): Mark English
21775         fragments for conditional translation with M_.
21776         * tree-pretty-print.c (maybe_init_pretty_print): Disable
21777         identifier translation.
21778
21779 2009-05-10  Richard Guenther  <rguenther@suse.de>
21780
21781         PR tree-optimization/40081
21782         * tree-sra.c (instantiate_element): Instantiate scalar replacements
21783         using the main variant of the element type.  Do not fiddle with
21784         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
21785
21786 2009-05-09  Jan Hubicka  <jh@suse.cz>
21787
21788         PR middle-end/40080
21789         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
21790         indirect calls; verify cgraph afterwards.
21791
21792 2009-05-09  Jan Hubicka  <jh@suse.cz>
21793
21794         PR bootstrap/40082
21795         * ipa.c (update_inlined_to_pointer): New function.
21796         (cgraph_remove_unreachable_nodes): Use it.
21797
21798 2009-05-09  Jan Hubicka  <jh@suse.cz>
21799
21800         * tree-eh.c (struct leh_state): Remove prev_try.
21801         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
21802         not track prev_try.
21803         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
21804         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
21805         remove_eh_handler_and_replace, foreach_reachable_handler,
21806         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
21807         * except.h (struct eh_region): Remove eh_region_u_cleanup.
21808         (gen_eh_region_cleanup): Update prototype.
21809
21810 2009-05-09  Jan Hubicka  <jh@suse.cz>
21811
21812         PR middle-end/40043
21813         * except.c (copy_eh_region): Always set prev_try.
21814         (redirect_eh_edge_to_label): Find outer try.
21815         (foreach_reachable_handler): When looking for prev try
21816         handle case where previous try is not going to be taken.
21817
21818 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21819
21820         PR tree-optimization/40049
21821         * tree-vect-stmts.c (vectorizable_operation): If the machine has
21822         only vector/vector shifts, convert the type of the constant to the
21823         appropriate type to avoid building incorrect trees, which
21824         eventually have problems with garbage collection.
21825
21826 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21827
21828         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
21829         -1 for complex floating-point types if honoring signed zeros.
21830
21831 2009-05-08  Jan Hubicka  <jh@suse.cz>
21832
21833         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
21834         argument; handle correctly when profile is absent.
21835         (build_cgraph_edges): Update.
21836         (rebuild_cgraph_edges): Update.
21837         * cgraph.c: Do not include varray.h.
21838         (cgraph_set_call_stmt_including_clones): New function.
21839         (cgraph_create_edge_including_clones): Likewise
21840         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
21841         (cgraph_update_edges_for_call_stmt): Handle clones.
21842         (cgraph_remove_node): Handle clone tree.
21843         (cgraph_remove_node_and_inline_clones): New function.
21844         (dump_cgraph_node): Dump clone tree.
21845         (cgraph_clone_node): Handle clone tree.
21846         (clone_function_name): Bring here from tree-inline.c.
21847         (cgraph_create_virtual_clone): New function.
21848         * cgraph.h (ipa_replace_map): Move here from ipa.h.
21849         (cgraph_clone_info): New function.
21850         (strut cgraph_node): Add clone_info and new clone tree pointers.
21851         (cgraph_remove_node_and_inline_clones,
21852         cgraph_set_call_stmt_including_clones,
21853         cgraph_create_edge_including_clones,
21854         cgraph_create_virtual_clone): Declare.
21855         (cgraph_function_versioning): Use VEC argument.
21856         (compute_call_stmt_bb_frequency): Update prototype.
21857         (cgraph_materialize_all_clones): New function.
21858         * ipa-cp.c (ipcp_update_cloned_node): Remove.
21859         (ipcp_create_replace_map): Update to VECtors.
21860         (ipcp_update_callgraph): Use virtual clones.
21861         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
21862         (ipcp_update_profiling): Do not update local profiling.
21863         (ipcp_insert_stage): Use VECtors and virtual clones.
21864         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
21865         (clone_of_p): New function.
21866         (cgraph_preserve_function_body_p): Use clone tree.
21867         (cgraph_optimize): Materialize clones.
21868         (cgraph_function_versioning): Update for VECtors.
21869         (save_inline_function_body): Use clone tree.
21870         (cgraph_materialize_clone): New function.
21871         (cgraph_materialize_all_clones): Likewise.
21872         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
21873         * ipa.c: Include gimple.h.
21874         (cgraph_remove_unreachable_nodes): Use clone tree.
21875         * ipa-prop.c (ipa_note_param_call): Update call to
21876         compute_call_stmt_bb_frequencycall.
21877         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
21878         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
21879         (copy_bb): Handle updating of clone tree; add new edge when new call
21880         appears.
21881         (expand_call_inline): Be strict about every call having edge.
21882         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
21883         (delete_unreachable_blocks_update_callgraph): New function.
21884         (tree_function_versioning): Use VECtors; always remove unreachable
21885         blocks and fold conditionals.
21886         * tree-inline.h: Do not include varray.h.
21887         (tree_function_versioning): Remove.
21888         * Makefile.in (GTFILES): Remove tree-inline.c
21889         * passes.c (do_per_function): Do only functions having body.
21890         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
21891         tree.
21892
21893 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
21894             Andrew Morrow  <acm@google.com>
21895
21896         PR c/36892
21897         * c-common.c (c_common_attribute_table): Permit deprecated
21898         attribute to take an optional argument.
21899         (handle_deprecated_attribute): If the optional argument to
21900         __attribute__((deprecated)) is not a string ignore the attribute
21901         and emit a warning.
21902
21903         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
21904         * c-typeck.c (build_component_ref): Likewise.
21905         (build_external_ref): Likewise.
21906
21907         * toplev.c (warn_deprecated_use): Add an attribute argument.
21908         Emit the message associated with __attribute__((deprecated)).
21909
21910         * toplev.h (warn_deprecated_use): Updated.
21911
21912         * doc/extend.texi: Document new optional parameter to
21913         __attribute__((deprecated))
21914
21915 2009-05-08  Michael Eager <eager@eagercon.com>
21916
21917         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
21918         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
21919
21920 2009-05-08  Richard Guenther  <rguenther@suse.de>
21921
21922         PR tree-optimization/40062
21923         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
21924         Avoid exponential behavior.
21925
21926 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21927
21928         PR rtl-optimization/33928
21929         PR 26854
21930         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
21931         process_uses, build_single_def_use_links): New.
21932         (update_df): Update use_def_ref.
21933         (forward_propagate_into): Use get_def_for_use instead of use-def
21934         chains.
21935         (fwprop_init): Call build_single_def_use_links and let it initialize
21936         dataflow.
21937         (fwprop_done): Free use_def_ref.
21938         (fwprop_addr): Eliminate duplicate call to df_set_flags.
21939         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
21940         df_rd_simulate_one_insn): New.
21941         (df_rd_bb_local_compute_process_def): Update head comment.
21942         (df_chain_create_bb): Use the new RD simulation functions.
21943         * df.h (df_rd_simulate_artificial_defs_at_top,
21944         df_rd_simulate_one_insn): New.
21945         * opts.c (decode_options): Enable fwprop at -O1.
21946         * doc/invoke.texi (-fforward-propagate): Document this.
21947
21948 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
21949
21950         PR c/24581
21951         * c-typeck.c (build_binary_op): Handle arithmetic between one real
21952         and one complex operand specially.
21953         * tree-complex.c (some_nonzerop): Do not identify a real value as
21954         zero if flag_signed_zeros.
21955
21956 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21957
21958         PR rtl-optimization/33928
21959         * loop-invariant.c (record_use): Fix && vs. || mishap.
21960
21961 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
21962
21963         PR rtl-optimization/33928
21964         * loop-invariant.c (struct use): Add addr_use_p.
21965         (struct def): Add n_addr_uses.
21966         (struct invariant): Add cheap_address.
21967         (create_new_invariant): Set cheap_address.
21968         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
21969         (record_uses): Pass df_ref to record_use.
21970         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
21971         used only as such.
21972
21973 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
21974
21975         * config/sh/sh.c: Do not include c-pragma.h.
21976
21977 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21978
21979         * config/spu/spu.c: Remove include of c-common.h.
21980
21981 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
21982
21983         PR c/39037
21984         * c-common.h (mark_valid_location_for_stdc_pragma,
21985         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
21986         clear_float_const_decimal64, float_const_decimal64_p): New.
21987         * c.opt (Wunsuffixed-float-constants): New.
21988         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
21989         unsuffixed float constant, handle new warning.
21990         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
21991         * c-decl.c (c_scope): New flag float_const_decimal64.
21992         (set_float_const_decimal64, clear_float_const_decimal64,
21993         float_const_decimal64_p): New.
21994         (push_scope): Set new flag.
21995         * c-parser.c (c_parser_translation_unit): Mark when it's valid
21996         to use STDC pragmas.
21997         (c_parser_external_declaration): Ditto.
21998         (c_parser_compound_statement_nostart): Ditto.
21999         * c-pragma.c (valid_location_for_stdc_pragma,
22000         mark_valid_location_for_stdc_pragma,
22001         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
22002         handle_pragma_float_const_decimal64): New.
22003         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
22004         * cp/semantics.c (valid_location_for_stdc_pragma_p,
22005         set_float_const_decimal64, clear_float_const_decimal64,
22006         float_const_decimal64_p): New dummy functions.
22007         * doc/extend.texi (Decimal Float): Remove statement that the
22008         pragma, and suffix for double constants, are not supported.
22009         * doc/invoke.texi (Warning Options): List new option.
22010         (-Wunsuffixed-float-constants): New.
22011
22012 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
22013
22014         * config/i386/i386.c: Do not include c-common.h.
22015
22016 2009-05-07  Mark Heffernan  <meheff@google.com>
22017
22018         * doc/invoke.texi (Debugging Options): Document change of debugging
22019         dump location.
22020         * opts.c (decode_options): Make dump_base_name relative to
22021         aux_base_name directory.
22022
22023 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
22024
22025         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
22026         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
22027
22028 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
22029
22030         * Makefile.in (install-plugin): Simplify a bit.
22031
22032 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
22033
22034         * Makefile.in (OBJS-common): Add regcprop.o.
22035         (regcprop.o): New.
22036         * timevar.def (TV_CPROP_REGISTERS): New.
22037         * regrename.c (regrename_optimize): Return 0.
22038         (rest_of_handle_regrename): Delete.
22039         (pass_rename_registers): Point to regrename_optimize.
22040         (struct value_data_entry, struct value_data,
22041         kill_value_one_regno, kill_value_regno, kill_value,
22042         set_value_regno, init_value_data, kill_clobbered_value,
22043         kill_set_value, kill_autoinc_value, copy_value,
22044         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
22045         replace_oldest_value_reg, replace_oldest_value_addr,
22046         replace_oldest_value_mem, copyprop_hardreg_forward_1,
22047         debug_value_data, validate_value_data): Move...
22048         * regcprop.c: ... here.
22049         (rest_of_handle_cprop): Delete.
22050         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
22051
22052 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
22053
22054         PR middle-end/40057
22055         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
22056         GEN_INT for 1 << bitnum.
22057         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
22058         build_int_cst_type.
22059
22060 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
22061
22062         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
22063         Remove wrong description of "nand" operation.
22064
22065 2009-05-06  Richard Guenther  <rguenther@suse.de>
22066             Adam Nemet  <anemet@caviumnetworks.com>
22067
22068         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
22069         comment.  Add that if LHS is not a gimple register, then RHS1 has
22070         to be a single object (GIMPLE_SINGLE_RHS).
22071
22072 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
22073
22074         * expr.c (get_def_for_expr): Move it up in the file.
22075         (store_field): When expanding a bit-field store, look at the
22076         defining gimple stmt for the masking conversion.
22077
22078 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
22079
22080         PR middle-end/39986
22081         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
22082         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
22083         32-bit memcpy into long.
22084
22085 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
22086
22087         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
22088         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
22089         new_reg_loc_descr.
22090         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
22091         instead of appending DW_OP_deref*.
22092
22093 2009-05-06  Michael Matz  <matz@suse.de>
22094
22095         PR middle-end/40021
22096         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
22097         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
22098
22099 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
22100
22101         * Makefile.in (install-plugin): Fix srcdir handling.
22102
22103 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
22104
22105         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
22106         when processing for not_regs_needed bitmap.
22107         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
22108         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
22109         handling it for rhs.
22110
22111 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22112
22113         * config/i386/i386.md (unnamed inc/dec peephole): Use
22114         optimize_insn_for_size_p instead of optimize_size.
22115         * config/i386/predicates.md (incdec_operand): Likewise.
22116         (aligned_operand): Likewise.
22117         * config/i386/sse.md (divv8sf3): Likewise.
22118         (sqrtv8sf2): Likewise.
22119
22120 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22121
22122         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
22123
22124         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
22125
22126 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
22127
22128         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
22129         ssemodesuffixf2c with avxmodesuffixf2c.
22130
22131 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
22132
22133         PR c/40032
22134         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
22135
22136 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
22137
22138         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
22139         (struct tree_base): Adjust spacing for 8 bit boundaries.
22140         (struct tree_decl_common): Add decl_by_reference_flag bit.
22141         (DECL_BY_REFERENCE): Adjust.
22142         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
22143         print DECL_BY_REFERENCE bit.
22144         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
22145         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
22146         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
22147         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
22148         unconditionally.
22149
22150         PR middle-end/39666
22151         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
22152         range of the type, but default label is missing, add it with one
22153         of the existing labels instead of adding a new label for it.
22154
22155 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
22156
22157         * dwarf.h: Remove.
22158
22159 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
22160
22161         * Makefile.in (enable_plugin, plugin_includedir): New.
22162         (install): Depend on install-plugin.
22163         (PLUGIN_HEADERS): New.
22164         (install-plugin): New.
22165         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
22166
22167 2009-05-05  Richard Guenther  <rguenther@suse.de>
22168
22169         PR tree-optimization/40022
22170         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
22171         the only vuse.
22172         (phivn_valid_p): Fix tuplification error, simplify.
22173         (phiprop_insert_phi): Add dumps.
22174         (propagate_with_phi): Simplify.
22175
22176 2009-05-05  Richard Guenther  <rguenther@suse.de>
22177
22178         PR middle-end/40023
22179         * builtins.c (gimplify_va_arg_expr): Properly build the address.
22180
22181 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
22182
22183         * tree.h (strip_float_extensions): Remove duplicate declaration.
22184         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
22185         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
22186         block_ultimate_origin): Rearrange the declarations line to match the
22187         comment that indicates the .c file which the functions are defined.
22188         (dwarf2out_*, set_decl_rtl): Add comment.
22189         (get_base_address): Adjust comment.
22190         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
22191         declarations line and add comment.
22192         (is_builtin_name): Add blank after function name, for clarity.
22193
22194 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22195
22196         * attribs.c (decl_attributes): Use %qE for identifiers in
22197         diagnostics.
22198         * cgraphunit.c (verify_cgraph_node): Translate function names to
22199         locale character set in diagnostics.
22200         * coverage.c (get_coverage_counts): Use %qE for identifiers in
22201         diagnostics.
22202         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
22203         Document that functions are named in UTF-8.
22204         * expr.c (expand_expr_real_1): Translate function names to locale
22205         character set in diagnostics.
22206         * gimplify.c (omp_notice_variable, omp_is_private,
22207         gimplify_scan_omp_clauses): Use %qE for identifiers in
22208         diagnostics.
22209         * langhooks.c (lhd_print_error_function): Translate function names
22210         to locale character set.
22211         * langhooks.h (decl_printable_name): Document that return value is
22212         in internal character set.
22213         * stmt.c: Include pretty-print.h
22214         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
22215         diagnostics.
22216         (resolve_operand_name_1): Translate named operand name to locale
22217         character set.
22218         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
22219         diagnostics.
22220         * toplev.c (announce_function): Translate function names to locale
22221         character set.
22222         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
22223         (default_tree_printer): Use pp_identifier or translate identifiers
22224         to locale character set.  Mark "<anonymous>" for translation.
22225         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
22226         for identifiers in diagnostics.
22227         * tree.c (handle_dll_attribute): Use %qE for identifiers in
22228         diagnostics.
22229         * varasm.c (output_constructor): Use %qE for identifiers in
22230         diagnostics.
22231
22232 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
22233
22234         * configure.ac: use ` ` instead of $()
22235         * configure: Regenerate.
22236
22237 2009-05-05  Ben Elliston  <bje@au.ibm.com>
22238
22239         * config/pa/linux-atomic.c: Eliminate conditional include of
22240         errno.h on non-LP64 systems to simplify build requirements.
22241
22242 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22243
22244         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
22245         diagnostics.
22246         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
22247         and pass value to identifier_to_locale.
22248         (warn_variable_length_array): Make name a tree.
22249         (grokdeclarator): Separate diagnostic texts for named and unnamed
22250         declarators.  Use %qE for named declarators.
22251         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
22252         diagnostics.
22253         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
22254         identifiers in diagnostics.
22255         * c-typeck.c (push_member_name, start_init): Pass identifiers to
22256         identifier_to_locale.  Mark "anonymous" strings for translation.
22257
22258 2009-05-04  Michael Eager <eager@eagercon.com>
22259
22260         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
22261         address for DImode/DFmode only if double-precision FP regs.
22262
22263 2009-05-04  Michael Eager <eager@eagercon.com>
22264
22265         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
22266         TARGET_SINGLE_FLOAT check.
22267
22268 2009-05-04  Michael Eager <eager@eagercon.com>
22269
22270         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
22271
22272 2009-05-04  Michael Eager <eager@eagercon.com>
22273
22274         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
22275         * config/rs6000/t-xilinx: New
22276
22277 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
22278
22279         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
22280         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
22281         * gcc/explow.c (memory_address): Use target hook.
22282         * gcc/targhooks.c (default_legitimize_address): New.
22283         * gcc/targhooks.h (default_legitimize_address): New.
22284         * gcc/target.h (legitimize_address): New.
22285         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
22286         (TARGET_INITIALIZER): Include it.
22287         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
22288
22289         * config/bfin/bfin-protos.h (legitimize_address): Remove.
22290         * config/bfin/bfin.c (legitimize_address): Remove.
22291         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
22292         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
22293         Remove.
22294         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
22295         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
22296
22297         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
22298         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
22299         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
22300         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
22301         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
22302         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
22303         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
22304         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
22305         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
22306         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
22307         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
22308         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
22309         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
22310         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
22311         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
22312         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
22313         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
22314         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
22315         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
22316         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
22317         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
22318         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
22319         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
22320
22321         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
22322         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
22323         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
22324         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
22325         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
22326         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
22327         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
22328         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
22329         (thumb_legitimize_address): Delete.
22330         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
22331         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
22332         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
22333         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
22334         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
22335         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
22336         Delete.
22337         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
22338         Delete.
22339
22340         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
22341         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
22342         * config/m32r/m32r.c (m32r_legitimize_address): New.
22343         * config/m68k/m68k.c (m68k_legitimize_address): New.
22344         * config/score/score.c (score_legitimize_address): Standardize.
22345         * config/score/score3.c (score3_legitimize_address): Standardize.
22346         * config/score/score3.h (score3_legitimize_address): Adjust.
22347         * config/score/score7.c (score7_legitimize_address): Standardize.
22348         * config/score/score7.h (score7_legitimize_address): Adjust.
22349         * config/sh/sh.c (sh_legitimize_address): New.
22350         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
22351
22352         * gcc/config/s390/s390.c (legitimize_address): Rename to...
22353         (s390_legitimize_address): ... this.
22354         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
22355         (sparc_legitimize_address): ... this.
22356         * gcc/config/i386/i386.c (legitimize_address): Rename to...
22357         (ix86_legitimize_address): ... this.
22358         * gcc/config/avr/avr.c (legitimize_address): Rename to...
22359         (avr_legitimize_address): ... this.
22360         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
22361         (mn10300_legitimize_address): ... this.
22362         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
22363         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
22364         (alpha_expand_mov): Adjust call.
22365
22366         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
22367         * config/spu/spu.c (spu_legitimize_address): Likewise.
22368         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
22369         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
22370
22371 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
22372
22373         * intl.c (locale_encoding, locale_utf8): New.
22374         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
22375         * intl.h (locale_encoding, locale_utf8): Declare.
22376         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
22377         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
22378         New.
22379         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
22380         argument.
22381         (pp_tree_identifier): Define to call pp_base_tree_identifier.
22382         (pp_base_tree_identifier): Declare as function.
22383         (identifier_to_locale): Declare.
22384         * Makefile.in (pretty-print.o): Update dependencies.
22385         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
22386
22387 2009-05-04  Richard Guenther  <rguenther@suse.de>
22388
22389         PR middle-end/40015
22390         * builtins.c (fold_builtin_memory_op): Do not decay to element
22391         type if the size matches the whole array.
22392
22393 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22394
22395         * expmed.c (synth_mult): When trying out a shift, pass the result
22396         of a signed shift.
22397
22398 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
22399
22400         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
22401         (shiftsub1_cost): New.
22402         (init_expmed): Compute shiftsub1_cost.
22403         (synth_mult): Optimize multiplications by constants of the form
22404         -(2^^m-1) for some constant positive integer m.
22405
22406 2009-05-03  Richard Guenther  <rguenther@suse.de>
22407
22408         PR c/39983
22409         * c-typeck.c (array_to_pointer_conversion): Do not built
22410         ADDR_EXPRs of arrays of pointer-to-element type.
22411         * c-gimplify.c (c_gimplify_expr): Revert change fixing
22412         up wrong ADDR_EXPRs after-the-fact.
22413         * c-common.c (strict_aliasing_warning): Strip pointer
22414         conversions for obtaining the original type.
22415         * builtins.c (fold_builtin_memset): Handle array types.
22416         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
22417         and array types
22418
22419 2009-05-03  Richard Guenther  <rguenther@suse.de>
22420
22421         PR middle-end/23329
22422         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
22423         Do not lose casts from array types with unknown extent to array
22424         types with known extent.
22425         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
22426         alias set compatibility.
22427
22428 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22429
22430         * flags.h (extra_warnings): Delete.
22431         * toplev.c (process_options): Handle Wuninitialized here.
22432         * opts.c (extra_warnings): Delete.
22433         (set_Wextra): Delete.
22434         (common_handle_option): -Wextra can be handled automatically.
22435         * c-opts.c (c_common_handle_option): Delete obsolete code.
22436         (c_common_post_options): Simplify comment.
22437         * common.opt (W): Add Var.
22438         (Wextra): Add Var.
22439         (Wuninitialized): Initialize to -1.
22440
22441 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
22442             Richard Guenther  <rguenther@suse.de>
22443
22444         * expr.c (get_def_for_expr): New function.
22445         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
22446         SSA rather than trees.
22447         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
22448         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
22449
22450 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
22451
22452         * c-common.c (reswords): Add _Imaginary.
22453         * c-common.c (enum rid): Add RID_IMAGINARY.
22454
22455 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
22456
22457         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
22458         Patch by Richard Guenther.
22459
22460 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
22461
22462         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
22463         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
22464         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
22465         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
22466         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
22467         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
22468         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
22469         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
22470         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
22471         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
22472         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
22473         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
22474         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
22475         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
22476         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
22477         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
22478         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
22479         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
22480
22481 2009-05-02  Richard Guenther  <rguenther@suse.de>
22482
22483         PR tree-optimization/39940
22484         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
22485         doing so.
22486
22487 2009-05-02  Richard Guenther  <rguenther@suse.de>
22488
22489         PR middle-end/40001
22490         * tree-ssa.c (execute_update_addresses_taken): Properly check
22491         if we can mark a variable DECL_GIMPLE_REG_P.
22492         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
22493         back to the end of the function.
22494         (is_gimple_reg_type): Remove complex type special casing.
22495         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
22496         if not optimizing.
22497
22498 2009-05-02  Ben Elliston  <bje@au.ibm.com>
22499
22500         * doc/collect2.texi (Collect2): Document search path behaviour
22501         when configured with --with-ld.
22502
22503 2009-05-02  Jan Hubicka  <jh@suse.cz>
22504
22505         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
22506         parameter; update callers.
22507         (coalesce_cost_edge): EH edges are costier because they needs
22508         splitting even if not critical and even more costier when there are
22509         multiple EH predecestors.
22510
22511 2009-05-02  Jan Hubicka  <jh@suse.cz>
22512
22513         * except.c (remove_eh_handler_and_replace): Handle updating after
22514         removing TRY blocks.
22515
22516 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
22517
22518         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
22519
22520 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
22521
22522         * varasm.c: Do not include c-pragma.h.
22523         * attribs.c: Do not incude c-common.h.
22524
22525 2009-05-01  Michael Matz  <matz@suse.de>
22526
22527         * calls.c (initialize_argument_information): Handle SSA names like
22528         decls with a non MEM_P DECL_RTL.
22529
22530 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22531
22532         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
22533         * ipa-utils.c: Likewise.
22534         * ipa-type-escape.c: Likewise.
22535         * cgraphunit.c Do not include c-common.h.
22536         * ipa-pure-const.c: Likewise.
22537         * tree-if-conv.c: Likewise.
22538         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
22539         * ipa-struct-reorg.c: Likewise.
22540         * tree-nomudflap.c: Likewise.
22541         * tree-ssa-structalias.c: Likewise.
22542
22543 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
22544
22545         * store-motion.c: Many cleanups to make this pass a first-class
22546         citizen instead of an appendix to gcse load motion.  Add TODO list
22547         to make this pass faster/cleaner/better.
22548
22549         (struct ls_expr): Post gcse.c-split cleanups.
22550         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
22551         "stores" field to "avail_stores".
22552         (pre_ldst_mems): Rename to store_motion_mems.
22553         (pre_ldst_table): Rename to store_motion_mems_table.
22554         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
22555         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
22556         (ldst_entry): Rename to st_expr_entry, update users.
22557         (free_ldst_entry): Rename to free_st_expr_entry, update users.
22558         (free_ldst_mems): Rename to free_store_motion_mems, update users.
22559         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
22560         update caller.
22561         (first_ls_expr): Rename to first_st_expr, update users.
22562         (next_ls_expr): Rename to next_st_expr, update users.
22563         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
22564         fields properly for store motion instead of names inherited from load
22565         motion in gcse.c.
22566         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
22567         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
22568         are done with it.
22569
22570         (ae_kill): Rename to st_kill, update users.
22571         (ae_gen): Rename to st_avloc, update users.
22572         (transp): Rename to st_transp, update users.
22573         (pre_insert_map): Rename to st_insert_map, update users.
22574         (pre_delete_map): Rename to st_delete_map, update users.
22575         (insert_store, build_store_vectors, free_store_memory,
22576         one_store_motion_pass): Update for abovementioned changes.
22577
22578         (gcse_subst_count, gcse_create_count): Remove.
22579         (one_store_motion_pass): New statistics counters "n_stores_deleted"
22580         and "n_stores_created", local variables.
22581
22582         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
22583         use for_each_rtx.
22584
22585         (regvec, compute_store_table_current_insn): Remove.
22586         (reg_set_info, reg_clear_last_set): Remove.
22587         (compute_store_table): Use DF caches instead of local dataflow
22588         solvers.
22589
22590 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
22591
22592         * c-objc-common.c (c_tree_printer): Print identifiers with
22593         pp_identifier, not pp_string.  Mark "({anonymous})" for
22594         translation.
22595         * c-pretty-print.c (pp_c_ws_string): New.
22596         (pp_c_cv_qualifier, pp_c_type_specifier,
22597         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
22598         pp_c_storage_class_specifier, pp_c_function_specifier,
22599         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
22600         pp_c_primary_expression, pp_c_postfix_expression,
22601         pp_c_unary_expression, pp_c_shift_expression,
22602         pp_c_relational_expression, pp_c_equality_expression,
22603         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
22604         use pp_string and pp_c_ws_string in place of pp_identifier and
22605         pp_c_identifier for non-identifiers.  Mark English strings for
22606         translation.
22607         * c-pretty-print.h (pp_c_ws_string): Declare.
22608
22609 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
22610             Roland McGrath <roland@redhat.com>
22611
22612         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
22613         (ENABLE_LD_BUILDID): New configuration option.
22614         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
22615         (LINK_BUILDID_SPEC): New macro.
22616         (init_spec): If defined, prepend it between LINK_EH_SPEC and
22617         link_spec.
22618         * doc/install.texi: Document --enable-linker-build-id option.
22619         * configure: Rebuild.
22620         * config.in: Rebuild.
22621
22622 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
22623
22624         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
22625         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
22626         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
22627         MIPS_GP_SAVE_AREA_SIZE.
22628         * config/mips/mips.c (struct mips_frame_info): Update comment
22629         before arg_pointer_offset and hard_frame_pointer_offset.
22630         (mips_compute_frame_info): Update diagram before function: to
22631         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
22632         indicate the position of frame_pointer_rtx with -fstack-protector and
22633         to show args_size.  Don't allocate cprestore area for leaf functions
22634         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
22635         cprestore_size.
22636         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
22637
22638 2009-04-30  Michael Matz  <matz@suse.de>
22639
22640         PR tree-optimization/39955
22641         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
22642
22643 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
22644
22645         * ira.c (setup_cover_and_important_classes):  Use safe macro
22646         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
22647         directly.
22648         * genpreds.c (write_tm_preds_h):  Output suitable definition of
22649         REG_CLASS_FOR_CONSTRAINT.
22650
22651 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22652
22653         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
22654         instead of an int.
22655         * bitmap.c (bitmap_descriptor): Likewise.
22656         * ggc-common.c (loc_descriptor): Likewise.
22657         * varray.c (varray_descriptor): Likewise.
22658         * vec.c (vec_descriptor): Likewise.
22659
22660 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
22661
22662         * Makefile.in (dce.o): Add $(EXCEPT_H).
22663         * dce.c: Include except.h and delete redundant vector definitions.
22664         (deletable_insn_p): Return false for non-call insns that can throw
22665         if DF is running.
22666
22667 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
22668
22669         * gcse.c (ae_gen): Remove.
22670         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
22671         and make non-static function to make it available in store-motion.c.
22672         Update call sites with search-and-replace.
22673         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
22674         extract_mentioned_regs, extract_mentioned_regs_helper,
22675         find_moveable_store, compute_store_table, load_kills_store, find_loads,
22676         store_killed_in_insn, store_killed_after, store_killed_before,
22677         build_store_vectors, insert_insn_start_basic_block, insert-store,
22678         remove_reachable_equiv_notes, replace_store_insn, delete_store,
22679         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
22680         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
22681         * store-motion.c: ...new file.  Also copy data structures from gcse.c
22682         and clean up to remove parts not used by store motion.
22683         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
22684         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
22685
22686 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22687
22688         PR target/38571
22689         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
22690         when optimizing for size.
22691
22692 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
22693
22694         * gcse.c (gcse_constant_p): Fix typo in last change.
22695
22696 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
22697
22698         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
22699
22700 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
22701
22702         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
22703
22704 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
22705
22706         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
22707         CONST_HIGH_PART result.
22708
22709 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
22710
22711         * config/avr/avr.c (initial_elimination_offset): Rename to
22712         avr_initial_elimination_offset.
22713         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
22714         change return type to bool.
22715         (avr_can_eliminate): New function.
22716         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
22717         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
22718         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
22719         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
22720         avr_initial_elimination_offset.
22721         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
22722         (avr_initial_elimination_offset): Define.
22723
22724 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
22725             Steven Bosscher  <steven@gcc.gnu.org>
22726
22727         PR rtl-optimization/39938
22728         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
22729         * cfgrtl.c: Include insn-attr.h.
22730         (rest_of_pass_free_cfg): New function.
22731         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
22732         * resource.c (init_resource_info): Remove call to df_analyze.
22733
22734 2009-04-29  Richard Guenther  <rguenther@suse.de>
22735
22736         PR target/39943
22737         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
22738         allow conversion to signed integers.
22739
22740 2009-04-29  Richard Guenther  <rguenther@suse.de>
22741
22742         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
22743         shifts of floating point vectors if the shift amount is
22744         a constant multiple of the element size.
22745
22746 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
22747             Michael Matz  <matz@suse.de>
22748
22749         PR middle-end/39927
22750         PR bootstrap/39929
22751         * tree-outof-ssa.c (emit_partition_copy): New function.
22752         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
22753         insert_part_to_rtx_on_edge): Perform the partition base var
22754         copy using emit_partition_copy.
22755         (insert_value_copy_on_edge): Convert constants to the right mode.
22756         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
22757         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
22758
22759 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22760
22761         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
22762         scan backwards to try to find a constant to initialize it.
22763
22764         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
22765         insn before the loop_end instruction, don't look past labels.
22766
22767 2009-04-29  Richard Guenther  <rguenther@suse.de>
22768
22769         PR middle-end/39937
22770         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
22771         loose type conversions.
22772         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
22773         stmts only if there are no uses of its definition.
22774
22775 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22776
22777         * config/bfin/bfin.h (splitting_loops): Declare.
22778         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
22779         Reorder bit definitions to be ascending.
22780         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
22781         * config/bfin/bfin.c (splitting_loops): New variable.
22782         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
22783         (struct loop_info): Remove members INIT and LOOP_INIT.
22784         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
22785         the LSETUP sequence.  Allow LC to be loaded from any register, but
22786         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
22787         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
22788         set to 1.
22789         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
22790         of reload_completed.
22791
22792         From Jie Zhang:
22793         * config/bfin/bfin.md (movsi_insn): Refine constraints.
22794
22795 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
22796
22797         * Makefile.in (PLUGIN_VERSION_H): New.
22798         (OBJS-common): Remove plugin-version.o.
22799         (plugin.o): Depend on (PLUGIN_VERSION_H).
22800         (plugin-version.o): Remove.
22801         * configure: Regenerate
22802         * configure.ac: Create plugin-version.h.
22803         * gcc-plugin.h (plugin_gcc_version): Remove.
22804         (plugin_default_version_check): Change signature.
22805         * plugin-version.c: Remove.
22806         * plugin.c: Include plugin-version.h.
22807         (str_plugin_gcc_version_name): Remove.
22808         (try_init_one_plugin): Pass gcc version to plugin_init.
22809         (plugin_default_version_check): Both gcc and plugin versions are now
22810         arguments.
22811
22812 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22813
22814         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
22815         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
22816         Remove special case testing for last insn of inner loops. Don't fail
22817         if the loop ends with a jump, emit an extra nop instead.
22818
22819         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
22820         DREGS rather than comparing directly.  Remove code that tries to
22821         account for latencies.
22822
22823 2009-04-29  Richard Guenther  <rguenther@suse.de>
22824
22825         PR tree-optimization/39941
22826         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
22827         eliminating an indirect call.
22828
22829 2009-04-29  Richard Guenther  <rguenther@suse.de>
22830
22831         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
22832         parameter.  Allow invariants as base if !require_lvalue.
22833         (verify_gimple_assign_single): Adjust.
22834
22835 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
22836
22837         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
22838         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
22839         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
22840         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
22841         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
22842         a VEC_SELECT.
22843         * config/bfin/bfin.c (bfin_expand_builtin,
22844         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
22845
22846 2009-04-28  Richard Guenther  <rguenther@suse.de>
22847
22848         * tree-vect-loop.c (get_initial_def_for_induction): Use
22849         correct types for pointer increment.
22850
22851 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22852
22853         * toplev.c (print_version): Update GMP version string calculation.
22854
22855 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
22856
22857         PR rtl-optimization/39938
22858         * resource.c (init_resource_info): Add call to df_analyze.
22859
22860 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22861
22862         * config/alpha/alpha.md (usegp): Cast the result of
22863         alpha_find_lo_sum_using_gp to enum attr_usegp.
22864         * config/alpha/alpha.c (override_options): Remove end-of-structure
22865         marker element from cpu_table.  Use array size of cpu_table to handle
22866         -mcpu and -mtune options.
22867         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
22868
22869 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
22870
22871         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
22872         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
22873         tune_32 and tune_64.
22874         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
22875         support on PowerPC.
22876         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
22877         * config/rs6000/option-defaults.h: ... here.  New file.
22878         (OPT_64, OPT_32): Define.
22879         (MASK_64BIT): Define to 0 if not already defined.
22880         (OPT_ARCH64, OPT_ARCH32): Define.
22881         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
22882         and tune_64.
22883
22884 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22885
22886         * config/arm/arm.c (arm_override_options): Emit error on using
22887         fpa with AAPCS.
22888
22889 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22890
22891         PR rtl-optimization/39914
22892         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
22893         registers for allocnos created from user-defined variables only
22894         when not optimizing.
22895
22896 2009-04-28  Richard Guenther  <rguenther@suse.de>
22897
22898         PR middle-end/39937
22899         * fold-const.c (fold_binary): Use distribute_real_division only
22900         on float types.
22901
22902 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
22903
22904         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
22905         add hpux-stdint.h to tm_file.
22906         (hppa[12]*-*-hpux11*): Ditto.
22907         (ia64*-*-hpux*): Ditto.
22908         * config/hpux-stdint.h: New.
22909         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
22910         __STDC_EXT__ for all compiles.
22911         * config/pa/pa-hpux.h: Ditto.
22912         * config/pa/pa-hpux10.h: Ditto.
22913         * config/pa/pa-hpux11.h: Ditto.
22914
22915 2009-04-28  Catherine Moore  <clm@codesourcery.com>
22916
22917         * debug.h (set_name): Add comment.
22918
22919 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
22920
22921         PR target/39929
22922         * config/darwin.c (machopic_gen_offset): Check
22923         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
22924         * config/arm/arm.c (require_pic_register): Likewise.
22925
22926 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
22927
22928         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
22929         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
22930         m32c_promote_prototypes): Delete.
22931
22932 2009-04-28  Michael Matz  <matz@suse.de>
22933
22934         PR middle-end/39922
22935         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
22936         constants.
22937
22938 2009-04-28  Richard Guenther  <rguenther@suse.de>
22939
22940         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
22941
22942 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
22943
22944         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
22945         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
22946         * config/arm/arm-tune.md: Regenerate.
22947
22948 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
22949
22950         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
22951         block if there are complex incoming edges.
22952         (sel_merge_blocks): Remove useless assert.
22953         (sel_redirect_edge_and_branch): Check that edge was redirected.
22954         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
22955         (sel_find_rgns): Delete declaration.
22956         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
22957         the region when it is not a preheader.
22958
22959 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
22960
22961         PR c/39323
22962         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
22963
22964 2009-04-28  Richard Guenther  <rguenther@suse.de>
22965
22966         * tree.h (SSA_NAME_VALUE): Remove.
22967         (struct tree_ssa_name): Remove value_handle member.
22968         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
22969         array for jump threading.
22970         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
22971         SSA_NAME_VALUEs.
22972         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
22973         * tree-flow.h (threadedge_initialize_values): Declare.
22974         (threadedge_finalize_values): Likewise.
22975         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
22976         (SSA_NAME_VALUE): Define.
22977         (threadedge_initialize_values): New function.
22978         (threadedge_finalize_values): Likewise.
22979         * tree-ssa-dom.c (ssa_name_values): New global variable.
22980         (SSA_NAME_VALUE): Define.
22981         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
22982
22983 2009-04-28  Ira Rosen  <irar@il.ibm.com>
22984
22985         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
22986         Use REPORT_VECTORIZED_LOCATIONS instead
22987         REPORT_VECTORIZED_LOOPS.
22988         * tree-vectorizer.c (vect_verbosity_level): Make static.
22989         (vect_loop_location): Rename to vect_location.
22990         (vect_set_verbosity_level): Update comment.
22991         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
22992         and vect_location.
22993         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
22994         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
22995         instead REPORT_UNVECTORIZED_LOOPS.
22996         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
22997         and vect_loop_def to vect_external_def and vect_internal_def.
22998         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
22999         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
23000         REPORT_UNVECTORIZED_LOCATIONS.
23001         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
23002         and vect_used_in_loop and to vect_unused_in_scope and
23003         vect_used_in_scope.
23004         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
23005         (vect_verbosity_level): Remove declaration.
23006         (vect_analyze_operations): Likewise.
23007         (vect_analyze_stmt): Declare.
23008         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
23009         REPORT_UNVECTORIZED_LOCATIONS.
23010         (vect_get_loop_niters): Fix indentation.
23011         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
23012         (vect_analyze_loop_operations): New function.
23013         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
23014         vect_analyze_operations.
23015         (vect_is_simple_reduction): Use new names.
23016         (vectorizable_live_operation, vect_transform_loop): Likewise.
23017         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
23018         to specify whether the data references can be a part of interleaving
23019         chain.
23020         (vect_analyze_data_ref_dependence): Use new names.
23021         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
23022         (vect_create_addr_base_for_vector_ref): Remove redundant code.
23023         * tree-vect-patterns.c (widened_name_p): Use new names.
23024         (vect_recog_dot_prod_pattern): Likewise.
23025         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
23026         (process_use, vect_mark_stmts_to_be_vectorized,
23027         vect_model_simple_cost, vect_model_store_cost,
23028         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
23029         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
23030         vectorizable_operation, vectorizable_type_demotion,
23031         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
23032         vectorizable_condition): Likewise.
23033         (vect_analyze_operations): Split into vect_analyze_loop_operations
23034         and ...
23035         (vect_analyze_stmt): ... new function.
23036         (new_stmt_vec_info): Use new names.
23037         (vect_is_simple_use): Use new names and fix comment.
23038         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
23039         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
23040
23041 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
23042
23043         PR target/39911
23044         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
23045         and integer modes for x87 operands.  Do not ICE for unsupported size,
23046         generate error instead.  Generate error for unsupported operand types.
23047         ['z']: Do not handle HImode memory operands specially.  Warning
23048         for floating-point operands.  Fallthru to 'Z' for unsupported operand
23049         types.  Do not ICE for unsupported size, generate error instead.
23050         (output_387_binary_op): Use %Z to output operands.
23051         (output_fp_compare): Ditto.
23052         (output_387_reg_move): Ditto.
23053
23054 2009-04-28  Ben Elliston  <bje@au.ibm.com>
23055
23056         PR c++/35652
23057         Revert:
23058
23059         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23060
23061         * builtins.c (c_strlen): Do not warn here.
23062         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
23063         * c-common.c (pointer_int_sum): Take an explicit location.
23064         Warn about offsets out of bounds.
23065         * c-common.h (pointer_int_sum): Adjust declaration.
23066
23067 2009-04-27  Ian Lance Taylor  <iant@google.com>
23068
23069         * collect2.c (is_ctor_dtor): Change type of ret field in struct
23070         names to symkind.
23071         * dce.c (run_fast_df_dce): Change type of old_flags to int.
23072         * df-core.c (df_set_flags): Change return type to int.  Change
23073         type of old_flags to int.
23074         (df_clear_flags): Likewise.
23075         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
23076         (df_get_conditional_uses): Likewise.
23077         * df.h (df_set_flags, df_clear_flags): Update declarations.
23078         * dwarf2out.c (struct indirect_string_node): Change type of form
23079         field to enum dwarf_form.
23080         (AT_string_form): Change return type to enum dwarf_form.
23081         * fixed-value.c (fixed_compare): Add cast to enum type.
23082         * fwprop.c (update_df): Change 0 to VOIDmode.
23083         * gensupport.c: Change 0 to UNKNOWN.
23084         * gimple.h (gimple_cond_code): Add cast to enum type.
23085         * haifa-sched.c (reemit_notes): Add cast to enum type.
23086         * hooks.c (hook_int_void_no_regs): Remove function.
23087         * hooks.h (hook_int_void_no_regs): Remove declaration.
23088         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
23089         * predict.c (combine_predictions_for_insn): Add casts to enum type.
23090         * real.c (real_arithmetic): Add cast to enum type.
23091         (real_compare): Likewise.
23092         * target.h (struct gcc_target): Change return type of
23093         branch_target_register_class to enum reg_class.
23094         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
23095         default_branch_target_register_class.
23096         * targhooks.c (default_branch_target_register_class): New function.
23097         * targhooks.h (default_branch_target_register_class): Declare.
23098         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
23099         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
23100         cast to int.
23101         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
23102         ERROR_MARK.
23103         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
23104         vect_uninitialized_def.  Change 0 to ERROR_MARK.
23105         * tree-vect-stmts.c (supportable_widening_operation): Don't
23106         initialize icode1 and icode2.
23107         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
23108         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
23109         and to STD_C89.
23110         (cmn_err_flag_specs): Change 0 to STD_C89.
23111         (cmn_err_char_table): Likewise.
23112         * config/arm/arm.c (get_arm_condition_code): Change type of code
23113         to enum arm_cond_code.
23114         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
23115         (IWMMXT_BUILTIN2): Likewise.
23116         (neon_builtin_type_bits): Don't define typedef.
23117         (neon_builtin_datum): Change type of bits field to int.
23118         (arm_expand_neon_args): Add cast to enum type.
23119         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
23120         TLS_MODEL_NONE.
23121         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
23122         casts to enum type.
23123         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
23124         MIPS_FP_COND_f.
23125         * config/mips/mips.md (jal_macro): Return enum constant.
23126         (single_insn): Likewise.
23127         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
23128         CODE_FOR_nothing.
23129         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23130         casts to enum type.
23131         * config/s390/s390.c (s390_tune_flags): Change type to int.
23132         (s390_arch_flags): Likewise.
23133         (s390_handle_arch_option): Change flags field of struct pta to int.
23134         * config/s390/s390.h (s390_tune_flags): Update declaration.
23135         (s390_arch_flags): Likewise.
23136         * config/sh/sh.c (prepare_move_operands): Compare
23137         tls_symbolic_operand result with enum constant.
23138         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
23139         (sh_expand_prologue): Add cast to enum type.
23140         (sh_expand_epilogue): Likewise.
23141         (tls_symbolic_operand): Change return type to enum tls_model.
23142         (fpscr_set_from_mem): Add cast to enum type.
23143         (legitimize_pic_address): Compare tls_symbolic_operand result with
23144         enum constant.
23145         (sh_target_reg_class): Change return type to enum reg_class.
23146         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
23147         PROCESSOR_xxx.
23148         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
23149         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
23150         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
23151         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
23152         (delayed_branch, tls_call_delay): Likewise.
23153         (eligible_for_sibcall_delay): Likewise.
23154         (eligible_for_return_delay): Likewise.
23155         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
23156         (spu_expand_builtin_1): Likewise.
23157
23158         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
23159         for all types of conversions.
23160         (output_init_element): Issue -Wc++-compat warning if needed when
23161         initializing a bitfield with enum type.
23162         * c-parser.c (c_parser_expression): Set original_type to
23163         original_type of right hand operand of comma operator.
23164
23165 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23166
23167         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
23168         grammar nits.
23169         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
23170         * doc/cpp.texi (Standard Predefined Macros)
23171         (Implementation-defined behavior): Likewise.
23172         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
23173         * doc/gimple.texi (GIMPLE Exception Handling)
23174         (@code{GIMPLE_ASSIGN}): Likewise.
23175         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
23176         * doc/invoke.texi (Warning Options, Optimize Options)
23177         (AVR Options, Darwin Options): Likewise.
23178         (Optimize Options): Reformulate -fwhole-program description.
23179         * doc/loop.texi (Lambda): Likewise.
23180         * doc/md.texi (Output Template, Define Constraints)
23181         (Standard Names, Insn Splitting): Likewise.
23182         * doc/options.texi (Option properties): Likewise.
23183         * doc/passes.texi (Tree-SSA passes): Likewise.
23184         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
23185         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
23186         (File Names and DBX): Likewise.
23187         * doc/trouble.texi (Incompatibilities): Likewise.
23188
23189 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23190
23191         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
23192         instruction is correct.
23193
23194 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
23195
23196         Allow non-constant arguments to conversion intrinsics.
23197         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
23198         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
23199         * spu.c (print_operand): Handle 'v' and 'w'.
23200         (exp2_immediate_p, spu_gen_exp2): Define.
23201         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
23202         spu_convtf_1): Update parameter descriptions.
23203         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
23204         * constraints.md ('v', 'w'): New.
23205         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
23206         Remove.
23207         (i2f, I2F): New define_mode_attr.
23208         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
23209         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
23210         fixuns_truncv4sfv4si2):  Update to use mode attribute.
23211         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
23212         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
23213         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
23214         patterns for combine.
23215
23216 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
23217
23218         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
23219         (cprop, hoist, pre, store_motion): New debug counters.
23220         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
23221         is not an RTL pass anymore.
23222         (pass_profiling): Remove extern decl for pass removed in 2005.
23223         (pass_gcse, pass_jump_bypass): Remove.
23224         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
23225         to 0 for clean state.
23226         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
23227         * cse.c (gate_handle_cse_after_global_opts,
23228         rest_of_handle_cse_after_global_opts): New functions.
23229         (pass_cse_after_global_opts): New pass, does local CSE.
23230         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
23231         (TV_CPROP): New timevar.
23232         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
23233         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
23234         (gcse_main, recompute_all_luids): Remove.
23235         (compute_hash_table_work): Call max_reg_num instead of reading
23236         max_gcse_regno.
23237         (cprop_jump): Don't set run_jump_opt_after_gcse.
23238         (constprop_register): Always allow to alter jumps.
23239         (cprop_insn): Likewise.
23240         (do_local_cprop): Likewise.
23241         (local_cprop_pass): Likewise.  Return non-zero if something changed.
23242         (cprop): Remove function, fold interesting bits into one_cprop_pass.
23243         (find_implicit_sets): Add note about missed optimization opportunity.
23244         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
23245         pass_rtl_cprop execute function.
23246         Don't bother tracking the pass number, each pass gets its own dumpfile
23247         now anyway.
23248         Always allow to alter jumpsand bypass jumps.
23249         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
23250         will just find no suitable set.
23251         (pre_edge_insert): Fix dumping, this function is for PRE only.
23252         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
23253         pass_rtl_pre execute function.
23254         (hoist_code): Return non-zero if something changed.  Keep track of
23255         substitutions and insertions for statistics gathering similar to PRE.
23256         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
23257         called from the pass_rtl_hoist execute function.  Show pass statistics.
23258         (compute_store_table): Use max_reg_num directly instead of using the
23259         formerly global max_gcse_regno.
23260         (build_store_vectors): Likewise.
23261         (replace_store_insn): Fix dumping.
23262         (store_motion): Rename to ...
23263         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
23264         pass, called from the pass_rtl_store_motion execute function.  Keep
23265         track of substitutions and insertions for statistics gathering similar
23266         to PRE.
23267         (bypass_jumps): Remove, fold interesting bits into ...
23268         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
23269         from the pass_rtl_cprop execute function.
23270         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
23271         pass_jump_bypass): Remove.
23272         (gate_handle_gcse, rest_of_handle_gcse): Remove.
23273         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
23274         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
23275         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
23276         (gate_rtl_store_motion, execute_rtl_store_motion,
23277         pass_rtl_store_motion): New.
23278         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
23279         make it clear that -fcse-skip-blocks is a no-op for backward compat.
23280         * passes.c (init_optimization_passes): Remove pass_gcse and
23281         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
23282         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
23283         instead of pass_jump_bypass.
23284
23285 2009-04-27  Richard Guenther  <rguenther@suse.de>
23286
23287         PR middle-end/39928
23288         * gimplify.c (gimplify_expr): If we are required to create
23289         a temporary make sure it ends up as register.
23290
23291 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
23292
23293         PR target/39903
23294         * config/i386/i386.c (construct_container): Don't call
23295         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
23296         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
23297
23298 2009-04-27  Michael Matz  <matz@suse.de>
23299
23300         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
23301         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
23302         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
23303         (dump_replaceable_exprs): Take a bitmap.
23304         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
23305         array.
23306         (expand_gimple_basic_block): Likewise.
23307         * tree-ssa-ter.c (struct temp_expr_table_d): Make
23308         replaceable_expressions member a bitmap.
23309         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
23310         (mark_replaceable): Likewise.
23311         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
23312         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
23313
23314 2009-04-27  Richard Guenther  <rguenther@suse.de>
23315
23316         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
23317         (verify_stmts): Dispatch to gimple/type verification code.
23318         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
23319         issue with call argument types.
23320
23321 2009-04-27  Michael Matz  <matz@suse.de>
23322
23323         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
23324         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
23325         to above.
23326
23327 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
23328             Eric Botcazou  <ebotcazou@adacore.com>
23329
23330         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
23331         a label's basic block.
23332         (mark_target_live_regs): Tidy and rework obsolete comments.
23333         Change back DF problem to LIVE.  If a label starts a basic block,
23334         assume that all registers that used to be live then still are.
23335         (init_resource_info): If a label starts a basic block, set its
23336         BLOCK_FOR_INSN accordingly.
23337         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
23338
23339 2009-04-27  Richard Guenther  <rguenther@suse.de>
23340
23341         * tree-flow-inline.h (function_ann): Remove.
23342         (get_function_ann): Likewise.
23343         * tree-dfa.c (create_function_ann): Remove.
23344         * tree-flow.h (struct static_var_ann_d): Remove.
23345         (struct function_ann_d): Likewise.
23346         (union tree_ann_d): Remove fdecl member.
23347         (function_ann_t): Remove.
23348         (function_ann, get_function_ann, create_function_ann): Remove
23349         declarations.
23350
23351 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
23352
23353         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
23354
23355 2009-04-27  Jan Hubicka  <jh@suse.cz>
23356
23357         * ipa-pure-const.c (struct funct_state_d): New fields
23358         state_previously_known, looping_previously_known; remove
23359         state_set_in_source.
23360         (analyze_function): Use new fields.
23361         (propagate): Avoid assumption that state_set_in_source imply
23362         nonlooping.
23363
23364         * tree-ssa-loop-niter.c (finite_loop_p): New function.
23365         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
23366         * cfgloop.h (finite_loop_p): Declare.
23367
23368 2009-04-26  Michael Matz  <matz@suse.de>
23369
23370         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
23371
23372 2009-04-26  Michael Matz  <matz@suse.de>
23373
23374         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
23375         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
23376         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
23377         pass_mark_used_blocks): Remove.
23378         * tree-optimize.c (pass_free_datastructures,
23379         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
23380         * passes.c (init_optimization_passes): Don't call
23381         pass_mark_used_blocks, remove dead code.
23382
23383 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
23384
23385         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
23386         * tree-ssa-live.h (register_ssa_partition): Likewise.
23387
23388 2009-04-26  Michael Matz  <matz@suse.de>
23389
23390         Expand from SSA.
23391         * builtins.c (fold_builtin_next_arg): Handle SSA names.
23392         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
23393         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
23394         SSA names.
23395         (compare_pairs): Swap cost comparison.
23396         (coalesce_ssa_name): Don't use change_partition_var.
23397         * tree-nrv.c (struct nrv_data): Add modified member.
23398         (finalize_nrv_r): Set it.
23399         (tree_nrv): Use it to update statements.
23400         (pass_nrv): Require PROP_ssa.
23401         * tree-mudflap.c (mf_decl_cache_locals,
23402         mf_build_check_statement_for): Use make_rename_temp.
23403         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
23404         * alias.c (find_base_decl): Handle SSA names.
23405         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
23406         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
23407         * rtl.h (set_reg_attrs_for_parm): Declare.
23408         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
23409         to "optimized", remove unused locals at finish.
23410         (execute_free_datastructures): Make global, call
23411         delete_tree_cfg_annotations.
23412         (execute_free_cfg_annotations): Don't call
23413         delete_tree_cfg_annotations.
23414
23415         * ssaexpand.h: New file.
23416         * expr.c (toplevel): Include ssaexpand.h.
23417         (expand_assignment): Handle SSA names the same as register variables.
23418         (expand_expr_real_1): Expand SSA names.
23419         * cfgexpand.c (toplevel): Include ssaexpand.h.
23420         (SA): New global variable.
23421         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
23422         (SSAVAR): New macro.
23423         (set_rtl): New helper function.
23424         (add_stack_var): Deal with SSA names, use set_rtl.
23425         (expand_one_stack_var_at): Likewise.
23426         (expand_one_stack_var): Deal with SSA names.
23427         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
23428         before unique numbers.
23429         (expand_stack_vars): Use set_rtl.
23430         (expand_one_var): Accept SSA names, add asserts for them, feed them
23431         to above subroutines.
23432         (expand_used_vars): Expand all partitions (without default defs),
23433         then only the local decls (ignoring those expanded already).
23434         (expand_gimple_cond): Remove edges when jumpif() expands an
23435         unconditional jump.
23436         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
23437         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
23438         SSA name.
23439         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
23440         members of SA; deal with PARM_DECL partitions here; expand
23441         all PHI nodes, free tree datastructures and SA.  Commit instructions
23442         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
23443         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
23444         info and statements at start, collect garbage at finish.
23445         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
23446         (VAR_ANN_PARTITION) Remove.
23447         (change_partition_var): Don't declare.
23448         (partition_to_var): Always return SSA names.
23449         (var_to_partition): Only accept SSA names.
23450         (register_ssa_partition): Only check argument.
23451         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
23452         member.
23453         (delete_var_map): Don't free it.
23454         (var_union): Only accept SSA names, simplify.
23455         (partition_view_init): Mark only useful SSA names as used.
23456         (partition_view_fini): Only deal with SSA names.
23457         (change_partition_var): Remove.
23458         (dump_var_map): Use ssa_name instead of partition_to_var member.
23459         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
23460         basic blocks.
23461         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
23462         (struct _elim_graph): New member const_dests; nodes member vector of
23463         ints.
23464         (set_location_for_edge): New static helper.
23465         (create_temp): Remove.
23466         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
23467         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
23468         (new_elim_graph): Allocate const_dests member.
23469         (clean_elim_graph): Truncate const_dests member.
23470         (delete_elim_graph): Free const_dests member.
23471         (elim_graph_size): Adapt to new type of nodes member.
23472         (elim_graph_add_node): Likewise.
23473         (eliminate_name): Likewise.
23474         (eliminate_build): Don't take basic block argument, deal only with
23475         partition numbers, not variables.
23476         (get_temp_reg): New static helper.
23477         (elim_create): Use it, deal with RTL temporaries instead of trees.
23478         (eliminate_phi): Adjust all calls to new signature.
23479         (assign_vars, replace_use_variable, replace_def_variable): Remove.
23480         (rewrite_trees): Only do checking.
23481         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
23482         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
23483         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
23484         contains_tree_r, MAX_STMTS_IN_LATCH,
23485         process_single_block_loop_latch, analyze_edges_for_bb,
23486         perform_edge_inserts): Remove.
23487         (expand_phi_nodes): New global function.
23488         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
23489         functions, initialize new parameter, remember partitions having a
23490         default def.
23491         (finish_out_of_ssa): New global function.
23492         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
23493         don't reset in_ssa_p here, don't disable TER when mudflap.
23494         (pass_del_ssa): Remove.
23495         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
23496         partition members.
23497         (execute_free_datastructures): Declare.
23498         * Makefile.in (SSAEXPAND_H): New variable.
23499         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
23500         * basic-block.h (commit_one_edge_insertion): Declare.
23501         * passes.c (init_optimization_passes): Move pass_nrv and
23502         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
23503         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
23504         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
23505         (redirect_branch_edge): Deal with super block when expanding, split
23506         out jump patching itself into ...
23507         (patch_jump_insn): ... here, new static helper.
23508
23509 2009-04-26  Michael Matz  <matz@suse.de>
23510
23511         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
23512         beyond num_ssa_names.
23513         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
23514         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
23515
23516 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23517
23518         PR inline-asm/39543
23519         * fwprop.c (forward_propagate_asm): New function.
23520         (forward_propagate_and_simplify): Propagate also into __asm, if it
23521         doesn't increase the number of referenced registers.
23522
23523         PR c/39889
23524         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
23525
23526 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
23527
23528         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
23529         note_nonlocal_vla_type for nonlocal VLAs.
23530         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
23531         contains_remapped_vars, remap_vla_decls): New functions.
23532         (convert_nonlocal_reference_stmt): If not optimizing, call
23533         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
23534         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
23535         if it wasn't found in var_map.
23536         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
23537         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
23538         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
23539         declare_vars.
23540         * gimplify.c (nonlocal_vlas): New variable.
23541         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
23542         referenced VLAs.
23543         (gimplify_body): Create and destroy nonlocal_vlas.
23544
23545         * dwarf2out.c (loc_descr_plus_const): New function.
23546         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
23547         mem_loc_descriptor, loc_descriptor_from_tree_1,
23548         descr_info_loc, gen_variable_die): Use it.
23549
23550         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
23551         !TREE_STATIC VAR_DECLs.
23552         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
23553         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
23554         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
23555         DECL_BY_REFERENCE is valid.
23556         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
23557         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
23558         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
23559         Copy DECL_BY_REFERENCE.
23560         (struct nesting_copy_body_data): New type.
23561         (nesting_copy_decl): New function.
23562         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
23563         if they have variable length.
23564
23565 2009-04-26  Michael Matz  <matz@suse.de>
23566
23567         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
23568         mark new temporaries for renaming.
23569
23570 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23571
23572         PR c/39581
23573         * c-decl.c (global_bindings_p): Return negative value.
23574         (c_variable_size): New.  Based on variable_size from
23575         stor-layout.c.
23576         (grokdeclarator): Call c_variable_size not variable_size.
23577
23578 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
23579
23580         * config/i386/i386.c (print_operand) ['z']: Fix typo.
23581
23582 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
23583
23584         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
23585         Redefine it to just use mingw/include.
23586         (ASM_SPEC): Rules for -m32 and -m64.
23587         (LINK_SPEC): Use Likewise.
23588         (SPEC_32): New define.
23589         (SPEC_64): Likewise.
23590         (SUB_LINK_SPEC): Likewise.
23591         (MULTILIB_DEFAULTS): New define.
23592         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
23593         Add multilib options.
23594         (MULTILIB_DIRNAMES): Likewise.
23595         (MULTILIB_OSDIRNAMES): Likewise.
23596         (LIBGCC): Likewise.
23597         (INSTALL_LIBGCC): Likewise.
23598
23599 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
23600
23601         PR c/39556
23602         * c-tree.h (enum c_inline_static_type): New.
23603         (record_inline_static): Declare.
23604         * c-decl.c (struct c_inline_static, c_inline_statics,
23605         record_inline_static, check_inline_statics): New.
23606         (pop_file_scope): Call check_inline_statics.
23607         (start_decl): Call record_inline_static instead of pedwarning
23608         directly for static in inline function.
23609         * c-typeck.c (build_external_ref): Call record_inline_static
23610         instead of pedwarning directly for static referenced in inline
23611         function.
23612
23613 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
23614
23615         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
23616         not new but only being rescanned.
23617         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
23618         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
23619         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
23620         record_set_info, compute_set, grealloc): Remove.
23621         (recompute_all_luids): New function.
23622         (gcse_main): Don't compute sets, and don't do related memory
23623         allocations/free-ing.  If something changed before the end of the
23624         pass, update LUIDs using recompute_all_luids.
23625         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
23626         (free_gcse_mem): Don't free it either.
23627         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
23628         Use the df insn LUIDs.
23629         (load_killed_in_block): Likewise.
23630         (compute_hash_table_work): Don't compute reg_set_in_block.
23631         (compute_transp): Use DF_REG_DEF_CHAINs.
23632         (local_cprop_pass): Don't use compute_sets and related functions.
23633         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
23634         Use get_max_uid() instead of max_cuid.
23635         (insert_insn_end_basic_block, pre_insert_copy_insn,
23636         update_ld_motion_stores): Don't try to
23637         keep reg_set tables up to date.
23638         (pre_insert_copies): Use df insn LUIDs.
23639         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
23640         (reg_set_info): Don't use extra bitmap argument.
23641         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
23642         information to compute regs_set_in_block.
23643         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
23644         (bypass_jumps): Don't use compute_sets and friends.
23645
23646 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23647
23648         PR testsuite/39710
23649         * opts.c (undocumented_msg): Do not leave blank even with
23650         ENABLE_CHECKING.
23651
23652 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23653
23654         * c-decl.c (build_enumerator): Allow values folding to integer
23655         constants but not integer constant expressions with a pedwarn if
23656         pedantic.
23657
23658 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23659
23660         PR c/39582
23661         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
23662         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
23663         type is an integer constant.
23664
23665 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23666
23667         PR target/39897
23668         * config/i386/i386.c (print_operand) ['z']: Revert handling of
23669         HImode operands.
23670
23671 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
23672
23673         PR c/39564
23674         * c-decl.c (grokdeclarator): Diagnose declarations of functions
23675         with variably modified return type and no storage class
23676         specifiers, except for the case of nested functions.  Distinguish
23677         extern declarations of functions with variably modified return
23678         types from those of objects with variably modified types.
23679
23680 2009-04-25  Jan Hubicka  <jh@suse.cz>
23681
23682         * tree.c (list_equal_p): New function.
23683         * tree.h (list_equal_p): Declare.
23684         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23685         basic_block_def, basic_block, const_basic_block): New.
23686         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
23687         (redirect_eh_edge): New function.
23688         (make_eh_edge_update_phi): EH edges are not abnormal.
23689         * except.c: Include tree-flow.h.
23690         (list_match): New function.
23691         (eh_region_replaceable_by_p): New function.
23692         (replace_region): New function.
23693         (hash_type_list): New function.
23694         (hash_eh_region): New function.
23695         (eh_regions_equal_p): New function.
23696         (merge_peers): New function.
23697         (remove_unreachable_regions): Verify EH tree when checking;
23698         merge peers.
23699         (copy_eh_region_1): New function.
23700         (copy_eh_region): New function.
23701         (push_reachable_handler): New function.
23702         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
23703         regions without label but with live RESX.
23704         * except.h (redirect_eh_edge_to_label): New.
23705         * tree-flow.h (redirect_eh_edge): New.
23706         * coretypes.h (edge_def, edge, const_edge, basic_block_def
23707         basic_block_def, basic_block, const_basic_block): Remove.
23708         * Makefile.in (except.o): Add dependency on tree-flow.h
23709         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
23710         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
23711         Remove.
23712
23713 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
23714
23715         PR bootstrap/39645
23716         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
23717         on the destination of memcpy.
23718
23719 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
23720
23721         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
23722         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
23723         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
23724
23725 2009-04-25  Jan Hubicka  <jh@suse.cz>
23726
23727         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
23728         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
23729         to be reached by different label than left.
23730         (update_eh_edges): Update comment; remove edge_to_remove if possible
23731         and return true if suceeded.
23732         (cleanup_empty_eh): Accept sharing map; handle shared regions.
23733         (cleanup_eh): Compute sharing map.
23734         * except.c (remove_eh_handler_and_replace): Add argument if we should
23735         update regions.
23736         (remove_unreachable_regions): Update for label sharing.
23737         (label_to_region_map): Likewise.
23738         (get_next_region_sharing_label): New function.
23739         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
23740         prev_try pointers.
23741         (remove_eh_handler): Update.
23742         (remove_eh_region_and_replace_by_outer_of): New function.
23743         * except.h (struct eh_region): Add next_region_sharing_label.
23744         (remove_eh_region_and_replace_by_outer_of,
23745         get_next_region_sharing_label): Declare.
23746         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
23747
23748 2009-04-25  Jan Hubicka  <jh@suse.cz>
23749
23750         * tree-cfg.c (split_critical_edges): Split also edges where we can't
23751         insert code even if they are not critical.
23752
23753 2009-04-25  Jan Hubicka  <jh@suse.cz>
23754
23755         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23756         (gimple_can_remove_branch_p): EH edges won't remove branch by
23757         redirection.
23758         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
23759         updating of non-abnormal EH edges.
23760         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
23761         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
23762         (split_critical_edges): Split also edges where emitting code on them
23763         will lead to splitting later.
23764
23765 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
23766             H.J. Lu  <hongjiu.lu@intel.com>
23767
23768         PR target/39590
23769         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
23770         the configured assembler supports fildq and fistpq mnemonics.
23771         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
23772         * configure: Regenerated.
23773         * config.in: Ditto.
23774
23775         * config/i386/i386.c (print_operand): Handle 'Z'.
23776         ['z']: Remove handling of special fild/fist suffixes.
23777         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
23778         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
23779         suffix of fild insn.
23780         (*floatsi<mode>2_vector_mixed): Ditto.
23781         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
23782         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
23783         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
23784         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
23785         * config/i386/gas.h (GAS_MNEMONICS): Remove.
23786
23787 2009-04-25  Ben Elliston  <bje@au.ibm.com>
23788
23789         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
23790         the source of a set operation.
23791
23792 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
23793
23794         * target.h (struct gcc_target): Add case_values_threshold field.
23795         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
23796         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
23797         * targhooks.c (default_case_values_threshold): New function.
23798         * targhooks.h (default_case_values_threshold): Declare function.
23799         * stmt.c (expand_case): Use case_values_threshold target hook.
23800         * expr.h (case_values_threshold): Remove declartation.
23801         * expr.c (case_values_threshold): Remove function.
23802         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
23803
23804         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
23805         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23806         (avr_case_values_threshold): Declare as static.
23807         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
23808
23809         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
23810         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
23811         (mn10300_case_values_threshold): New function.
23812
23813 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23814
23815         * ira.c (setup_cover_and_important_classes): Add enum cast.
23816
23817 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
23818
23819         * genpreds.c (write_enum_constraint_num): Output definition of
23820         CONSTRAINT_NUM_DEFINED_P macro.
23821         * ira.c (setup_cover_and_important_classes): Use
23822         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
23823
23824 2009-04-24  DJ Delorie  <dj@redhat.com>
23825
23826         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
23827         __SH2A_SINGLE_ONLY__ also.
23828
23829 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
23830
23831         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
23832         (movdf_internal): Ditto.
23833         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
23834         SFmode and DFmode constants.
23835         (ia64_print_operand): Add 'G' format for printing
23836         floating point constants.
23837
23838 2009-04-24  Richard Guenther  <rguenther@suse.de>
23839
23840         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
23841         from unsigned additions.
23842
23843 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
23844
23845         * c-typeck.c (set_init_index): Allow array designators that are
23846         not integer constant expressions with a pedwarn if pedantic.
23847
23848 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23849
23850         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
23851         zero if no overlap in nonzero bits between the operands.
23852
23853 2009-04-24  Ian Lance Taylor  <iant@google.com>
23854
23855         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
23856         (record_dead_and_set_regs): Likewise.
23857         * df.h (struct df_mw_hardreg): Change flags field to int.
23858         (struct df_base_ref): Likewise.
23859         (struct df): Change changeable_flags field to int.
23860         * df-scan.c (df_defs_record): Change clobber_flags to int.
23861         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
23862         constants rather than #define macros.
23863         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
23864         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
23865         (enum dwarf_calling_convention): Likewise.
23866         (enum dwarf_line_number_x_ops): Likewise.
23867         (enum dwarf_call_frame_info): Likewise.
23868         (enum dwarf_source_language): Likewise.
23869         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
23870         (add_calling_convention_attribute): Likewise.
23871         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
23872         (combine_comparisons): Change compcode to int.  Add cast to enum type.
23873         * genrecog.c (maybe_both_true_2): Change c to int.
23874         (write_switch): Likewise.  Add cast to enum type.
23875         * gimplify.c (gimplify_omp_for): Handle return values from
23876         gimplify_expr using MIN rather than bitwise or.
23877         (gimplify_expr): Add cast to enum type.
23878         * ipa-prop.c (update_jump_functions_after_inlining): Change
23879         IPA_BOTTOM to IPA_JF_UNKNOWN.
23880         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
23881         Add casts to enum type.
23882         (setup_cover_and_important_classes): Change cl to int.  Add casts
23883         to enum type.
23884         (setup_class_translate): Change cl and mode to int.
23885         (ira_init_once): Change mode to int.
23886         (free_register_move_costs): Likewise.
23887         (setup_prohibited_mode_move_regs): Add casts to enum type.
23888         * langhooks.c (add_builtin_function_common): Rework assertion that
23889         value fits bitfield.
23890         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
23891         * omega.c (omega_do_elimination): Avoid math on enum types.
23892         * optabs.c (expand_vec_shift_expr): Remove casts to int.
23893         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
23894         int local to handle integral_argment value.
23895         * regmove.c (try_auto_increment): Change PUT_MODE to
23896         PUT_REG_NOTE_KIND.
23897         * reload.c (push_secondary_reload): Add casts to enum type.
23898         (secondary_reload_class, find_valid_class): Likewise.
23899         * reload1.c (emit_input_reload_insns): Likewise.
23900         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
23901         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
23902         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
23903         constant.
23904         * tree.c (build_common_builtin_nodes): Add casts to enum type.
23905         * tree-complex.c (complex_lattice_t): Typedef to int rather than
23906         enum type.
23907         (expand_complex_libcall): Add casts to enum type.
23908         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
23909         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
23910         with ERROR_MARK, not NUM_TREE_CODES.
23911         (vect_create_epilog_for_reduction): Likewise.
23912         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
23913         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
23914         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
23915         enum machine_mode.
23916         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
23917         vect_unused_in_loop.  Change 0 to loop_vect.
23918         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
23919         * var-tracking.c (get_init_value): Change return type to enum
23920         var_init_status.
23921         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
23922         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
23923         arm_fp_model.
23924         (arm_override_options): Add casts to enum type.
23925         (arm_emit_tls_decoration): Likewise.
23926         * config/i386/i386.c (ix86_function_specific_restore): Add casts
23927         to enum type.
23928         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
23929         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
23930         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
23931         enum type.
23932         * config/s390/s390.c (code_for_builtin_64): Change to array of
23933         enum insn_code.
23934         (code_for_builtin_31): Likewise.
23935         (s390_expand_builtin): Change code_for_builtin to enum insn_code
23936         const *.
23937         * config/sparc/sparc.c (sparc_override_options): Change value
23938         field in struct code_model to enum cmodel.  In initializer change
23939         0 to NULL and add cast to enum type.
23940
23941         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
23942         Change all callers.  Issue a -Wc++-compat warning using
23943         lhs_origtype if necessary.
23944         (convert_for_assignment): Issue -Wc++-compat warnings about
23945         invalid conversions to enum type on assignment.
23946         * c-common.h (build_modify_expr): Update declaration.
23947
23948 2009-04-24  Nick Clifton  <nickc@redhat.com>
23949
23950         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
23951         (function_arg_advance): Likewise.
23952         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
23953         5th alternative.
23954
23955 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
23956
23957         * config/s390/constraints.md ('I', 'J'): Fix condition.
23958
23959 2009-04-24  Diego Novillo  <dnovillo@google.com>
23960
23961         * gengtype-parse.c (parse_error): Add newline after message.
23962
23963 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
23964
23965         * config/i386/sse.md (avxmodesuffixs): Removed.
23966         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
23967         (*avx_pinsr<ssevecsize>): This.
23968
23969 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23970
23971         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
23972         follow chains of regs with a single definition, and allow expressions
23973         that are function_invariant_p.
23974         (simple_rhs_p): Allow expressions that are function_invariant_p.
23975
23976 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
23977
23978         PR middle-end/39867
23979         * fold-const.c (fold_cond_expr_with_comparison): When folding
23980         > and >= to MAX, make sure the MAX uses the same type as the
23981         comparison's operands.
23982
23983 2009-04-24  Nick Clifton  <nickc@redhat.com>
23984
23985         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
23986         addressing for DImode accesses.
23987         (frv_print_operand_address): Handle PLUS case.
23988         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
23989
23990 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
23991
23992         PR rtl-optimization/39794
23993         * alias.c (canon_true_dependence): Add x_addr argument.
23994         * rtl.h (canon_true_dependence): Adjust prototype.
23995         * cse.c (check_dependence): Adjust canon_true_dependence callers.
23996         * cselib.c (cselib_invalidate_mem): Likewise.
23997         * gcse.c (compute_transp): Likewise.
23998         * dse.c (scan_reads_nospill): Likewise.
23999         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
24000         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
24001         canon_base_addr of the group, plus optional offset.
24002         (struct group_info): Rename canon_base_mem to
24003         canon_base_addr.
24004         (get_group_info): Set canon_base_addr to canon_rtx of base, not
24005         canon_rtx of base_mem.
24006
24007 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
24008
24009         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
24010         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
24011
24012 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24013
24014         * config/spu/spu-builtins.h: Delete file.
24015
24016         * config/spu/spu.h (enum spu_builtin_type): Move here from
24017         spu-builtins.h.
24018         (struct spu_builtin_description): Likewise.  Add GTY marker.
24019         Do not use enum spu_function_code or enum insn_code.
24020         (spu_builtins): Add extern declaration.
24021
24022         * config/spu/spu.c: Do not include "spu-builtins.h".
24023         (enum spu_function_code, enum spu_builtin_type_index,
24024         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
24025         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
24026         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
24027         unsigned_V2DI_type_node): Move here from spu-builtins.h.
24028         (spu_builtin_types): Make static.  Add GTY marker.
24029         (spu_builtins): Add extern declaration with GTY marker.
24030         Include "gt-spu.h".
24031
24032         * config/spu/spu-c.c: Do not include "spu-builtins.h".
24033         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
24034         Check programmatically whether all parameters are scalar.
24035
24036         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
24037
24038 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
24039
24040         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
24041         assignment from the constructor either if the target is volatile.
24042
24043 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
24044
24045         * config/arm/arm.md (insv): Do not share operands[0].
24046
24047 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
24048
24049         * config/vxlib-tls.c (active_tls_threads): Delete.
24050         (delete_hook_installed): New.
24051         (tls_delete_hook): Don't delete the delete hook.
24052         (tls_destructor): Delete it here.
24053         (__gthread_set_specific): Adjust installing the delete hook.
24054         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
24055         __gthread_leave_tsd_dtor_context.
24056
24057 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
24058
24059         * c-format.c (gcc_tdiag_char_table): Add support for %E.
24060
24061 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
24062
24063         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
24064         enum type.
24065         (alpha_rtx_costs): Ditto.
24066         (emit_unlikely_jump): Use add_reg_note.
24067         (emit_frame_store_1): Ditto.
24068         (alpha_expand_prologue): Ditto.
24069         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24070         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
24071
24072 2009-04-23  Nick Clifton  <nickc@redhat.com>
24073
24074         * config/v850/v850.md (epilogue): Remove suppressed code.
24075         (return): Rename to return_simple and remove test of frame size.
24076         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
24077         to gen_return_simple.
24078
24079 2009-04-22  Jing Yu  <jingyu@google.com>
24080
24081         PR testsuite/39781
24082         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
24083
24084 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24085
24086         PR C/31499
24087         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
24088         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
24089         value is a VECTOR_CST, the element type is the element type of the
24090         vector.
24091
24092 2009-04-22  DJ Delorie  <dj@redhat.com>
24093
24094         * config/m32c/m32c.h: Update GTY annotations to new syntax.
24095
24096 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
24097
24098         * alias.c (find_base_term): Move around LO_SUM case, so that
24099         CONST falls through into PLUS/MINUS handling.
24100
24101         PR c/39855
24102         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
24103         into 0, use omit_one_operand.
24104
24105 2009-04-23  Ben Elliston  <bje@au.ibm.com>
24106
24107         * config/rs6000/linux-unwind.h (get_regs): Remove type
24108         puns. Change the type of `pc' to an array of unsigned ints and
24109         update all users.  Constify frame24.
24110
24111 2009-04-22  DJ Delorie  <dj@redhat.com>
24112
24113         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
24114         declarations before code.
24115         (current_function_special_page_vector): Likewise.
24116         (m32c_expand_insv): Silence a warning.
24117
24118 2009-04-21  Taras Glek  <tglek@mozilla.com>
24119
24120         * alias.c: Update GTY annotations to new syntax.
24121         * basic-block.h: Likewise.
24122         * bitmap.h: Likewise.
24123         * c-common.h: Likewise.
24124         * c-decl.c: Likewise.
24125         * c-parser.c: Likewise.
24126         * c-pragma.c: Likewise.
24127         * c-tree.h: Likewise.
24128         * cfgloop.h: Likewise.
24129         * cgraph.h: Likewise.
24130         * config/alpha/alpha.c: Likewise.
24131         * config/arm/arm.h: Likewise.
24132         * config/avr/avr.h: Likewise.
24133         * config/bfin/bfin.c: Likewise.
24134         * config/cris/cris.c: Likewise.
24135         * config/darwin.c: Likewise.
24136         * config/frv/frv.c: Likewise.
24137         * config/i386/i386.c: Likewise.
24138         * config/i386/i386.h: Likewise.
24139         * config/i386/winnt.c: Likewise.
24140         * config/ia64/ia64.h: Likewise.
24141         * config/iq2000/iq2000.c: Likewise.
24142         * config/mips/mips.c: Likewise.
24143         * config/mmix/mmix.h: Likewise.
24144         * config/pa/pa.c: Likewise.
24145         * config/pa/pa.h: Likewise.
24146         * config/rs6000/rs6000.c: Likewise.
24147         * config/s390/s390.c: Likewise.
24148         * config/sparc/sparc.c: Likewise.
24149         * config/xtensa/xtensa.c: Likewise.
24150         * cselib.h: Likewise.
24151         * dbxout.c: Likewise.
24152         * dwarf2out.c: Likewise.
24153         * except.c: Likewise.
24154         * except.h: Likewise.
24155         * fixed-value.h: Likewise.
24156         * function.c: Likewise.
24157         * function.h: Likewise.
24158         * gimple.h: Likewise.
24159         * integrate.c: Likewise.
24160         * optabs.c: Likewise.
24161         * output.h: Likewise.
24162         * real.h: Likewise.
24163         * rtl.h: Likewise.
24164         * stringpool.c: Likewise.
24165         * tree-data-ref.c: Likewise.
24166         * tree-flow.h: Likewise.
24167         * tree-scalar-evolution.c: Likewise.
24168         * tree-ssa-address.c: Likewise.
24169         * tree-ssa-alias.h: Likewise.
24170         * tree-ssa-operands.h: Likewise.
24171         * tree.c: Likewise.
24172         * tree.h: Likewise.
24173         * varasm.c: Likewise.
24174         * varray.h: Likewise.
24175         * vec.h: Likewise.
24176         * coretypes.h: Do not define GTY macro if it is already defined.
24177         * doc/gty.texi: Update GTY documentation to new syntax.
24178         * gengtype-lex.l: Enforce attribute-like syntax for GTY
24179         annotations on structs.
24180         * gengtype-parse.c: Likewise.
24181
24182 2009-04-22  Mark Heffernan  <meheff@google.com>
24183
24184         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
24185
24186 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24187
24188         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
24189         where appropriate.
24190
24191 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
24192
24193         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
24194         the same as a PLUS without a shift.  Increase the cost of a
24195         CONST_INT in MULT.
24196
24197 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24198
24199         * Makefile.in: Update dependencies.
24200         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
24201         * errors.h: Remove bogus comment about compatibility.
24202         (warning): Update declaration.
24203         * genautomata.c: Update all calls to warning.
24204         * gimple.c: Do not include errors.h. Include toplev.h.
24205         * tree-ssa-structalias.c: Do not include errors.h.
24206         * omega.c: Likewise.
24207         * tree-ssa-reassoc.c: Likewise.
24208         * config/spu/spu-c.c: Likewise.
24209         * config/spu/t-spu-elf: Update dependencies.
24210
24211 2009-04-22  Richard Guenther  <rguenther@suse.de>
24212
24213         PR tree-optimization/39824
24214         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
24215         make sure the types are compatible.
24216
24217 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24218
24219         PR c++/14875
24220         * c-common.c (c_parse_error): Take a token_flags parameter.
24221         Use token_type for the token type instead.
24222         Pass token_flags to cpp_type2name.
24223         * c-common.h (c_parse_error): Update declaration.
24224         * c-parser.c (c_parser_error): Pass 0 as token flags.
24225
24226 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
24227
24228         PR rtl-optimization/39580
24229         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
24230
24231 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
24232
24233         * function.c (expand_function_end): Do not emit a jump to the "naked"
24234         return label for fall-through returns.
24235         * except.c (sjlj_emit_function_exit): Always place the call to the
24236         unregister function at the location installed by expand_function_end.
24237
24238 2009-04-22  Richard Guenther  <rguenther@suse.de>
24239
24240         PR tree-optimization/39845
24241         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
24242         (gen_inbound_check): Likewise.
24243
24244 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
24245
24246         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
24247         padding for PPC.
24248         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
24249         * config/vxlib.c (__gthread_once): Add race guard for PPC.
24250
24251 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24252
24253         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
24254         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
24255         shift counts to avoid out-of-bounds array accesses.
24256
24257 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24258
24259         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
24260         (Pmode): Move above.
24261
24262 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
24263
24264         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
24265         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
24266         GET_CODE macro.  Use IN_RANGE macro where appropriate.
24267         * config/alpha/alpha.h: Ditto.
24268         * config/alpha/alpha.md: Ditto.
24269         * config/alpha/constraints.md: Ditto.
24270         * config/alpha/predicates.md: Ditto.
24271
24272 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
24273
24274         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
24275         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24276         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24277         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24278         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24279         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24280         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24281         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24282         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24283         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24284         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24285         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24286         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24287         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24288         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24289         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24290         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24291         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24292         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24293         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24294         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24295         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24296         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24297         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24298         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24299         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24300         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
24301
24302 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
24303
24304         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
24305         references from comments.
24306         * cfgbuild.c (count_basic_blocks): Delete.
24307         (find_basic_blocks_1): Delete.
24308         (find_basic_blocks): Delete.
24309         * except.c (finish_eh_generation): Make static.  Move comment from
24310         except.h here.  Remove find_basic_blocks references from comments.
24311         * except.h (finish_eh_generation): Delete.
24312         * basic-block.h (find_basic_blocks): Delete.
24313         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
24314
24315 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
24316
24317         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
24318         (sdbout_parms):  Likewise.
24319
24320 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
24321
24322         * config/sh/sh.c (prepare_cbranch_operands): Use
24323         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
24324         (expand_cbranchdi4): Likewise.
24325         (from_compare): Add cast to enum type.
24326         (expand_cbranchsi4): Use add_reg_note.
24327         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
24328         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
24329         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
24330         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24331         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
24332         instead of CODE_FOR_nothing.
24333         (cbranchdi4): Likewise.  Fix the order of arguments for
24334         gen_rtx_fmt_ee.
24335         (push_fpscr): Use add_reg_note.
24336         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
24337         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
24338
24339 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
24340
24341         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
24342         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24343         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24344         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
24345         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
24346         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
24347         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
24348         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
24349         config/alpha/x-vms, config/arc/t-arc,
24350         config/arm/README-interworking, config/arm/arm-c.c,
24351         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
24352         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
24353         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
24354         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
24355         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
24356         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
24357         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
24358         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
24359         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
24360         config/cris/t-elfmulti, config/crx/t-crx,
24361         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
24362         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
24363         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
24364         config/h8300/t-h8300, config/i386/athlon.md,
24365         config/i386/darwin-libgcc.10.4.ver,
24366         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
24367         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
24368         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
24369         config/i386/t-linux64, config/i386/t-nwld,
24370         config/i386/t-rtems-i386, config/i386/t-sol2-10,
24371         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
24372         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
24373         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
24374         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
24375         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
24376         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
24377         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
24378         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
24379         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
24380         config/m68k/t-uclinux, config/mcore/t-mcore,
24381         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
24382         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
24383         config/mips/crtn.asm, config/mips/irix-crti.asm,
24384         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
24385         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
24386         config/mips/mips-fixed.md, config/mips/sb1.md,
24387         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
24388         config/mips/t-iris6, config/mips/t-isa3264,
24389         config/mips/t-libgcc-mips16, config/mips/t-linux64,
24390         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
24391         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
24392         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
24393         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
24394         config/mn10300/t-linux, config/mn10300/t-mn10300,
24395         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
24396         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
24397         config/picochip/libgccExtras/clzsi2.asm,
24398         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
24399         config/rs6000/darwin-libgcc.10.4.ver,
24400         config/rs6000/darwin-libgcc.10.5.ver,
24401         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
24402         config/rs6000/t-aix43, config/rs6000/t-aix52,
24403         config/rs6000/t-darwin, config/rs6000/t-fprules,
24404         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
24405         config/rs6000/t-lynx, config/rs6000/t-netbsd,
24406         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
24407         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
24408         config/rs6000/t-rtems, config/rs6000/t-spe,
24409         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
24410         config/score/t-score-elf, config/sh/divcost-analysis,
24411         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
24412         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
24413         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
24414         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
24415         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
24416         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
24417         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
24418         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
24419         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
24420         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
24421         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
24422         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
24423         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
24424         limitx.h, version.c, xcoff.h: Add copyright and license notices.
24425         * config/h8300/genmova.sh: Include copyright and license notices
24426         in generated output.
24427         * config/h8300/mova.md: Regenerate.
24428         * doc/install.texi2html: Include word "Copyright" in copyright
24429         notice and use name "Free Software Foundation, Inc.".
24430         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
24431         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
24432         ChangeLog-2007, ChangeLog-2008: Correct dates.
24433
24434 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
24435
24436         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
24437         NE_EXPR operations as well.
24438         * c-parser.c (c_parser_condition): Do not set location information on
24439         the condition.
24440         (c_parser_conditional_expression): Likewise.
24441         (c_parser_binary_expression): Set location information on operators.
24442         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
24443         TRUTH_NOT_EXPR has been folded.
24444         * fold-const.c (fold_truth_not_expr): Copy location information from
24445         the incoming expression to the outgoing one.
24446         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
24447         recursive calls on the LHS of the operator but pass that of the
24448         operator to recursive calls on the RHS of the operator.  Set it
24449         on the COND_EXPR.
24450         (shortcut_cond_expr): Set the locus of the operator on the second
24451         COND_EXPR and that of the expression on the first in degenerate cases.
24452         Pass the locus of the expression to calls to shortcut_cond_r.
24453         Set the locus of the 'then' block on the associated jump, if any.
24454         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
24455         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
24456         expression to call to gimplify_boolean_expr.
24457
24458 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
24459
24460         * config.gcc: Add additional configuration for
24461         i686-w64-mingw* and x86_64-w64-mingw* triplet.
24462         * config/i386/mingw-w64.h: New mingw-w64 specific header.
24463         (CPP_SPEC): Redefine for allowing -municode option.
24464         (STARTFILE_SPEC): Likewise.
24465         * config/i386/t-mingw-w64: New.
24466         * config/i386/mingw-w64.opt: New.
24467         (municode): Add new target option.
24468         * doc/invoke.texi (municode): Add documentation for new option.
24469
24470 2009-04-21  Ian Lance Taylor  <iant@google.com>
24471
24472         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24473         Correct test for number of arguments.
24474         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
24475
24476 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
24477
24478         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
24479         argument of emit_library_call.
24480
24481 2009-04-21  Richard Guenther  <rguenther@suse.de>
24482
24483         PR middle-end/39829
24484         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
24485         inside VIEW_CONVERT_EXPRs.
24486
24487 2009-04-21  Martin Jambor  <mjambor@suse.cz>
24488
24489         * tree-switch-conversion.c (build_constructors): Split a long line.
24490         (constructor_contains_same_values_p): New function.
24491         (build_one_array): Create assigns of constants if possible, do not
24492         call mark_sym_for_renaming, call update_stmt.
24493         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
24494         make_rename_temp.  Do not call mark_symbols_for_renaming, call
24495         update_stmt.
24496         (gen_def_assigns): Do not call mark_symbols_for_renaming or
24497         find_new_referenced_vars, call update_stmt.
24498         (gen_inbound_check): Use create_tmp_var and create ssa names manually
24499         instead of calling make_rename_temp.  Do not call
24500         find_new_referenced_vars or mark_symbols_for_renaming, call
24501         update_stmt.
24502
24503 2009-04-21  Richard Guenther  <rguenther@suse.de>
24504
24505         PR tree-optimization/39827
24506         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
24507         (tree_ssa_phiprop): Pass the correct array size.
24508
24509 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
24510
24511         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
24512
24513 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24514
24515         PR 16202
24516         * c-typeck.c (lvalue_p): Move declaration ...
24517         * c-common.h (lvalue_p): ... to here.
24518         * c-common.c (candidate_equal_p): New.
24519         (add_tlist): Use it.
24520         (merge_tlist): Use it.
24521         (warn_for_collisions_1): Likewise.
24522         (warning_candidate_p): Accept more candidates.
24523         (verify_tree): A warning candidate can be an expression. Use
24524         candidate_equal_p.
24525
24526 2009-04-21  Ben Elliston  <bje@au.ibm.com>
24527
24528         PR target/5267
24529         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
24530         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
24531         options.  Remove -mcall-solaris documentation.
24532
24533 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24534
24535         PR c++/13358
24536         * doc/invoke.texi (-Wlong-long): Update description.
24537         * c-lex (interpret_integer): Only warn if there was no previous
24538         overflow and -Wlong-long is enabled.
24539         * c-decl.c (declspecs_add_type): Drop redundant flags.
24540         * c.opt (Wlong-long): Init to -1.
24541         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
24542         and front-end warn_long_long. Wlong-long only depends on other
24543         flags if it is uninitialized.
24544         * c-parser.c (disable_extension_diagnostics): warn_long_long is
24545         the same for CPP and FE.
24546         (restore_extension_diagnostics): Likewise.
24547
24548 2009-04-20  Ian Lance Taylor  <iant@google.com>
24549
24550         Fix enum conversions which are invalid in C++:
24551         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
24552         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
24553         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
24554         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
24555         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
24556         (dbxout_parms): Likewise.
24557         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
24558         (df_clear_flags): Likewise.
24559         * df-problems.c (df_rd_bb_local_compute_process_def): Change
24560         top_flag parameter to int.
24561         (df_chain_create_bb_process_use): Likewise.
24562         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
24563         Remove cast.
24564         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
24565         (df_ref_create_structure, df_def_record_1): Likewise.
24566         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
24567         (df_notes_rescan): Change 0 to VOIDmode in function call.
24568         (df_get_call_refs, df_insn_refs_collect): Likewise.
24569         (df_bb_regs_collect): Likewise.
24570         (df_entry_block_defs_collect): Likewise.
24571         (df_exit_block_uses_collect): Likewise.
24572         * df.h: Update declarations.
24573         * double-int.c (double_int_divmod): Add cast to enum type.
24574         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
24575         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
24576         (based_loc_descr): Likewise.
24577         (loc_descriptor_from_tree_1): Change first_op and second_op to
24578         enum dwarf_location_atom.  Add cast to enum type.
24579         * expmed.c (init_expmed): Change 0 to SET in function call.
24580         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
24581         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
24582         (do_store_flag): Likewise.
24583         * fixed-value.h (struct fixed_value): Change mode to enum
24584         machine_mode.
24585         * function.c (assign_parms): Change 0 to VOIDmode in function call.
24586         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
24587         function call.
24588         (insert_insn_decl, insert_decl, insert_state): Likewise.
24589         (automata_list_finish): Likewise.
24590         * genrecog.c (process_define_predicate): Add cast to enum type.
24591         * gensupport.c (init_predicate_table): Add cast to enum type.
24592         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
24593         function call.
24594         (gimple_build_call_1, gimple_build_label): Likewise.
24595         (gimple_build_goto, gimple_build_asm_1): Likewise.
24596         (gimple_build_switch_1, gimple_build_cdt): Likewise.
24597         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
24598         (enum fallback): Rename from enum fallback_t.
24599         (fallback_t): Typedef as int.
24600         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
24601         GSI_SAME_STMT in function call.
24602         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
24603         enum type.
24604         (setup_reg_class_relations): Likewise.
24605         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
24606         (setup_prohibited_class_mode_regs): Add cast to enum type.
24607         (setup_prohibited_mode_move_regs): Likewise.
24608         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
24609         (record_address_regs): Change i to enum reg_class.
24610         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
24611         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
24612         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
24613         (GET_MODE_2XWIDER_MODE): Likewise.
24614         (GET_CLASS_NARROWEST_MODE): Likewise.
24615         * omp-low.c (expand_omp_for): Add cast to enum type.
24616         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
24617         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
24618         * postreload.c (reload_cse_simplify_operands): Change rclass local
24619         to enum reg_class.
24620         * predict.c (combine_predictions_for_insn): Change best_predictor
24621         and predictor to enum br_predictor.
24622         (combine_predictions_for_bb): Likewise.
24623         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
24624         use SET_PREDICT_EXPR_OUTCOME.
24625         * real.c (real_arithmetic): Change icode to code in function call.
24626         * reginfo.c (init_move_cost): Add casts to enum type.
24627         (init_reg_sets_1, init_fake_stack_mems): Likewise.
24628         * regmove.c (regclass_compatible_p): Change class0 and class1 to
24629         enum reg_class.
24630         * reload.c (find_valid_class): Add casts to enum type.
24631         (push_reload): Change 0 to NO_REGS in function call.
24632         (find_reloads): Change this_alternative to array of enum
24633         reg_class.  Remove some now-unnecessary casts.
24634         (make_memloc): Change 0 to VOIDmode in function call.
24635         * reload1.c (reload): Change 0 to VOIDmode in function call.
24636         (eliminate_regs_1, elimination_effects): Likewise.
24637         (eliminate_regs_in_insn): Likewise.
24638         (emit_input_reload_insns): Add cast to enum type.
24639         (delete_output_reload): Change 0 to VOIDmode in function call.
24640         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
24641         to enum type in function call.
24642         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
24643         (SET_PREDICT_EXPR_OUTCOME): Define.
24644         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
24645         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
24646         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
24647         (dump_function): Likewise.
24648         * tree-dump.h: Update declarations.
24649         * tree-pass.h: Update declarations.
24650         * varasm.c (assemble_integer): Change mclass to enum mode_class.
24651         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
24652         enum type.
24653         (arm_rtx_costs_1): Correct parenthesization.
24654         (arm_rtx_costs): Add casts to enum type.
24655         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
24656         (vfp_emit_fstmd): Use add_rg_note.
24657         (emit_multi_reg_push, emit_sfm): Likewise.
24658         (thumb_set_frame_pointer): Likewise.
24659         (arm_expand_prologue): Likewise.
24660         (arm_regno_class): Change return type to enum reg_class.
24661         (thumb1_expand_prologue): Use add_reg_note.
24662         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
24663         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
24664         in function call.
24665         * config/arm/gentune.sh: Add cast to enum type.
24666         * config/arm/arm-tune.md: Rebuild.
24667         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
24668         (ix86_split_fp_branch, predict_jump): Likewise.
24669         (ix86_expand_multi_arg_builtin): Change sub_code from enum
24670         insn_code to enum rtx_code.
24671         (ix86_builtin_vectorized_function): Add cast to enum type.
24672         * config/i386/i386.md (truncdfsf2): Change slot to enum
24673         ix86_stack_slot.
24674         (truncxf<mode>2, isinf<mode>2): Likewise.
24675         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
24676         enum type.
24677         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
24678         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
24679         (insert_bundle_state): Change 1 to INSERT in function call.
24680         (ia64_add_bundle_selector_before): Likewise.
24681         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
24682         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
24683         (restore_stack_nonlocal): Likewise.
24684         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
24685         function call.
24686         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
24687         function call.
24688         (mips_rtx_costs): Likewise.
24689         (mips_override_options): Add casts to enum type.
24690         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
24691         in function call.
24692         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
24693         (store_reg, set_reg_plus_d): Likewise.
24694         (hppa_expand_prologue, hppa_profile_hook): Likewise.
24695         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
24696         cast to enum type.
24697         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
24698         function call.
24699         (emit_unlikely_jump): Use add_reg_note.
24700         (rs6000_emit_allocate_stack): Likewise.
24701         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
24702         (output_toc): Change 1 to INSERT in function call.
24703         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
24704         (rs6000_initialize_trampoline): Likewise.
24705         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
24706         function call.
24707         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
24708         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
24709         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
24710         (save_gprs): Use add_reg_note.
24711         (s390_emit_prologue): Likewise.
24712         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
24713         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
24714         (sparc_fold_builtin): Add cast to enum type.
24715         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
24716         enum insn_code.
24717         (spu_expand_prologue): Use add_reg_note.
24718         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
24719
24720 2009-04-20  Ian Lance Taylor  <iant@google.com>
24721
24722         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
24723         (c_parser_postfix_expression_after_primary): Get VEC for list of
24724         arguments.  Get original types of arguments.  Call
24725         build_function_call_vec.
24726         (cached_expr_list_1, cached_expr_list_2): New static variables.
24727         (c_parser_expr_list): Change return type to VEC *.  Add
24728         p_orig_types parameter.  Change all callers.
24729         (c_parser_release_expr): New static function.
24730         (c_parser_vec_to_tree_list): New static function.
24731         * c-typeck.c (build_function_call): Rewrite to build a VEC and
24732         call build_function_call_vec.
24733         (build_function_call_vec): New function, based on old
24734         build_function_call.
24735         (convert_arguments): Remove nargs and argarray parameters.  Change
24736         values to a VEC.  Add origtypes parameter.
24737         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
24738         (convert_for_assignment): Add origtype parameter.  Change all
24739         callers.  If warn_cxx_compat, check for conversion to an enum
24740         type when calling a function.
24741         (store_init_value): Add origtype parameter.  Change all callers.
24742         (digest_init): Likewise.
24743         (struct init_node): Add origtype field.
24744         (add_pending_init): Add origtype parameter.  Change all callers.
24745         (output_init_element): Likewise.
24746         (output_pending_init_elements): Pass origtype from init_node to
24747         output_init_element.
24748         (process_init_element): Pass origtype from c_expr to
24749         output_init_element.
24750         (c_finish_return): Add origtype parameter.  Change all callers.
24751         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
24752         caller.
24753         (sync_resolve_params): Likewise.
24754         (sync_resolve_return): Change params to first_param.  Change caller.
24755         (resolve_overloaded_builtins): Change params to VEC *.  Change
24756         callers.  Save first parameter around call to build_function_call_vec.
24757         * c-decl.c (finish_decl): Add origtype parameter.  Change all
24758         callers.  Call build_function_call_vec rather than
24759         build_function_call for cleanup.
24760         * c-tree.h: Update declarations.
24761         * c-common.h: Update declarations.
24762         * stub-objc.c (objc_rewrite_function_call): Change parameter from
24763         params to first_param.
24764         * target.h (struct gcc_target): Change resolve_overloaded_builtin
24765         params parameter from tree to void *.
24766         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24767         Change arglist parameter to have type void *, and to be a pointer
24768         to a VEC.
24769         * config/rs6000/rs6000-protos.h
24770         (altivec_resolve_overloaded_builtin): Update declaration.
24771         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
24772         fnargs parameter to have type void *, and to be a pointer to a
24773         VEC.  Call build_function_call_vec instead of
24774         build_function_call.
24775         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
24776
24777 2009-04-20  Joey Ye  <joey.ye@intel.com>
24778             Xuepeng Guo  <xuepeng.guo@intel.com>
24779             H.J. Lu  <hongjiu.lu@intel.com>
24780
24781         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
24782
24783         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
24784         (IX86_LEA_PRIORITY): Likewise.
24785         (distance_non_agu_define): New function.
24786         (distance_agu_use): Likewise.
24787         (ix86_lea_for_add_ok): Likewise.
24788         (ix86_dep_by_shift_count): Likewise.
24789
24790         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
24791         should split for LEA.
24792
24793         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
24794         function.
24795         (ix86_dep_by_shift_count): Likewise.
24796
24797 2009-04-20  Richard Guenther  <rguenther@suse.de>
24798
24799         * expr.c (handled_component_p): Move ...
24800         * tree.h (handled_component_p): ... here.
24801         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
24802         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
24803         and REALPART_EXPR to be in one group.
24804
24805 2009-04-20  Richard Guenther  <rguenther@suse.de>
24806
24807         * basic-block.h (get_all_dominated_blocks): Declare.
24808         * dominance.c (get_all_dominated_blocks): New function.
24809         * tree-cfg.c (get_all_dominated_blocks): Remove.
24810         (remove_edge_and_dominated_blocks): Adjust.
24811         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
24812         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
24813         instead of recursing.
24814
24815 2009-04-20  Doug Kwan  <dougkwan@google.com>
24816
24817         * cgraph.h (cgraph_node_ptr): New type for vector functions.
24818         (struct cgraph_node_set_def): New type.
24819         (cgraph_node_set) New type. Also declare vector functions.
24820         (struct cgraph_node_set_element_def): New type.
24821         (cgraph_node_set_element): Ditto.
24822         (cgraph_node_set_iterator): New iterator type.
24823         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
24824         cgraph_node_set_remove, dump_cgraph_node_set,
24825         debug_cgraph_node_set): New prototypes.
24826         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
24827         cgraph_node_set_size): New inlines.
24828         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
24829         including cgraph.h.
24830         (struct ipa_opt_pass): Add struct cgraph_node_set_def
24831         argument to function 'write_summary'.
24832         * ipa.c: Include ggc.h.
24833         (hash_cgraph_node_set_element,
24834         eq_cgraph_node_set_element, cgraph_node_set_new,
24835         cgraph_node_set_add, cgraph_node_set_remove,
24836         cgraph_node_set_find, dump_cgraph_node_set,
24837         debug_cgraph_node_set): New functions.
24838         * Makefile.in (ipa.o): Add dependency on GGC_H.
24839
24840 2009-04-20  Ira Rosen  <irar@il.ibm.com>
24841
24842         PR tree-optimization/39675
24843         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
24844         check of the return code of vect_schedule_slp. Check that
24845         stmt_vec_info still exists for the statement, before checking its
24846         vectorization type.
24847
24848 2009-04-20  Michael Matz  <matz@suse.de>
24849
24850         * Makefile.in (generated_files): Take out $(simple_generated_c).
24851
24852 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
24853
24854         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
24855         (UINTPTR_TYPE):  Likewise.
24856
24857 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24858
24859         PR c/37481
24860         * c-typeck.c (digest_init): Check for initializing an array with a
24861         string literal.
24862
24863 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24864
24865         PR c/19771
24866         * c-semantics.c (pop_stmt_list): Propagate
24867         STATEMENT_LIST_HAS_LABEL to parent statement list.
24868
24869 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
24870
24871         * config/mips/mips.h (mips_tune_attr): New macro.
24872         * config/mips/mips.md (cpu): Use it.
24873
24874 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
24875
24876         PR c/38243
24877         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
24878         declaring a tag.
24879
24880 2009-04-19  Diego Novillo  <dnovillo@google.com>
24881
24882         * toplev.c (compile_file): Move call to coverage_finish ...
24883         * cgraphunit.c (ipa_passes): ... here.
24884         Call cgraph_process_new_functions.
24885         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
24886         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
24887
24888 2009-04-19  Jan Hubicka  <jh@suse.cz>
24889
24890         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
24891         cfun.
24892         (dump_cgraph_node): Dump can throw external flag.
24893         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
24894
24895 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24896
24897         PR c/32061
24898         PR c++/36954
24899         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
24900         * common.opt (Wlogical-op): Move from here...
24901         * c.opt (Wlogical-op): ... to here.
24902         * c-typeck.c (parser_build_binary_op): Update call to
24903         warn_logical_operator.
24904         * c-opts.c (c_common_post_options): Enable warn_logical_op with
24905         extra_warnings.
24906         * c-common.c (warn_logical_op): Update.
24907         * c-common.h (warn_logical_op): Update declaration.
24908
24909 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
24910
24911         * tree.c (protected_set_expr_location): Fix formatting.
24912
24913 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24914
24915         PR c/27676
24916         * c-typeck.c (readonly_warning): new.
24917         (build_unary_op, build_modify_expr): Use readonly_warning for
24918         storing into something readonly but not const-qualified.
24919
24920 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24921
24922         PR c/22367
24923         * c-typeck.c (build_unary_op): Check for taking address of
24924         expression of type void.
24925
24926 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
24927
24928         PR c/35210
24929         * c-typeck.c (build_function_call): Check for calling a function
24930         with qualified void return types.  Call require_complete_type when
24931         generating a trap.
24932
24933 2009-04-18  Jan Hubicka  <jh@suse.cz>
24934
24935         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
24936         Set nothrow flag.
24937         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
24938         can_throw_external flag.
24939         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
24940         * ipa-pure-const.c (ignore_edge): New function.
24941         (propagate): Compute order for NOTHROW computation; set NOTHROWs
24942         only over can_throw_external edges.
24943         (local_pure_const): Add nothrow flag.
24944         * ipa-utils.c (searchc): Add ignore_edge callback.
24945         (ipa_utils_reduced_inorder): Add ignore_edge callback.
24946         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
24947         (set_nothrow_function_flags): Update cgraph.
24948         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
24949
24950 2009-04-18  Richard Guenther  <rguenther@suse.de>
24951
24952         PR middle-end/39804
24953         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
24954         (fold_stmt): ... this and ...
24955         (fold_stmt_inplace): ... this.
24956         (fold_stmt_1): Fold references in calls and asms.
24957         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
24958
24959 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24960
24961         * tree-vrp.c (ssa_name_nonzero_p): Remove.
24962         * tree.h: Remove the prototype for ssa_name_nonzero_p.
24963
24964 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24965
24966         * tree.c (function_args_count): Remove.
24967         * tree.h: Remove the prototype for function_args_count.
24968
24969 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24970
24971         * tree-iterator.c (expr_only): Remove.
24972         * tree.h: Remove the prototype for expr_only.
24973
24974 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
24975
24976         * reginfo.c (cannot_change_mode_set_regs): Remove.
24977         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
24978
24979 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
24980
24981         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
24982         whether operands 0 and 1 overlaps.
24983
24984 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24985
24986         PR middle-end/36902
24987         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
24988         pointer. Use warning_at instead of warning.
24989         (search_for_addr_array): Likewise.
24990         (check_array_bounds): Likewise.
24991         (check_all_array_refs): Check that the incoming edge is not in the
24992         list of edges to be removed.
24993         (check_all_array_refs): Avoid the temporal pointer.
24994         (vrp_visit_cond_stmt): Fix typo.
24995         (simplify_switch_using_ranges): Handle the case where the switch
24996         index is an integer constant.
24997
24998 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
24999
25000         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
25001
25002 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
25003
25004         * doc/extend.texi, doc/invoke.texi: Fix typos.
25005
25006 2009-04-17  Cary Coutant  <ccoutant@google.com>
25007
25008         * tree-flow-inline.h (get_lineno): Fix inverted test.
25009
25010 2009-04-17  Diego Novillo  <dnovillo@google.com>
25011
25012         * tree-ssa-pre.c (create_expression_by_pieces): Remove
25013         assertion for AVAIL_OUT.
25014
25015 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
25016
25017         PR target/38627
25018         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
25019         * config/sh/linux-atomic.asm: Likewise.
25020
25021 2009-04-17  Diego Novillo  <dnovillo@google.com>
25022
25023         * except.c (debug_eh_tree): New.
25024         (struct eh_region, struct eh_status): Move ...
25025         * except.h: ... here.
25026         (add_type_for_runtime): Declare extern.
25027         (lookup_type_for_runtime): Likewise.
25028         (debug_eh_tree): Declare.
25029         * Makefile.in (GTFILES): List except.h before except.c
25030
25031 2009-04-17  Diego Novillo  <dnovillo@google.com>
25032
25033         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
25034         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
25035         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
25036         (find_vars_r): ... here.
25037         * tree-flow.h (find_referenced_vars_in): Declare.
25038         * tree-ssa-pre.c (create_expression_by_pieces): Assert
25039         that AVAIL_OUT exists for BLOCK.
25040         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
25041         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
25042         (tree-parloops.o): Likewise.
25043
25044 2009-04-17  Simon Baldwin  <simonb@google.com>
25045
25046         * toplev.c (default_tree_printer): Add handling for %E format.
25047
25048 2009-04-17  Diego Novillo  <dnovillo@google.com>
25049
25050         * tree-pretty-print.c (dump_generic_node): Add break after
25051         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
25052         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
25053         FUNCTION_TYPE together.  Call print_struct_decl when printing
25054         structures and TDF_SLIM is not given.
25055         (print_struct_decl): Fix logic for detecting recursion.
25056
25057 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25058
25059         PR 31567
25060         * gcc.c (create_at_file): New.
25061         (compile_input_file_p): New.
25062         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
25063         * main.c (main): Update call to toplev_main.
25064         * toplev.c (toplev_main): Change signature. Call expandargv.
25065         * toplev.h (toplev_main): Change signature.
25066
25067 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25068
25069         * dwarf2out.c (field_byte_offset): Use the type size as the field size
25070         if the latter is not constant.
25071
25072 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
25073
25074         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
25075
25076 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
25077
25078         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
25079         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
25080
25081 2009-04-17  Richard Guenther  <rguenther@suse.de>
25082
25083         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25084         Handle component references view-converting an invariant address.
25085
25086 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
25087
25088         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
25089         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
25090         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25091         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
25092         Use @deftypevr rather than @deftypevar.
25093
25094 2009-04-17  Richard Guenther  <rguenther@suse.de>
25095
25096         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
25097         (get_prop_source_stmt): Likewise.
25098         (can_propagate_from): Likewise.
25099
25100 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
25101
25102         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
25103         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
25104         (--with-multilib-list): Add default value.
25105         * configure: Regenerate.
25106         * Makefile.in (TM_ENDIAN_CONFIG): Define.
25107         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
25108         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
25109         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
25110         Don't add default cpu to multilib list unnecessarily, but do enable
25111         the relevant compiler option..
25112         Add support for --with-multilib-list=<blank> and
25113         --with-multilib-list=!<somelib> to supress unwanted multilibs.
25114         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
25115         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
25116         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
25117         TM_MULTILIB_CONFIG.
25118         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
25119         (MULTILIB_OSDIRNAMES): New variable.
25120         * config/sh/t-1e: Delete file.
25121         * config/sh/t-mlib-sh1: Delete file.
25122         * config/sh/t-mlib-sh2: Delete file.
25123         * config/sh/t-mlib-sh2a: Delete file.
25124         * config/sh/t-mlib-sh2a-nofpu: Delete file.
25125         * config/sh/t-mlib-sh2a-single: Delete file.
25126         * config/sh/t-mlib-sh2a-single-only: Delete file.
25127         * config/sh/t-mlib-sh2e: Delete file.
25128         * config/sh/t-mlib-sh3e: Delete file.
25129         * config/sh/t-mlib-sh4: Delete file.
25130         * config/sh/t-mlib-sh4-nofpu: Delete file.
25131         * config/sh/t-mlib-sh4-single: Delete file.
25132         * config/sh/t-mlib-sh4-single-only: Delete file.
25133         * config/sh/t-mlib-sh4a: Delete file.
25134         * config/sh/t-mlib-sh4a-nofpu: Delete file.
25135         * config/sh/t-mlib-sh4a-single: Delete file.
25136         * config/sh/t-mlib-sh4a-single-only: Delete file.
25137         * config/sh/t-mlib-sh4al: Delete file.
25138         * config/sh/t-mlib-sh5-32media: Delete file.
25139         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
25140         * config/sh/t-mlib-sh5-64media: Delete file.
25141         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
25142         * config/sh/t-mlib-sh5-compact: Delete file.
25143         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
25144         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
25145         * doc/install.texi (Options specification): Add
25146         --with-multilib-list and --with-endian.
25147
25148 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
25149
25150         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
25151         REVISION_c.
25152         (OBJS-common): Add plugin-version.o.
25153         (plugin-version.o): New.
25154         * gcc-plugin.h (plugin_gcc_version): New.
25155         (plugin_default_version_check): New.
25156         (plugin_init_func, plugin_init): Add version argument.
25157         * plugin-version.c: New.
25158         * plugin.c (str_plugin_gcc_version_name): New.
25159         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
25160         pass it to the init function.
25161         (plugin_default_version_check): New.
25162
25163 2009-04-17  Richard Guenther  <rguenther@suse.de>
25164
25165         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
25166         for decl-vs-decl disambiguation.
25167
25168 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25169
25170         * config/s390/s390.h (s390_tune_attr): New macro definition.
25171         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
25172
25173 2009-04-17  Richard Guenther  <rguenther@suse.de>
25174
25175         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
25176         (fold_stmt_r): Likewise.
25177         (maybe_fold_reference): New function.
25178         (fold_gimple_assign): Handle cases fold_stmt_r did.
25179         (fold_stmt): Do not use fold_stmt_r.
25180         (fold_stmt_inplace): Likewise.
25181
25182 2009-04-17  Richard Guenther  <rguenther@suse.de>
25183
25184         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
25185         (record_equivalences_from_stmt): Remove useless checks and
25186         simplifications.
25187         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
25188         the type is already suitable.
25189
25190 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
25191
25192         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
25193
25194 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
25195
25196         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
25197         (CMPtype): Define as __gcc_CMPtype.
25198
25199 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
25200
25201         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
25202         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
25203
25204 2009-04-17  Richard Guenther  <rguenther@suse.de>
25205
25206         PR tree-optimization/39746
25207         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
25208         special-casing for builtins and static variable use/def.
25209         (call_may_clobber_ref_p_1): Likewise.
25210
25211 2009-04-16  Ian Lance Taylor  <iant@google.com>
25212
25213         * df.h: Include "timevar.h".
25214         (struct df_problem): Change tv_id field to timevar_id_t.
25215         * tree-pass.h: Include "timevar.h".
25216         (struct opt_pass): Change tv_id field to timevar_id_t.
25217         * timevar.h (timevar_id_t): Define TV_NONE.
25218         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
25219         TV_NONE rather than tv_id != 0.
25220         (execute_one_pass): Likewise.
25221         * Makefile.in (DF_H): Add $(TIMEVAR_H).
25222         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
25223         dependencies to $(TREE_PASS_H).
25224         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
25225         to TV_NONE.
25226         (pass_branch_target_load_optimize2): Likewise.
25227         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
25228         (pass_outof_cfg_layout_mode): Likewise.
25229         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
25230         (pass_rebuild_cgraph_edges): Likewise.
25231         (pass_remove_cgraph_callee_edges): Likewise.
25232         * df-core.c (pass_df_initialize_opt): Likewise.
25233         (pass_df_initialize_no_opt): Likewise.
25234         (pass_df_finish): Likewise.
25235         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
25236         * except.c (pass_set_nothrow_function_flags): Likewise.
25237         (pass_convert_to_eh_region_ranges): Likewise.
25238         * final.c (pass_compute_alignments): Likewise.
25239         * function.c (pass_instantiate_virtual_regs): Likewise.
25240         (pass_init_function): Likewise.
25241         (pass_leaf_regs): Likewise.
25242         (pass_match_asm_constraints): Likewise.
25243         * gimple-low.c (pass_lower_cf): Likewise.
25244         (pass_mark_used_blocks): Likewise.
25245         * init-regs.c (pass_initialize_regs): Likewise.
25246         * integrate.c (pass_initial_value_sets): Likewise.
25247         * ira.c (pass_ira): Likewise.
25248         * jump.c (pass_cleanup_barriers): Likewise.
25249         * omp-low.c (pass_expand_omp): Likewise.
25250         (pass_lower_omp): Likewise.
25251         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
25252         * recog.c (pass_split_all_insns): Likewise.
25253         (pass_split_after_reload): Likewise.
25254         (pass_split_before_regstack): Likewise.
25255         (pass_split_before_sched2): Likewise.
25256         (pass_split_for_shorten_branches): Likewise.
25257         * reginfo.c (pass_reginfo_init): Likewise.
25258         (pass_subregs_of_mode_init): Likewise.
25259         (pass_subregs_of_mode_finish): Likewise.
25260         * passes.c (pass_postreload): Likewise.
25261         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
25262         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
25263         (pass_warn_function_return): Likewise.
25264         (pass_warn_function_noreturn): Likewise.
25265         * tree-complex.c (pass_lower_complex): Likewise.
25266         (pass_lower_complex_O0): Likewise.
25267         * tree-if-conv.c (pass_if_conversion): Likewise.
25268         * tree-into-ssa.c (pass_build_ssa): Likewise.
25269         * tree-mudflap.c (pass_mudflap_1): Likewise.
25270         (pass_mudflap_2): Likewise.
25271         * tree-nomudflap.c (pass_mudflap_1): Likewise.
25272         (pass_mudflap_2): Likewise.
25273         * tree-nrv.c (pass_return_slot): Likewise.
25274         * tree-object-size.c (pass_object_sizes): Likewise.
25275         * tree-optimize.c (pass_all_optimizations): Likewise.
25276         (pass_early_local_passes): Likewise.
25277         (pass_all_early_optimizations): Likewise.
25278         (pass_cleanup_cfg): Likewise.
25279         (pass_cleanup_cfg_post_optimizing): Likewise.
25280         (pass_free_datastructures): Likewise.
25281         (pass_free_cfg_annotations): Likewise.
25282         (pass_fixup_cfg): Likewise.
25283         (pass_init_datastructures): Likewise.
25284         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
25285         (pass_late_warn_uninitialized): Likewise.
25286         (pass_update_address_taken): Likewise.
25287         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
25288         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
25289         (pass_cse_sincos): Likewise.
25290         (pass_convert_to_rsqrt): Likewise.
25291         * tree-ssa-structalias.c (pass_build_alias): Likewise.
25292         * tree-stdarg.c (pass_stdarg): Likewise.
25293         * tree-tailcall.c (pass_tail_recursion): Likewise.
25294         (pass_tail_calls): Likewise.
25295         * tree-vect-generic.c (pass_lower_vector): Likewise.
25296         (pass_lower_vector_ssa): Likewise.
25297         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
25298
25299 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
25300
25301         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
25302         XLR entry.
25303         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
25304         Handle -march=xlr.
25305         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
25306         logical and signext.
25307
25308 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
25309
25310         PR target/39767
25311         * config/sh/predicates.md (arith_operand): Check if the operand
25312         of TRUNCATE is a REG.
25313
25314 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25315
25316         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
25317         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
25318
25319 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25320
25321         * tree-iterator.c (tsi_split_statement_list_after,
25322         tsi_split_statement_list_before): Remove.
25323         * tree-iterator.h: Remove the prototypes for
25324         tsi_split_statement_list_after and tsi_split_statement_list_before.
25325
25326 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25327
25328         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
25329         * tree-ssa-propagate.h: Remove the prototype for
25330         stmt_makes_single_load.
25331
25332 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25333
25334         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
25335         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
25336
25337 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25338
25339         * tree-iterator.c (EXPR_LAST_BODY): Remove.
25340
25341 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25342
25343         * except.c (eh_region_outer_p): Remove.
25344         * except.h: Remove the prototype for eh_region_outer_p.
25345
25346 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
25347
25348         * function.c (current_function_assembler_name): Remove.
25349         * function.h: Remove the prototype for
25350         current_function_assembler_name.
25351
25352 2009-04-16  Ian Lance Taylor  <iant@google.com>
25353
25354         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
25355         (add_reg_note): Call alloc_reg_note.
25356         * rtl.h (alloc_reg_note): Declare.
25357         * combine.c (try_combine): Use alloc_reg_note.
25358         (recog_for_combine, move_deaths): Likewise.
25359         (distribute_notes): Use alloc_reg_note and add_reg_note.
25360         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
25361         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
25362         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
25363
25364 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
25365
25366         PR rtl-optimization/39762
25367         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
25368         ira_may_move_out_cost): Add comments about way of their usage.
25369         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
25370
25371         * ira-conflicts.c (process_regs_for_copy): Use function
25372         ira_get_register_move_cost instead of global
25373         ira_register_move_cost.
25374
25375         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
25376         color_pass, move_spill_restore, update_curr_costs): Ditto.
25377
25378         * ira-lives.c (process_single_reg_class_operands): Ditto.
25379
25380         * ira-emit.c (emit_move_list): Ditto.
25381
25382         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
25383         (record_reg_classes): Ditto.  Use functions
25384         ira_get_register_move_cost and ira_get_may_move_cost instead of
25385         global vars ira_register_move_cost, ira_may_move_out_cost and
25386         ira_may_move_in_cost.
25387         (record_address_regs): Don't call ira_init_register_move_cost.
25388         Use function ira_get_may_move_cost instead of global
25389         ira_may_move_in_cost.
25390         (process_bb_node_for_hard_reg_moves): Use function
25391         ira_get_register_move_cost instead of global ira_register_move_cost.
25392         (ira_costs): Don't call ira_init_register_move_cost.
25393
25394 2009-04-16  Richard Guenther  <rguenther@suse.de>
25395
25396         * tree-cfg.c (verify_gimple_assign_binary):
25397         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
25398         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
25399         (create_general_new_stmt): Note that this function is broken.
25400
25401 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25402
25403         * common.opt (fhelp): Add Var(help_flag).
25404         * gcc-plugin.h (plugin_info): Add help.
25405         * plugin.c (plugin_name_args): Add help.
25406         (register_plugin_info): Set plugin->help.
25407         (print_help_one_plugin): New.
25408         (print_plugins_help): New.
25409         * plugin.h (print_plugins_help): New.
25410         * toplev.c (toplev_main): Call print_plugins_help if needed.
25411
25412 2009-04-16  Richard Guenther  <rguenther@suse.de>
25413
25414         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
25415         (gimple_ior_addresses_taken_1): New function.
25416         (gimple_ior_addresses_taken): Likewise.
25417         * gimple.h (struct gimple_statement_with_ops_base): Remove
25418         addresses_taken member.
25419         (gimple_ior_addresses_taken): Declare.
25420         (gimple_addresses_taken, gimple_addresses_taken_ptr,
25421         gimple_set_addresses_taken): Remove.
25422         * ipa-reference.c (mark_address): New function.
25423         (scan_stmt_for_static_refs): Use it for marking addresses taken.
25424         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
25425         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
25426         (gimple_add_to_addresses_taken): Remove.
25427         (get_tmr_operands): Call mark_address_taken.
25428         (get_asm_expr_operands): Likewise.
25429         (get_expr_operands): Likewise.
25430         (build_ssa_operands): Do not clear the addresses_taken bitmap.
25431         (free_stmt_operands): Do not free it.
25432         * tree-ssa.c (delete_tree_ssa): Likewise.
25433         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
25434
25435 2009-04-16  Richard Guenther  <rguenther@suse.de>
25436
25437         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
25438         (walk_stmt_load_store_ops): Likewise.
25439         * gimple.c (get_base_loadstore): New function.
25440         (walk_stmt_load_store_addr_ops): Likewise.
25441         (walk_stmt_load_store_ops): Likewise.
25442         * ipa-pure-const.c (check_op): Simplify.
25443         (check_load, check_store): New functions.
25444         (check_stmt): Use walk_stmt_load_store_ops.
25445         * ipa-reference.c (mark_load): Adjust signature.
25446         (mark_store): Likewise.
25447         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
25448
25449 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25450
25451         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
25452         (plugin_info): New.
25453         * opts.c (common_handle_option): Don't call print_version.
25454         * plugin.c (plugin_name_args): Add version.
25455         (register_plugin_info): New.
25456         (register_callback): Handle PLUGIN_INFO.
25457         (try_init_one_plugin): New.
25458         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
25459         if failed to init.
25460         (finalize_one_plugin): New.
25461         (finalize_plugins): New.
25462         (print_one_plugin): New.
25463         (print_plugins_versions): New.
25464         * plugin.h (print_plugins_versions): New.
25465         (finalize_plugins): New.
25466         * toplev.c (compile_file): Don't call initialize_plugins.
25467         (print_version): Call print_plugins_versions.
25468         (toplev_main): Call initialize_plugins. Print version if needed.
25469         Call finalize_plugins.
25470
25471 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
25472
25473         * common.opt (fversion): New.
25474         * gcc.c (print_version): New.
25475         (process_command): Don't print the version. Just set print_version.
25476         (main): Print version. Call subprocesses if print_version and
25477         verbose_flag are set.
25478         * opts.c (common_handle_option): Handle OPT_fversion.
25479
25480 2009-04-16  Richard Guenther  <rguenther@suse.de>
25481             Ira Rosen  <irar@il.ibm.com>
25482
25483         PR tree-optimization/39698
25484         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
25485         type of the reduction variable.  Only generate the def if
25486         it is needed.
25487
25488         * omp-low.c (expand_omp_for_generic): When converting to a pointer
25489         make sure to first convert to an integer of the same precision.
25490         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
25491         the type of the evolution correctly in computing the new
25492         induction variable base.
25493
25494 2009-04-16  Richard Guenther  <rguenther@suse.de>
25495
25496         PR middle-end/39625
25497         * tree-cfg.c (make_blocks): Split statements with to-be
25498         abnormal SSA names on the lhs.
25499
25500 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
25501
25502         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
25503         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
25504         * c-typeck.c (really_start_incremental_init): Likewise.
25505         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
25506         (TARGET_INITIALIZER): Remove it.
25507         * target.h (struct target): Remove vector_opaque_p.
25508         * tree.c (build_opaque_vector_type): New.
25509         * tree.h (TYPE_VECTOR_OPAQUE): New.
25510         (build_opaque_vector_type): Declare.
25511         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
25512         * config/rs6000/rs6000.c (build_opaque_vector_type,
25513         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
25514         (rs6000_init_builtins): Use build_opaque_vector_type for
25515         opaque_V4SI_type_node.
25516
25517 2009-04-15  Catherine Moore  <clm@codesourcery.com>
25518
25519         * debug.h (set_name):  Declare.
25520         * dwarf2out.c (dwarf2out_set_name): Declare.
25521         (dwarf2_debug_hooks): Add set_name.
25522         (find_AT_string): New.
25523         (add_AT_string): Call find_AT_string.
25524         (dwarf2out_set_name): New.
25525         * cp/decl.c (grokdeclarator): Call set_name.
25526         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
25527         * debug.c (do_nothing_debug_hooks):  Likewise.
25528         * dbxout.c (dbx_debug_hooks): Likewise.
25529         * sdbout.c (sdb_debug_hooks): Likewise.
25530
25531 2009-04-15  Michael Eager  <eager@eagercon.com>
25532
25533         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
25534         reg for single-precision FPU.
25535         * config/rs6000/rs6000.md (movsi_internal1): Only for
25536         !TARGET_SINGLE_FPU.
25537         (movsi_internal1_single): New. Add pattern to move SI values to/from
25538         single-precision FP regs.
25539
25540 2009-04-15  Richard Guenther  <rguenther@suse.de>
25541
25542         * omp-low.c (lower_rec_input_clauses): Build correct address
25543         expressions.
25544         (expand_omp_for_generic): Fix multiplication type.
25545         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
25546         (generate_memset_zero): Fix types.
25547         * tree-profile.c (prepare_instrumented_value): Correctly
25548         widen a pointer.
25549
25550 2009-04-15  Ian Lance Taylor  <iant@google.com>
25551
25552         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
25553         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
25554         for -Wall and for -Wc++-compat.
25555         (c_common_post_options): For C++, set warn_enum_compare if not
25556         already set.
25557         * c-tree.h (struct c_expr): Add field original_type.
25558         (build_external_ref): Update declaration.
25559         * c-parser.c (c_parser_braced_init): Set original_type.
25560         (c_parser_initelt): Likewise.
25561         (c_parser_expr_no_commas): Likewise.
25562         (c_parser_conditional_expression): Likewise.
25563         (c_parser_cast_expression): Likewise.
25564         (c_parser_unary_expression): Likewise.  Pull setting of
25565         original_code to top of function.
25566         (c_parser_sizeof_expression): Set original_type.
25567         (c_parser_alignof_expression): Likewise.
25568         (c_parser_postfix_expression): Likewise.  Pull setting of
25569         original_code to top of function.
25570         (c_parser_postfix_expression_after_paren_type): Set original_type.
25571         (c_parser_postfix_expression_after_primary): Likewise.
25572         (c_parser_expression): Likewise.
25573         * c-typeck.c (build_external_ref): Add type parameter.  Change all
25574         callers.
25575         (c_expr_sizeof_expr): Set original_type field.
25576         (parser_build_unary_op): Likewise.
25577         (parser_build_binary_op): Likewise.  Optionally warn about
25578         comparisons of enums of different types.
25579         (digest_init): Set original_type field.
25580         (really_start_incremental_init): Likewise.
25581         (push_init_level, pop_init_level): Likewise.
25582         * doc/invoke.texi (Warning Options): -Wenum-compare now
25583         supported in C.
25584
25585 2009-04-15  Richard Guenther  <rguenther@suse.de>
25586
25587         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
25588         out a necessary conversion.
25589         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
25590         names we didn't value number.
25591         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
25592
25593 2009-04-15  Richard Guenther  <rguenther@suse.de>
25594
25595         PR tree-optimization/39764
25596         * tree-ssa-ccp.c (get_value): Canonicalize value with
25597         canonicalize_float_value.
25598
25599 2009-04-15  Jan Hubicka  <jh@suse.cz>
25600
25601         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
25602         Wrong version of patch.
25603
25604 2009-04-15  Jan Hubicka  <jh@suse.cz>
25605
25606         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
25607
25608 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
25609
25610         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
25611         our distinct integral and vector types.
25612
25613 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
25614
25615         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
25616         * init.c (build_vtbl_address): Remove call to assemble_external.
25617
25618 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
25619
25620         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
25621         output for other floating point modes.
25622
25623 2009-04-14  Diego Novillo  <dnovillo@google.com>
25624
25625         * diagnostic.c (diagnostic_report_diagnostic): Do not
25626         warn about loaded plugins for DK_ERROR and DK_WARNING.
25627         * c-decl.c (declspecs_add_type): Move call to
25628         invoke_plugin_callbacks ...
25629         * c-parser.c (c_parser_declspecs): ... here.
25630         * plugin.c (dump_active_plugins): Tidy output.
25631
25632 2009-04-14  Diego Novillo  <dnovillo@google.com>
25633             Le-Chun Wu  <lcwu@google.com>
25634
25635         * configure.ac: Add --enable-plugin support.
25636         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
25637         * Makefile.in (PLUGIN_H): Define.
25638         Export ENABLE_PLUGIN and GMPINC to site.exp.
25639         Add PLUGINLIBS to link command.
25640         Add/modify dependencies for plugin.o and files including plugin.h.
25641         (plugin.o): New.
25642         * config.in: Regenerate.
25643
25644         * opts.c (common_handle_option): Handle OPT_fplugin_ and
25645         OPT_fplugin_arg_.
25646
25647 2009-04-14  Le-Chun Wu  <lcwu@google.com>
25648
25649         * tree-pass.h (register_one_dump_file): Add a prototype for
25650         register_one_dump_file.
25651         * toplev.c (compile_file): Call initialize_plugins.
25652         (do_compile): Call invoke_plugin_callbacks.
25653         (toplev_main): Call invoke_plugin_callbacks.
25654         * common.opt: Add -fplugin= and -fplugin-arg-.
25655         * gcc-plugin.h: New public header file for plugins to include.
25656         * plugin.c: New source file.
25657         * plugin.h: New internal header file.
25658         * passes.c (register_one_dump_file): Make it external.
25659
25660         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
25661
25662 2009-04-14  Diego Novillo  <dnovillo@google.com>
25663
25664         * doc/plugins.texi: New.
25665         * doc/gccint.texi: Add reference to Plugins chapter.
25666         * doc/invoke.texi: Document -fplugin and -fplugin-arg
25667         * diagnostic.c (diagnostic_report_diagnostic): Warn about
25668         loaded plugins, if any.
25669         * timevar.def (TV_PLUGIN_INIT): Define.
25670         (TV_PLUGIN_RUN): Define.
25671         * plugin.c: Include timevar.h
25672         (plugins_active_p): New.
25673         (dump_active_plugins): New.
25674         (debug_active_plugins): New.
25675
25676 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
25677
25678         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
25679         library paths.
25680         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
25681
25682 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
25683
25684         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
25685         the same as a minus without a shift.
25686
25687 2009-04-14  Nick Clifton  <nickc@redhat.com>
25688
25689         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
25690         comparisons with small integers will always produce a short
25691         branch.
25692
25693 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
25694
25695         Merge:
25696         2008-12-19  Diego Novillo  <dnovillo@google.com>
25697
25698         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
25699
25700 2009-04-14  Richard Guenther  <rguenther@suse.de>
25701
25702         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
25703         verification.
25704         (verify_gimple_assign_binary): Likewise.  Handle shifts and
25705         rotates correctly.
25706         (verify_gimple_phi): Print the mismatched argument position.
25707         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
25708         Fix types.
25709         (vect_update_init_of_dr): Likewise.
25710         * matrix-reorg.c (transform_access_sites): Do what the
25711         comment suggests.
25712         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
25713
25714 2009-04-13  Michael Eager  <eager@eagercon.com>
25715
25716         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
25717         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
25718         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
25719         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
25720         remove duplicate config
25721
25722 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25723
25724         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
25725         file_name:line_number type locator of the call site.
25726
25727 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
25728
25729         * genautomata.c: Put blank after comma.
25730         (automaton_decls): New.
25731         (struct unit_usage): Add comments to member next.
25732         (store_alt_unit_usage): Keep the list ordered.
25733         (unit_present_on_list_p, equal_alternatives_p): New.
25734         (check_regexp_units_distribution): Check units distribution
25735         correctness correctly.
25736         (main): Don't write automata if error is found.  Return correct
25737         exit code.
25738
25739         * config/m68k/cf.md (cfv4_ds): Remove.
25740         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
25741         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
25742
25743         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
25744         power4-load-ext, power4-store, power4-store-update,
25745         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
25746         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
25747         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
25748         power4-sqrt, power4-isync): Modify reservation to make correct
25749         unit distribution to automata.
25750
25751         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
25752         power5-store-update, power5-two, power5-three, power5-lmul,
25753         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
25754
25755 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
25756
25757         * except.c (pass_set_nothrow_function_flags): Set name and add
25758         TODO_dump_func.
25759         (set_nothrow_function_flags): Mention in the dump file when
25760         changing a function to nothrow.
25761
25762 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
25763
25764         PR/39066
25765         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
25766         instead of unsigned long.
25767
25768 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
25769
25770         * config/arm/arm.c (return_used_this_function): Remove.
25771         (arm_output_function_prologue): Remove use of
25772         return_used_this_function.
25773         (output_return_instruction): Replace use of
25774         return_used_this_function
25775         by cfun->machine->return_used_this_function.
25776         (arm_output_epilogue): Likewise.
25777         (arm_output_function_epilogue): Likewise.
25778         (thumb_unexpanded_epilogue): Likewise.
25779         * config/arm/arm.h (struct machine_function):
25780         New member return_used_this_function.
25781
25782 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
25783
25784         * doc/install.texi: Correct description of default directory for
25785         --with-gxx-include-dir.
25786
25787 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
25788
25789         * fold-const.c (build_range_check): Properly deal with enumeral and
25790         boolean base types.
25791
25792 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
25793
25794         * doc/invoke.texi (max_gcse_passes): Remove documentation.
25795         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
25796         * params.h (MAX_GCSE_PASSES): Remove.
25797         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
25798         in sequence.  Remove ability to run multiple passes.
25799         (bypass_jumps): Report run as third CPROP pass.
25800
25801 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
25802
25803         PR middle-end/39651
25804         * except.c (can_throw_external): Look at each insn in a SEQUENCE
25805         when deciding whether the whole SEQUENCE can throw.
25806
25807 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
25808
25809         PR target/39740
25810         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
25811         offseted label references.
25812
25813 2009-04-11  Jan Hubicka  <jh@suse.cz>
25814
25815         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
25816
25817 2009-04-11  Richard Guenther  <rguenther@suse.de>
25818
25819         PR middle-end/39732
25820         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
25821         return variables as TREE_ADDRESSABLE.
25822
25823 2009-04-11  Richard Guenther  <rguenther@suse.de>
25824
25825         PR tree-optimization/39713
25826         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
25827         reference trees have SSA_NAME operands.
25828
25829 2009-04-11  Richard Guenther  <rguenther@suse.de>
25830
25831         PR c/39712
25832         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
25833         address expressions.
25834
25835 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
25836
25837         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
25838         match changes in Cygwin 1.7
25839         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
25840         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
25841
25842 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25843
25844         PR tree-optimization/39701
25845         * doc/invoke.texi (Optimization Options): Document change in
25846         meaning and initialization of -fdelete-null-pointer-checks.
25847
25848 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25849
25850         PR middle-end/39701
25851         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
25852
25853         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
25854         here.
25855
25856         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
25857
25858 2009-04-10  Chao-ying Fu  <fu@mips.com>
25859
25860         * doc/tm.texi (Instruction Output): Document
25861         TARGET_ASM_FINAL_POSTSCAN_INSN.
25862         * target.h (final_postscan_insn): New field in asm_out.
25863         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25864         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
25865         * final.c (final_scan_insn): Call
25866         targetm.asm_out.final_postscan_insn after outputting
25867         an asm macro and a normal instruction.
25868
25869         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
25870         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
25871         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
25872         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
25873         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
25874
25875 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
25876
25877         PR middle-end/39701
25878         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
25879         variables as non-NULL even with -fdelete-null-pointer-checks.
25880
25881 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
25882
25883         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
25884
25885 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
25886
25887         PR target/39678
25888         * config/i386/i386.c (classify_argument): Handle SCmode with
25889         (bit_offset % 64) != 0.
25890
25891 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
25892
25893         * doc/invoke.texi (Optimize Options): Add cross-reference to
25894         -Q --help=optimizers examples.
25895
25896 2009-04-10  Ben Elliston  <bje@au.ibm.com>
25897
25898         PR target/36800
25899         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
25900         regalign for the reg == fpr and TDmode case.
25901
25902 2009-04-09  David Ayers  <ayers@fsfe.org>
25903
25904         PR objc/29200
25905         * objc/objc-act.c (warn_with_method): Remove helper function.
25906         (check_duplicates): Call warning and inform directly.
25907         (really_start_method): Likewise.
25908
25909 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
25910
25911         * expmed.c (expand_divmod): Always use a comparison for a division
25912         by a large unsigned integer.
25913
25914         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
25915         for things others than variables or functions as nonzero.
25916
25917 2009-04-09  Nick Clifton  <nickc@redhat.com>
25918
25919         * unwind-compat.c: Change copyright header to refer to version
25920         3 of the GNU General Public License with version 3.1 of the
25921         GCC Runtime Library Exception and to point readers at the
25922         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
25923         * config/alpha/crtfastmath.c: Likewise.
25924         * config/alpha/linux-unwind.h: Likewise.
25925         * config/alpha/qrnnd.asm: Likewise.
25926         * config/alpha/vms-crt0-64.c: Likewise.
25927         * config/alpha/vms-crt0.c: Likewise.
25928         * config/alpha/vms-dwarf2.asm: Likewise.
25929         * config/alpha/vms-dwarf2eh.asm: Likewise.
25930         * config/alpha/vms-psxcrt0-64.c: Likewise.
25931         * config/alpha/vms-psxcrt0.c: Likewise.
25932         * config/alpha/vms_tramp.asm: Likewise.
25933         * config/arc/initfini.c: Likewise.
25934         * config/arc/lib1funcs.asm: Likewise.
25935         * config/arm/bpabi-v6m.S: Likewise.
25936         * config/arm/bpabi.S: Likewise.
25937         * config/arm/bpabi.c: Likewise.
25938         * config/arm/crti.asm: Likewise.
25939         * config/arm/crtn.asm: Likewise.
25940         * config/arm/ieee754-df.S: Likewise.
25941         * config/arm/ieee754-sf.S: Likewise.
25942         * config/arm/lib1funcs.asm: Likewise.
25943         * config/arm/libunwind.S: Likewise.
25944         * config/arm/linux-atomic.c: Likewise.
25945         * config/arm/mmintrin.h: Likewise.
25946         * config/arm/pr-support.c: Likewise.
25947         * config/arm/unaligned-funcs.c: Likewise.
25948         * config/arm/unwind-arm.c: Likewise.
25949         * config/arm/unwind-arm.h: Likewise.
25950         * config/avr/libgcc.S: Likewise.
25951         * config/bfin/crti.s: Likewise.
25952         * config/bfin/crtlibid.s: Likewise.
25953         * config/bfin/crtn.s: Likewise.
25954         * config/bfin/lib1funcs.asm: Likewise.
25955         * config/bfin/linux-unwind.h: Likewise.
25956         * config/cris/arit.c: Likewise.
25957         * config/cris/cris_abi_symbol.c: Likewise.
25958         * config/darwin-64.c: Likewise.
25959         * config/darwin-crt2.c: Likewise.
25960         * config/darwin-crt3.c: Likewise.
25961         * config/darwin.h: Likewise.
25962         * config/dbxelf.h: Likewise.
25963         * config/dfp-bit.c: Likewise.
25964         * config/dfp-bit.h: Likewise.
25965         * config/elfos.h: Likewise.
25966         * config/fixed-bit.c: Likewise.
25967         * config/fixed-bit.h: Likewise.
25968         * config/fp-bit.c: Likewise.
25969         * config/fp-bit.h: Likewise.
25970         * config/fr30/crti.asm: Likewise.
25971         * config/fr30/crtn.asm: Likewise.
25972         * config/fr30/lib1funcs.asm: Likewise.
25973         * config/freebsd-spec.h: Likewise.
25974         * config/frv/cmovd.c: Likewise.
25975         * config/frv/cmovh.c: Likewise.
25976         * config/frv/cmovw.c: Likewise.
25977         * config/frv/frvbegin.c: Likewise.
25978         * config/frv/frvend.c: Likewise.
25979         * config/frv/lib1funcs.asm: Likewise.
25980         * config/glibc-stdint.h: Likewise.
25981         * config/h8300/clzhi2.c: Likewise.
25982         * config/h8300/crti.asm: Likewise.
25983         * config/h8300/crtn.asm: Likewise.
25984         * config/h8300/ctzhi2.c: Likewise.
25985         * config/h8300/fixunssfsi.c: Likewise.
25986         * config/h8300/lib1funcs.asm: Likewise.
25987         * config/h8300/parityhi2.c: Likewise.
25988         * config/h8300/popcounthi2.c: Likewise.
25989         * config/i386/ammintrin.h: Likewise.
25990         * config/i386/att.h: Likewise.
25991         * config/i386/avxintrin.h: Likewise.
25992         * config/i386/biarch64.h: Likewise.
25993         * config/i386/bmmintrin.h: Likewise.
25994         * config/i386/cpuid.h: Likewise.
25995         * config/i386/cross-stdarg.h: Likewise.
25996         * config/i386/crtfastmath.c: Likewise.
25997         * config/i386/crtprec.c: Likewise.
25998         * config/i386/cygming-crtbegin.c: Likewise.
25999         * config/i386/cygming-crtend.c: Likewise.
26000         * config/i386/cygwin.asm: Likewise.
26001         * config/i386/emmintrin.h: Likewise.
26002         * config/i386/gmm_malloc.h: Likewise.
26003         * config/i386/gthr-win32.c: Likewise.
26004         * config/i386/i386.h: Likewise.
26005         * config/i386/immintrin.h: Likewise.
26006         * config/i386/linux-unwind.h: Likewise.
26007         * config/i386/linux64.h: Likewise.
26008         * config/i386/mm3dnow.h: Likewise.
26009         * config/i386/mmintrin-common.h: Likewise.
26010         * config/i386/mmintrin.h: Likewise.
26011         * config/i386/nmmintrin.h: Likewise.
26012         * config/i386/pmm_malloc.h: Likewise.
26013         * config/i386/pmmintrin.h: Likewise.
26014         * config/i386/smmintrin.h: Likewise.
26015         * config/i386/sol2-c1.asm: Likewise.
26016         * config/i386/sol2-ci.asm: Likewise.
26017         * config/i386/sol2-cn.asm: Likewise.
26018         * config/i386/sol2-gc1.asm: Likewise.
26019         * config/i386/tmmintrin.h: Likewise.
26020         * config/i386/unix.h: Likewise.
26021         * config/i386/w32-unwind.h: Likewise.
26022         * config/i386/wmmintrin.h: Likewise.
26023         * config/i386/x86-64.h: Likewise.
26024         * config/i386/x86intrin.h: Likewise.
26025         * config/i386/xmmintrin.h: Likewise.
26026         * config/ia64/crtbegin.asm: Likewise.
26027         * config/ia64/crtend.asm: Likewise.
26028         * config/ia64/crtfastmath.c: Likewise.
26029         * config/ia64/crti.asm: Likewise.
26030         * config/ia64/crtn.asm: Likewise.
26031         * config/ia64/fde-glibc.c: Likewise.
26032         * config/ia64/lib1funcs.asm: Likewise.
26033         * config/ia64/linux-unwind.h: Likewise.
26034         * config/ia64/quadlib.c: Likewise.
26035         * config/ia64/unwind-ia64.c: Likewise.
26036         * config/linux.h: Likewise.
26037         * config/m32c/m32c-lib1.S: Likewise.
26038         * config/m32c/m32c-lib2-trapv.c: Likewise.
26039         * config/m32c/m32c-lib2.c: Likewise.
26040         * config/m32r/initfini.c: Likewise.
26041         * config/m68hc11/larith.asm: Likewise.
26042         * config/m68hc11/m68hc11-crt0.S: Likewise.
26043         * config/m68k/cf.md: Likewise.
26044         * config/m68k/crti.s: Likewise.
26045         * config/m68k/crtn.s: Likewise.
26046         * config/m68k/lb1sf68.asm: Likewise.
26047         * config/m68k/linux-unwind.h: Likewise.
26048         * config/mcore/crti.asm: Likewise.
26049         * config/mcore/crtn.asm: Likewise.
26050         * config/mcore/lib1.asm: Likewise.
26051         * config/mips/linux-unwind.h: Likewise.
26052         * config/mips/loongson.h: Likewise.
26053         * config/mips/mips16.S: Likewise.
26054         * config/mmix/crti.asm: Likewise.
26055         * config/mmix/crtn.asm: Likewise.
26056         * config/pa/fptr.c: Likewise.
26057         * config/pa/hpux-unwind.h: Likewise.
26058         * config/pa/lib2funcs.asm: Likewise.
26059         * config/pa/linux-atomic.c: Likewise.
26060         * config/pa/linux-unwind.h: Likewise.
26061         * config/pa/milli64.S: Likewise.
26062         * config/pa/quadlib.c: Likewise.
26063         * config/pa/stublib.c: Likewise.
26064         * config/picochip/libgccExtras/adddi3.asm: Likewise.
26065         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
26066         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
26067         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
26068         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
26069         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
26070         * config/picochip/libgccExtras/divmod15.asm: Likewise.
26071         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
26072         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
26073         * config/picochip/libgccExtras/longjmp.asm: Likewise.
26074         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
26075         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
26076         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
26077         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
26078         * config/picochip/libgccExtras/setjmp.asm: Likewise.
26079         * config/picochip/libgccExtras/subdi3.asm: Likewise.
26080         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
26081         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
26082         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
26083         * config/rs6000/750cl.h: Likewise.
26084         * config/rs6000/altivec.h: Likewise.
26085         * config/rs6000/biarch64.h: Likewise.
26086         * config/rs6000/crtresfpr.asm: Likewise.
26087         * config/rs6000/crtresgpr.asm: Likewise.
26088         * config/rs6000/crtresxfpr.asm: Likewise.
26089         * config/rs6000/crtresxgpr.asm: Likewise.
26090         * config/rs6000/crtsavfpr.asm: Likewise.
26091         * config/rs6000/crtsavgpr.asm: Likewise.
26092         * config/rs6000/darwin-asm.h: Likewise.
26093         * config/rs6000/darwin-fallback.c: Likewise.
26094         * config/rs6000/darwin-fpsave.asm: Likewise.
26095         * config/rs6000/darwin-ldouble.c: Likewise.
26096         * config/rs6000/darwin-tramp.asm: Likewise.
26097         * config/rs6000/darwin-unwind.h: Likewise.
26098         * config/rs6000/darwin-vecsave.asm: Likewise.
26099         * config/rs6000/darwin-world.asm: Likewise.
26100         * config/rs6000/e500crtres32gpr.asm: Likewise.
26101         * config/rs6000/e500crtres64gpr.asm: Likewise.
26102         * config/rs6000/e500crtres64gprctr.asm: Likewise.
26103         * config/rs6000/e500crtrest32gpr.asm: Likewise.
26104         * config/rs6000/e500crtrest64gpr.asm: Likewise.
26105         * config/rs6000/e500crtresx32gpr.asm: Likewise.
26106         * config/rs6000/e500crtresx64gpr.asm: Likewise.
26107         * config/rs6000/e500crtsav32gpr.asm: Likewise.
26108         * config/rs6000/e500crtsav64gpr.asm: Likewise.
26109         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
26110         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
26111         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
26112         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
26113         * config/rs6000/eabi-ci.asm: Likewise.
26114         * config/rs6000/eabi-cn.asm: Likewise.
26115         * config/rs6000/eabi.asm: Likewise.
26116         * config/rs6000/linux-unwind.h: Likewise.
26117         * config/rs6000/linux64.h: Likewise.
26118         * config/rs6000/paired.h: Likewise.
26119         * config/rs6000/paired.md: Likewise.
26120         * config/rs6000/ppc64-fp.c: Likewise.
26121         * config/rs6000/ppu_intrinsics.h: Likewise.
26122         * config/rs6000/rs6000.h: Likewise.
26123         * config/rs6000/si2vmx.h: Likewise.
26124         * config/rs6000/sol-ci.asm: Likewise.
26125         * config/rs6000/sol-cn.asm: Likewise.
26126         * config/rs6000/spe.h: Likewise.
26127         * config/rs6000/spu2vmx.h: Likewise.
26128         * config/rs6000/sysv4.h: Likewise.
26129         * config/rs6000/tramp.asm: Likewise.
26130         * config/rs6000/vec_types.h: Likewise.
26131         * config/s390/linux-unwind.h: Likewise.
26132         * config/s390/tpf-unwind.h: Likewise.
26133         * config/score/crti.asm: Likewise.
26134         * config/score/crtn.asm: Likewise.
26135         * config/sh/crt1.asm: Likewise.
26136         * config/sh/crti.asm: Likewise.
26137         * config/sh/crtn.asm: Likewise.
26138         * config/sh/divtab-sh4-300.c: Likewise.
26139         * config/sh/divtab-sh4.c: Likewise.
26140         * config/sh/divtab.c: Likewise.
26141         * config/sh/lib1funcs-4-300.asm: Likewise.
26142         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
26143         * config/sh/lib1funcs.asm: Likewise.
26144         * config/sh/lib1funcs.h: Likewise.
26145         * config/sh/linux-atomic.asm: Likewise.
26146         * config/sh/linux-unwind.h: Likewise.
26147         * config/sh/shmedia.h: Likewise.
26148         * config/sh/sshmedia.h: Likewise.
26149         * config/sh/ushmedia.h: Likewise.
26150         * config/sparc/crtfastmath.c: Likewise.
26151         * config/sparc/linux-unwind.h: Likewise.
26152         * config/sparc/sol2-c1.asm: Likewise.
26153         * config/sparc/sol2-ci.asm: Likewise.
26154         * config/sparc/sol2-cn.asm: Likewise.
26155         * config/spu/divmodti4.c: Likewise.
26156         * config/spu/divv2df3.c: Likewise.
26157         * config/spu/float_disf.c: Likewise.
26158         * config/spu/float_unsdidf.c: Likewise.
26159         * config/spu/float_unsdisf.c: Likewise.
26160         * config/spu/float_unssidf.c: Likewise.
26161         * config/spu/mfc_multi_tag_release.c: Likewise.
26162         * config/spu/mfc_multi_tag_reserve.c: Likewise.
26163         * config/spu/mfc_tag_release.c: Likewise.
26164         * config/spu/mfc_tag_reserve.c: Likewise.
26165         * config/spu/mfc_tag_table.c: Likewise.
26166         * config/spu/multi3.c: Likewise.
26167         * config/spu/spu_internals.h: Likewise.
26168         * config/spu/spu_intrinsics.h: Likewise.
26169         * config/spu/spu_mfcio.h: Likewise.
26170         * config/spu/vec_types.h: Likewise.
26171         * config/spu/vmx2spu.h: Likewise.
26172         * config/stormy16/stormy16-lib2.c: Likewise.
26173         * config/svr4.h: Likewise.
26174         * config/sync.c: Likewise.
26175         * config/v850/lib1funcs.asm: Likewise.
26176         * config/vxlib-tls.c: Likewise.
26177         * config/vxlib.c: Likewise.
26178         * config/vxworks-dummy.h: Likewise.
26179         * config/xtensa/crti.asm: Likewise.
26180         * config/xtensa/crtn.asm: Likewise.
26181         * config/xtensa/ieee754-df.S: Likewise.
26182         * config/xtensa/ieee754-sf.S: Likewise.
26183         * config/xtensa/lib1funcs.asm: Likewise.
26184         * config/xtensa/lib2funcs.S: Likewise.
26185         * config/xtensa/linux-unwind.h: Likewise.
26186         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
26187         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
26188         * coretypes.h: Likewise.
26189         * crtstuff.c: Likewise.
26190         * defaults.h: Likewise.
26191         * dwarf2.h: Likewise.
26192         * emutls.c: Likewise.
26193         * gbl-ctors.h: Likewise.
26194         * gcov-io.h: Likewise.
26195         * ginclude/float.h: Likewise.
26196         * ginclude/iso646.h: Likewise.
26197         * ginclude/stdarg.h: Likewise.
26198         * ginclude/stdbool.h: Likewise.
26199         * ginclude/stddef.h: Likewise.
26200         * ginclude/stdfix.h: Likewise.
26201         * ginclude/stdint-gcc.h: Likewise.
26202         * ginclude/tgmath.h: Likewise.
26203         * gthr-aix.h: Likewise.
26204         * gthr-dce.h: Likewise.
26205         * gthr-gnat.c: Likewise.
26206         * gthr-gnat.h: Likewise.
26207         * gthr-lynx.h: Likewise.
26208         * gthr-mipssde.h: Likewise.
26209         * gthr-nks.h: Likewise.
26210         * gthr-posix.c: Likewise.
26211         * gthr-posix.h: Likewise.
26212         * gthr-posix95.h: Likewise.
26213         * gthr-rtems.h: Likewise.
26214         * gthr-single.h: Likewise.
26215         * gthr-solaris.h: Likewise.
26216         * gthr-tpf.h: Likewise.
26217         * gthr-vxworks.h: Likewise.
26218         * gthr-win32.h: Likewise.
26219         * gthr.h: Likewise.
26220         * libgcc2.c: Likewise.
26221         * libgcc2.h: Likewise.
26222         * libgcov.c: Likewise.
26223         * tsystem.h: Likewise.
26224         * typeclass.h: Likewise.
26225         * unwind-c.c: Likewise.
26226         * unwind-compat.h: Likewise.
26227         * unwind-dw2-fde-compat.c: Likewise.
26228         * unwind-dw2-fde-darwin.c: Likewise.
26229         * unwind-dw2-fde-glibc.c: Likewise.
26230         * unwind-dw2-fde.c: Likewise.
26231         * unwind-dw2-fde.h: Likewise.
26232         * unwind-dw2.c: Likewise.
26233         * unwind-dw2.h: Likewise.
26234         * unwind-generic.h: Likewise.
26235         * unwind-pe.h: Likewise.
26236         * unwind-sjlj.c: Likewise.
26237         * unwind.inc: Likewise.
26238         * config/arm/neon-gen.ml: Change generated copyright header to
26239         refer to version 3 of the GNU General Public License with
26240         version 3.1 of the GCC Runtime Library Exception and to point
26241         readers at the COPYING3 and COPYING3.RUNTIME files and the
26242         FSF's license web page.
26243         * config/arm/arm_neon.h: Regenerate.
26244
26245 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
26246
26247         * config/cris/cris.md: Change copyright header to refer to version
26248         3 of the GNU General Public License.
26249         * doc/install.texi2html: Change copyright header to refer to version
26250         3 of the GNU General Public License and to point readers at the
26251         COPYING3 file and the FSF's license web page.
26252         * config/vax/linux.h: Likewise.
26253
26254 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
26255
26256         * config/i386/i386.md (cmpcc): New.
26257         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
26258         (sync_compare_and_swap_cc*): Delete.
26259
26260         * config/s390/s390.c (s390_compare_emitted): Remove.
26261         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
26262         s390_compare_emitted used to be handled.  Assert that modes match.
26263         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
26264         refer to sync_compare_and_swap_ccsi.
26265         * config/s390/s390.h (s390_compare_emitted): Remove.
26266         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
26267         instead of s390_compare_emitted.
26268         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
26269         instead of s390_compare_emitted.
26270         * config/s390/s390.md (cmpcc): New.
26271         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
26272         CC_REGNUM, do not pretend it's set.
26273         (sync_compare_and_swap_cc*): Delete.
26274         * config/s390/predicates.md (cc_reg_operand): New.
26275
26276         * expr.c (sync_compare_and_swap_cc): Delete.
26277         * optabs.h (sync_compare_and_swap_cc): Delete.
26278         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
26279         is being used with can_compare_p.
26280         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
26281         (find_cc_set): New.
26282         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
26283         look for a MODE_CC set instead.  Use emit_store_flag.
26284         (expand_compare_and_swap_loop): Likewise, with some additional
26285         complication to avoid a force_reg when useless.  Use
26286         emit_cmp_and_jump_insns.
26287         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
26288         * doc/md.texi (sync_compare_and_swap_cc): Merge with
26289         sync_compare_and_swap documentation.
26290
26291 2009-04-09  Jan Hubicka  <jh@suse.cz>
26292
26293         * except.c (find_prev_try): Break out from ....
26294         (duplicate_eh_regions): ... here; properly update prev_try pointers
26295         when duplication part of tree.
26296         (dump_eh_tree): Improve dumping.
26297         (verify_eh_region): New.
26298         (verify_eh_tree): Use it.
26299
26300 2009-04-06  Richard Guenther  <rguenther@suse.de>
26301
26302         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
26303         &ARRAY addresses by adjusting their types and prepending
26304         a conversion.
26305         * tree-cfg.c (verify_gimple_assign_single): Verify that
26306         addresses are correct.
26307
26308 2009-04-09  Richard Guenther  <rguenther@suse.de>
26309
26310         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
26311         indices into an array reference if possible.
26312         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26313         Fold POINTER_PLUS_EXPR statements with invariant address.
26314
26315 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
26316
26317         PR target/39634
26318         * config.gcc (powerpc64-*-linux*): Always build biarch.
26319
26320 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
26321
26322         PR c/39613
26323         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
26324         it and pedwarn if this results in an INTEGER_CST.
26325
26326 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26327
26328         * doc/install.texi: Update minimum GMP version.  Remove obsolete
26329         text in MPFR section.
26330
26331 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
26332
26333         * dwarf2out.c (class_scope_p): New static inline.
26334         (class_or_namespace_scope_p): Use it.
26335         (gen_variable_die): Use DW_TAG_member tag for static data member
26336         declarations instead of DW_TAG_variable.
26337
26338         PR middle-end/39573
26339         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
26340         variables.
26341
26342 2009-04-08  Richard Guenther  <rguenther@suse.de>
26343
26344         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
26345         valueize random data.
26346
26347 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
26348
26349         * config.gcc (aix tm_file):  Add aix-stdint.h.
26350         (aix tm clause use_gcc_stdint):  Set to wrap.
26351         * config/rs6000/aix-stdint.h:  New file.
26352
26353 2009-04-08  Richard Guenther  <rguenther@suse.de>
26354
26355         PR middle-end/36291
26356         * tree-dfa.c (add_referenced_var): Do not recurse into
26357         global initializers.
26358         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
26359         exposed variables.
26360         (fold_const_aggregate_ref): Likewise.
26361
26362 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26363
26364         * recog.c (ordered_comparison_operator): New.
26365         * gensupport.c (std_preds): Add it.
26366         * doc/md.texi (Machine-Independent Predicates): Document it.
26367
26368 2009-04-08  Jan Hubicka  <jh@suse.cz>
26369
26370         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
26371         * function.h (rtl_eh): Remove exception_handler_label_map.
26372         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
26373         remove_exception_handler_label, for_each_eh_label_1): Remove.
26374         (rtl_remove_unreachable_regions): Remove.
26375         (convert_from_eh_region_ranges): Do not remove unreachable regions.
26376         (find_exception_handler_labels): Don't build the hashtable.
26377         (maybe_remove_eh_handler): Remove.
26378         (for_each_eh_label): Rewrite to walk the tree.
26379         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
26380         * except.h (maybe_remove_eh_handler): Remove.
26381         * passes.c (init_optimization_passes): Schedule second EH cleanup
26382         before out-of-ssa.
26383         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
26384         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
26385
26386 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
26387
26388         * genoutput.c (validate_optab_operands): New.
26389         (gen_insn, gen_expand): Call it.
26390
26391         * genflags.c (gen_insn): Detect misused iterators.
26392         (main): Pass line_no to gen_insn, exit with status 1 on error.
26393
26394         * genextract.c (line_no): Make global.
26395         (VEC_safe_set_locstr): Change assertion to error message.
26396         (main): Exit with status 1 on error.
26397
26398 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
26399
26400         PR c/39614
26401         PR c/39673
26402         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
26403         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
26404         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
26405         * c-convert.c (convert): Do not call fold on results of conversion
26406         functions when the result is a C_MAYBE_CONST_EXPR.
26407         * c-parser.c (c_parser_postfix_expression): Do not fold condition
26408         of __builtin_choose_expr.
26409         * c-typeck.c (remove_c_maybe_const_expr): New.
26410         (build_unary_op, build_conditional_expr, build_compound_expr,
26411         build_binary_op, c_objc_common_truthvalue_conversion): Call
26412         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
26413         integer operands.
26414
26415 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
26416
26417         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
26418         CODE to produce a new one. Add a prototype to use fold_convert_const
26419
26420 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
26421
26422         PR bootstrap/39660
26423         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
26424         mix declarations and code.
26425
26426 2009-04-08  Ben Elliston  <bje@au.ibm.com>
26427
26428         * gcc.c: Replace `CC' with `GCC' throughout.
26429
26430 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
26431
26432         * doc/invoke.texi: Document Atom support.
26433
26434 2009-04-07  Jason Merrill  <jason@redhat.com>
26435
26436         PR c++/25185
26437         * c-common.h, c-common.c: Add flag_pretty_templates.
26438         * c-opts.c (c_common_handle_option): Set it.
26439         * c.opt: Add -fno-pretty-templates.
26440         * doc/invoke.texi (C++ Dialect Options): Likewise.
26441
26442 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
26443
26444         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
26445         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
26446         (ia64_expand_builtin): Likewise.
26447
26448 2009-04-07  Martin Jambor  <mjambor@suse.cz>
26449
26450         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
26451         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
26452         ADDR_EXPRS are include too.
26453
26454 2009-04-07  Richard Guenther  <rguenther@suse.de>
26455
26456         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
26457         decls are only used if passes as parameters or if they are
26458         local statics and the call is not to a builtin.
26459         (call_may_clobber_ref_p_1): Likewise.
26460
26461 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26462
26463         * expr.c (do_store_flag): Remove last argument.  Simplify code
26464         to avoid duplication of tests already done by can_compare_p.
26465         (expand_expr_real_1): Adjust caller.
26466
26467 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26468
26469         * optabs.c (can_compare_p): Test the predicate of a
26470         cbranch and cstore pattern.
26471
26472 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26473
26474         * expr.c (convert_move): Use emit_store_flag instead of
26475         "emulating" it.
26476
26477 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
26478
26479         * config/i386/i386.c (ix86_compare_emitted): Remove.
26480         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
26481         ix86_compare_op0 like ix86_compare_emitted used to be handled.
26482         * config/i386/i386.h (ix86_compare_emitted): Remove.
26483         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
26484         instead of ix86_compare_emitted.
26485         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
26486
26487 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
26488
26489         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
26490         Add t-sysroot-suffix to tmake_file.
26491         * config/print-sysroot-suffix.sh: New file.
26492         * config/t-sysroot-suffix: New file.
26493
26494 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26495
26496         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
26497         as the latter produces a warning when the target does not support
26498         infinity.
26499
26500 2009-04-07  Ben Elliston  <bje@au.ibm.com>
26501
26502         * dfp.c: Replace type punning assignments with memcpy throughout.
26503         * Makefile.in (dfp.o-warn): Remove.
26504
26505 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
26506
26507         PR target/39634
26508         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
26509         Include soft-fp/t-softfp after rs6000/t-linux64.
26510
26511 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
26512
26513         * stor-layout.c (set_sizetype): Use the full precision of their
26514         machine mode for bitsize types.
26515
26516 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
26517
26518         * config/i386/i386.md: Revert 2 accidental checkins.
26519
26520 2009-04-06  Joey Ye  <joey.ye@intel.com>
26521             Xuepeng Guo  <xuepeng.guo@intel.com>
26522             H.J. Lu  <hongjiu.lu@intel.com>
26523
26524         Atom pipeline model, tuning and insn selection.
26525         * config.gcc (atom): Add atom config options and target.
26526
26527         * config/i386/atom.md: New.
26528
26529         * config/i386/i386.c (atom_cost): New cost.
26530         (m_ATOM): New macro flag.
26531         (initial_ix86_tune_features): Set m_ATOM.
26532         (x86_accumulate_outgoing_args): Likewise.
26533         (x86_arch_always_fancy_math_387): Likewise.
26534         (processor_target): Add Atom cost.
26535         (cpu_names): Add Atom cpu name.
26536         (override_options): Set Atom ISA.
26537         (ix86_issue_rate): New case PROCESSOR_ATOM.
26538         (ix86_adjust_cost): Likewise.
26539
26540         * config/i386/i386.h (TARGET_ATOM): New target macro.
26541         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
26542         (TARGET_OPT_AGU): New target option.
26543         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
26544         (processor_type): Add PROCESSOR_ATOM.
26545
26546         * config/i386/i386.md (cpu): Add new value "atom".
26547         (use_carry, movu): New attr.
26548         (atom.md): Include atom.md.
26549         (adddi3_carry_rex64): Set attr "use_carry".
26550         (addqi3_carry): Likewise.
26551         (addhi3_carry): Likewise.
26552         (addsi3_carry): Likewise.
26553         (*addsi3_carry_zext): Likewise.
26554         (subdi3_carry_rex64): Likewise.
26555         (subqi3_carry): Likewise.
26556         (subhi3_carry): Likewise.
26557         (subsi3_carry): Likewise.
26558         (x86_movdicc_0_m1_rex64): Likewise.
26559         (*x86_movdicc_0_m1_se): Likewise.
26560         (x86_movsicc_0_m1): Likewise.
26561         (*x86_movsicc_0_m1_se): Likewise.
26562         (*adddi_1_rex64): Emit add insn as much as possible.
26563         (*addsi_1): Likewise.
26564         (return_internal): Set atom_unit.
26565         (return_internal_long): Likewise.
26566         (return_pop_internal): Likewise.
26567         (*rcpsf2_sse): Set atom_sse_attr attr.
26568         (*qrt<mode>2_sse): Likewise.
26569         (*prefetch_sse): Likewise.
26570
26571         * config/i386/i386-c.c (ix86_target_macros_internal): New case
26572         PROCESSOR_ATOM.
26573         (ix86_target_macros_internal): Likewise.
26574
26575         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
26576         (*prefetch_sse_rex): Likewise.
26577         (sse_rcpv4sf2): Likewise.
26578         (sse_vmrcpv4sf2): Likewise.
26579         (sse_sqrtv4sf2): Likewise.
26580         (<sse>_vmsqrt<mode>2): Likewise.
26581         (sse_ldmxcsr): Likewise.
26582         (sse_stmxcsr): Likewise.
26583         (*sse_sfence): Likewise.
26584         (sse2_clflush): Likewise.
26585         (*sse2_mfence): Likewise.
26586         (*sse2_lfence): Likewise.
26587         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
26588         (<sse>_movup<ssemodesuffixf2c>): Likewise.
26589         (avx_movdqu<avxmodesuffix>): Likewise.
26590         (avx_lddqu<avxmodesuffix>): Likewise.
26591         (sse2_movntv2di): Change attr "type" to "ssemov".
26592         (sse2_movntsi): Likewise.
26593         (rsqrtv8sf2): Change attr "type" to "sseadd".
26594         (sse3_addsubv2df3): Set attr "atom_unit".
26595         (sse3_h<plusminus_insn>v4sf3): Likewise.
26596         (*sse2_pmaddwd): Likewise.
26597         (*vec_extractv2di_1_rex64): Likewise.
26598         (*vec_extractv2di_1_avx): Likewise.
26599         (sse2_psadbw): Likewise.
26600         (ssse3_phaddwv8hi3): Likewise.
26601         (ssse3_phaddwv4hi3): Likewise.
26602         (ssse3_phadddv4si3): Likewise.
26603         (ssse3_phadddv2si3): Likewise.
26604         (ssse3_phaddswv8hi3): Likewise.
26605         (ssse3_phaddswv4hi3): Likewise.
26606         (ssse3_phsubwv8hi3): Likewise.
26607         (ssse3_phsubwv4hi3): Likewise.
26608         (ssse3_phsubdv4si3): Likewise.
26609         (ssse3_phsubdv2si3): Likewise.
26610         (ssse3_phsubswv8hi3): Likewise.
26611         (ssse3_phsubswv4hi3): Likewise.
26612         (ssse3_pmaddubsw128): Likewise.
26613         (sse3_pmaddubsw: Likewise.
26614         (ssse3_palignrti): Likewise.
26615         (ssse3_palignrdi): Likewise.
26616
26617 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
26618
26619         * doc/install.texi (Specific): Fix two cross-references to MinGW.
26620
26621 2009-04-06  Richard Guenther  <rguenther@suse.de>
26622
26623         PR tree-optimization/28868
26624         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
26625         of which PHI results we inserted.
26626         (insert_into_preds_of_block): Record inserted PHIs.
26627         (eliminate): Eliminate redundant PHI nodes.
26628         (init_pre): Init inserted_phi_names.
26629
26630 2009-04-06  Richard Guenther  <rguenther@suse.de>
26631
26632         PR tree-optimization/39643
26633         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
26634         IMAGPART_EXPRs of complex constants.
26635         (execute_fold_all_builtins): If we folded a call queue
26636         TODO_update_address_taken.
26637
26638 2009-04-06  Jan Hubicka  <jh@suse.cz>
26639
26640         PR middle-end/39659
26641         * except.c (remove_unreachable_regions): Propagate may_contain_throw
26642         flag.
26643
26644 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
26645
26646         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
26647         delay slot.
26648         (ic_invalidate_array): Likewise.
26649
26650 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
26651
26652         * calls.c (emit_library_call_value_1): Fix a problem with parameter
26653         alignment for library calls.
26654
26655 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
26656
26657         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
26658         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
26659         * config/i386/mingw-stdint.h:  New file.
26660
26661 2009-04-05  Richard Guenther  <rguenther@suse.de>
26662
26663         PR tree-optimization/39648
26664         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
26665         our &A vs. &A[0] IL deficiencies.
26666
26667 2009-04-04  Jan Hubicka  <jh@suse.cz>
26668
26669         * except.c (sjlj_find_directly_reachable_regions): Be ready for
26670         removed toplevel regions.
26671         (sjlj_mark_call_sites): Likewise.
26672
26673 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
26674
26675         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
26676         (cygwin tm clause use_gcc_stdint):  Set to wrap.
26677         * config/i386/cygwin-stdint.h:  New file.
26678
26679 2009-04-04  Richard Guenther  <rguenther@suse.de>
26680
26681         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
26682         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
26683         single-argument PHIs if we are in loop-closed SSA form.
26684         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
26685         for the pre-condition.
26686         (slpeel_tree_peel_loop_to_edge): Likewise.
26687         (vect_build_loop_niters): Take an optional sequence to append stmts.
26688         (vect_generate_tmps_on_preheader): Likewise.
26689         (vect_do_peeling_for_loop_bound): Take extra guards for the
26690         pre-condition.
26691         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
26692         the cost model check.
26693         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
26694         guards if we are going to peel.  Do not apply versioning in that case.
26695         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
26696         (vect_do_peeling_for_loop_bound): Likewise.
26697         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
26698         loop bound only record extra pre-conditions, do not apply loop
26699         versioning.
26700
26701 2009-04-04  Richard Guenther  <rguenther@suse.de>
26702
26703         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
26704         renaming code.
26705
26706 2009-04-04  Jan Hubicka  <jh@suse.cz>
26707
26708         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
26709         last_basic_block for size of bb->index indexed array.
26710         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
26711         compute_out, link_btr_uses, build_btr_def_use_webs,
26712         build_btr_def_use_webs, migrate_btr_defs): Likewise.
26713
26714 2009-04-04  Jan Hubicka  <jh@suse.cz>
26715
26716         * except.c (remove_eh_handler_and_replace): Break out from ...
26717         (remove_eh_handler): ... here.
26718         (bring_to_root): New function.
26719         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
26720         handled ones, bring others to root of tree.
26721
26722 2009-04-04  Jan Hubicka  <jh@suse.cz>
26723
26724         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
26725         (all_phis_safe_to_merge): New function.
26726         (update_info): New structure.
26727         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
26728         (cleanup_empty_eh): Update SSA if possible.
26729
26730 2009-04-04  Richard Guenther  <rguenther@suse.de>
26731
26732         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
26733         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
26734         (append_vuse): Likewise.
26735
26736 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
26737
26738         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
26739         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
26740         instead of REG_UNSAVED for DW_CFA_undefined.
26741         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
26742         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
26743         outermost frame.
26744
26745 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
26746
26747         PR target/39501
26748         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
26749
26750 2009-04-04  Richard Guenther  <rguenther@suse.de>
26751
26752         PR tree-optimization/8781
26753         PR tree-optimization/37892
26754         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
26755         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
26756         (valueize_refs): Call it for *& valueizations.
26757         (shared_reference_ops_from_ref): Rename to ...
26758         (valueize_shared_reference_ops_from_ref): ... this and valueize.
26759         (shared_reference_ops_from_call): Rename to ...
26760         (valueize_shared_reference_ops_from_call): ... this and valueize.
26761         (vn_reference_lookup): Update.
26762         (visit_reference_op_call): Likewise.
26763         * tree-ssa-pre.c (phi_translate_1): Fold *&.
26764         (eliminate): Value-replace the call address in call statements.
26765
26766 2009-04-04  Richard Guenther  <rguenther@suse.de>
26767
26768         PR tree-optimization/39636
26769         * tree-ssa-forwprop.c
26770         (forward_propagate_addr_into_variable_array_index): Check for
26771         GIMPLE_ASSIGN before accessing the rhs code.
26772
26773 2009-04-03  Jason Merrill  <jason@redhat.com>
26774
26775         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
26776
26777 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
26778
26779         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
26780         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
26781         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
26782         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
26783         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
26784         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
26785         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
26786         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
26787         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
26788         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
26789         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
26790         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
26791         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
26792         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
26793         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
26794         Use fr_reg_or_fp01_operand instead of fr_register_operand
26795
26796         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
26797         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
26798         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
26799
26800 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
26801
26802         PR rtl-optimization/39607
26803         PR rtl-optimization/39631
26804
26805         Revert:
26806
26807         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
26808         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
26809         instead of DF_LR_OUT.
26810         * ira-lives.c (process_bb_node_lives): Ditto.
26811         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
26812         instead of DF_LR_{OUT,IN}.
26813         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
26814         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
26815
26816 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
26817
26818         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
26819         (execute_lower_omp): Always run but take the short way out if -fopenmp
26820         is not given.
26821         (gate_lower_omp): Remove, forcing the pass manager to always run the
26822         pass and always set PROP_gimple_lomp.
26823         (pass_lower_omp): Remove gate function.
26824         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
26825         PROP_trees.  Instead, require it.
26826         * ipa-cp.c (pass_ipa_cp): Likewise.
26827         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
26828         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
26829         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
26830         and PROP_gimple_leh.
26831
26832 2009-04-03  Richard Guenther  <rguenther@suse.de>
26833
26834         PR middle-end/13146
26835         PR tree-optimization/23940
26836         PR tree-optimization/33237
26837         PR middle-end/33974
26838         PR middle-end/34093
26839         PR tree-optimization/36201
26840         PR tree-optimization/36230
26841         PR tree-optimization/38049
26842         PR tree-optimization/38207
26843         PR tree-optimization/38230
26844         PR tree-optimization/38301
26845         PR tree-optimization/38585
26846         PR middle-end/38895
26847         PR tree-optimization/38985
26848         PR tree-optimization/39299
26849         * tree-ssa-structalias.h: Remove.
26850         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
26851         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
26852         (struct vuse_element_d): Remove.
26853         (struct vuse_vec_d): Likewise.
26854         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
26855         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
26856         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
26857         VUSE_ELEMENT_VAR): Likewise.
26858         (struct voptype_d): Likewise.
26859         (NUM_VOP_FREE_BUCKETS): Likewise.
26860         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
26861         (struct stmt_operands_d): Remove.
26862         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
26863         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
26864         VDEF_NUM, VDEF_VECT): Likewise.
26865         (copy_virtual_operands): Remove.
26866         (operand_build_cmp): Likewise.
26867         (create_ssa_artificial_load_stmt): Likewise.
26868         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
26869         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
26870         vuse_index and mayuse_index members.  Pack and move done and iter_type
26871         members to the front.
26872         (SSA_OP_VMAYUSE): Remove.
26873         (SSA_OP_VIRTUAL_USES): Adjust.
26874         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
26875         (unlink_stmt_vdef): Declare.
26876         (add_to_addressable_set): Remove.
26877         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
26878         (vrp_visit_stmt): Likewise.
26879         * doc/tree-ssa.texi (Alias analysis): Update.
26880         * doc/invoke.texi (max-aliased-vops): Remove docs.
26881         (avg-aliased-vops): Likewise.
26882         * tree-into-ssa.c (syms_to_rename): Remove.
26883         (need_to_update_vops_p): Likewise.
26884         (need_to_initialize_update_ssa_p): Rename to ...
26885         (update_ssa_initialized_fn): ... this.  Track function we are
26886         initialized for.
26887         (symbol_marked_for_renaming): Simplify.
26888         (add_new_name_mapping): Do not set need_to_update_vops_p.
26889         (dump_currdefs): Use SYMS_TO_RENAME.
26890         (rewrite_update_stmt): Always walk all uses/defs.
26891         (dump_update_ssa): Adjust.
26892         (init_update_ssa): Take function argument.  Track what we are
26893         initialized for.
26894         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
26895         (create_new_def_for): Initialize for cfun, assert we are initialized
26896         for cfun.
26897         (mark_sym_for_renaming): Simplify.
26898         (mark_set_for_renaming): Do not initialize update-ssa.
26899         (need_ssa_update_p): Simplify.  Take function argument.
26900         (name_mappings_registered_p): Assert we ask for the correct function.
26901         (name_registered_for_update_p): Likewise.
26902         (ssa_names_to_replace): Likewise.
26903         (release_ssa_name_after_update_ssa): Likewise.
26904         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
26905         (dump_decl_set): Do not print a newline.
26906         (debug_decl_set): Do it here.
26907         (dump_update_ssa): And here.
26908         * tree-ssa-loop-im.c (move_computations): Adjust.
26909         (movement_possibility): Likewise.
26910         (determine_max_movement): Likewise.
26911         (gather_mem_refs_stmt): Likewise.
26912         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
26913         or NAME_MEMORY_TAG.
26914         * tree-complex.c (update_all_vops): Remove.
26915         (expand_complex_move): Adjust.
26916         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
26917         Simplify test for memory referencing statement.  Exclude
26918         non-invariant ADDR_EXPRs.
26919         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
26920         * tree-loop-distribution.c (generate_memset_zero): Adjust.
26921         (rdg_flag_uses): Likewise.
26922         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
26923         related code.
26924         (tree_optimize_tail_calls_1): Also split the
26925         edge from the entry block if we have degenerate PHI nodes in
26926         the first basic block.
26927         * tree.c (init_ttree): Remove memory-tag related code.
26928         (tree_code_size): Likewise.
26929         (tree_node_structure): Likewise.
26930         (build7_stat): Re-write to be build6_stat.
26931         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
26932         (SSA_VAR_P): Adjust.
26933         (struct tree_memory_tag): Remove.
26934         (struct tree_memory_partition_tag): Likewise.
26935         (union tree_node): Adjust.
26936         (build7): Re-write to be build6.
26937         * tree-pass.h (pass_reset_cc_flags): Remove.
26938         (TODO_update_address_taken): New flag.
26939         (pass_simple_dse): Remove.
26940         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
26941         * params.h (MAX_ALIASED_VOPS): Remove.
26942         (AVG_ALIASED_VOPS): Likewise.
26943         * omp-low.c (expand_omp_taskreg): Update SSA form.
26944         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
26945         aliases the lhs in a copy stmt.
26946         * tree-ssa-dse.c (struct address_walk_data): Remove.
26947         (memory_ssa_name_same): Likewise.
26948         (memory_address_same): Likewise.
26949         (get_kill_of_stmt_lhs): Likewise.
26950         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
26951         unused stores.  Look through PHI nodes into post-dominated regions.
26952         (dse_optimize_stmt): Simplify.  Properly remove stores.
26953         (tree_ssa_dse): Compute dominators.
26954         (execute_simple_dse): Remove.
26955         (pass_simple_dse): Likewise.
26956         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
26957         gimple_loaded_syms and gimple_stored_syms computation.
26958         * toplev.c (dump_memory_report): Dump alias and pta stats.
26959         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
26960         (vn_reference_eq): Likewise.
26961         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
26962         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
26963         valueize_vuses): Remove.
26964         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
26965         (get_def_ref_stmt_vuse): ... this.
26966         (vn_reference_lookup_2): New function.
26967         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
26968         walking equivalent vuses.  Simplify.
26969         (vn_reference_lookup): Likewise.
26970         (vn_reference_insert): Likewise.
26971         (vn_reference_insert_pieces): Likewise.
26972         (visit_reference_op_call): Simplify.
26973         (visit_reference_op_load): Likewise.
26974         (visit_reference_op_store): Likewise.
26975         (init_scc_vn): Remove shared_lookup_vuses initialization.
26976         (free_scc_vn): Remove shared_lookup_vuses freeing.
26977         (sort_vuses, sort_vuses_heap): Remove.
26978         (get_ref_from_reference_ops): Export.
26979         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
26980         vector with single vuse pointer.
26981         (vn_reference_lookup_pieces, vn_reference_lookup,
26982         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
26983         (shared_vuses_from_stmt): Remove.
26984         (get_ref_from_reference_ops): Declare.
26985         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
26986         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
26987         memory-tag related code.
26988         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
26989         (likely_value): Add comment, skip static-chain of call statements.
26990         (surely_varying_stmt_p): Adjust.
26991         (gimplify_and_update_call_from_tree): Likewise.
26992         (execute_fold_all_builtins): Do not rebuild alias info.
26993         (gimplify_and_update_call_from_tree): Properly update VOPs.
26994         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
26995         (copy_ref_info): Remove memory-tag related code.
26996         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
26997         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
26998         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
26999         computation.
27000         * tree-ssa-dom.c (gimple_p): Remove typedef.
27001         (eliminate_redundant_computations): Adjust.
27002         (record_equivalences_from_stmt): Likewise.
27003         (avail_expr_hash): Likewise.
27004         (avail_expr_eq): Likewise.
27005         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
27006         (stmt_makes_single_load): Likewise.
27007         (stmt_makes_single_store): Likewise.
27008         * tree-ssa-alias.c: Rewrite completely.
27009         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
27010         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
27011         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
27012         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
27013         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
27014         Remove public functions.
27015         (pass_reset_cc_flags): Remove.
27016         (pass_build_alias): Move ...
27017         * tree-ssa-structalias.c (pass_build_alias): ... here.
27018         * tree-ssa-alias.c (may_be_aliased): Move ...
27019         * tree-flow-inline.h (may_be_aliased): ... here.
27020         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
27021         count_uses_and_derefs): Move ...
27022         * gimple.c: ... here.
27023         * gimple.h (count_uses_and_derefs): Declare.
27024         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
27025         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
27026         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
27027         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
27028         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
27029         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
27030         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
27031         New functions.
27032         * tree-dfa.c (refs_may_alias_p): Move ...
27033         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
27034         * tree-ssa-alias.h: New file.
27035         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
27036         (statement_sink_location): Likewise.
27037         * opts.c (decode_options): Do not adjust max-aliased-vops or
27038         avg-aliased-vops values.
27039         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
27040         (TV_CALL_CLOBBER): Likewise.
27041         (TV_FLOW_SENSITIVE): Likewise.
27042         (TV_FLOW_INSENSITIVE): Likewise.
27043         (TV_MEMORY_PARTITIONING): Likewise.
27044         (TV_ALIAS_STMT_WALK): New timevar.
27045         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
27046         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
27047         (get_address_description): Remove memory-tag related code.
27048         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
27049         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
27050         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
27051         and immediate uses in statements.  Document.
27052         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
27053         (dump_symbols): Remove.
27054         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
27055         * alias.c (get_deref_alias_set): New function split out from ...
27056         (get_alias_set): ... here.
27057         * alias.h (get_deref_alias_set): Declare.
27058         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
27059         type parameter.  Remove restrict pointer handling.  Create a
27060         ref-all pointer in case type-based alias sets do not conflict.
27061         (vect_analyze_data_refs): Remove SMT related code.
27062         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
27063         (vectorizable_load): Likewise.
27064         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
27065         (DR_SYMBOL_TAG, DR_VOPS): Remove.
27066         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
27067         Ignore vops and SMTs.
27068         (dr_analyze_alias): Likewise..
27069         (free_data_ref): Likewise.
27070         (create_data_ref): Likewise.
27071         (analyze_all_data_dependences): Likewise.
27072         (get_references_in_stmt): Adjust.
27073         * tree-flow-inline.h (gimple_aliases_computed_p,
27074         gimple_addressable_vars, gimple_call_clobbered_vars,
27075         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
27076         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
27077         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
27078         gimple_mem_ref_stats): Remove.
27079         (gimple_vop): New function.
27080         (op_iter_next_use): Remove vuses and mayuses cases.
27081         (op_iter_next_def): Remove vdefs case.
27082         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
27083         (clear_and_done_ssa_iter): Do not set removed fields.
27084         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
27085         Assert we are not iterating over vuses or vdefs if not also
27086         iterating over uses or defs.
27087         (op_iter_init_use): Likewise.
27088         (op_iter_init_def): Likewise.
27089         (op_iter_next_vdef): Remove.
27090         (op_iter_next_mustdef): Likewise.
27091         (op_iter_init_vdef): Likewise.
27092         (compare_ssa_operands_equal): Likewise.
27093         (link_use_stmts_after): Handle vuse operand.
27094         (is_call_used): Use is_call_clobbered.
27095         (is_call_clobbered): Global variables are always call clobbered,
27096         query the call-clobbers bitmap.
27097         (mark_call_clobbered): Ignore global variables.
27098         (clear_call_clobbered): Likewise.
27099         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
27100         virtual operands sanity check.
27101         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
27102         Remove.
27103         (TARGET_MEM_REF): Remove TMR_TAG operand.
27104         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
27105         Remove call-clobber related code.
27106         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
27107         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
27108         partitions or escape reason.
27109         (get_single_def_stmt, get_single_def_stmt_from_phi,
27110         get_single_def_stmt_with_phi): Remove.
27111         (dump_referenced_vars): Tidy.
27112         (get_ref_base_and_extent): Allow bare decls.
27113         (collect_dfa_stats): Adjust.
27114         * graphite.c (rename_variables_in_stmt): Adjust.
27115         (graphite_copy_stmts_from_block): Likewise.
27116         (translate_clast): Likewise.
27117         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
27118         (EXPR_DIES): New.
27119         (translate_vuse_through_block): Use the oracle.
27120         (phi_translate_1): Adjust.
27121         (value_dies_in_block_x): Use the oracle.  Cache the outcome
27122         in EXPR_DIES.
27123         (valid_in_sets): Check if the VUSE for
27124         a REFERENCE is available.
27125         (eliminate): Do not remove stmts during elimination,
27126         instead queue and remove them afterwards.
27127         (do_pre): Do not rebuild alias info.
27128         (pass_pre): Run TODO_rebuild_alias before PRE.
27129         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
27130         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
27131         (mark_all_v_defs_stmt): Remove.
27132         (mark_all_v_defs_seq): Adjust.
27133         (sra_replace): Likewise.
27134         (scalarize_use): Likewise.
27135         (scalarize_copy): Likewise.
27136         (scalarize_init): Likewise.
27137         (scalarize_ldst): Likewise.
27138         (todoflags): Remove.
27139         (tree_sra): Do not rebuild alias info.
27140         (tree_sra_early): Adjust.
27141         (pass_sra): Run TODO_update_address_taken before SRA.
27142         * tree-predcom.c (set_alias_info): Remove.
27143         (prepare_initializers_chain): Do not call it.
27144         (mark_virtual_ops_for_renaming): Adjust.
27145         (mark_virtual_ops_for_renaming_list): Remove.
27146         (initialize_root_vars): Adjust.
27147         (initialize_root_vars_lm): Likewise.
27148         (prepare_initializers_chain): Likewise.
27149         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
27150         (may_propagate_copy_into_stmt): Likewise.
27151         (merge_alias_info): Do nothing for now.
27152         (propagate_tree_value_into_stmt): Adjust.
27153         (stmt_may_generate_copy): Likewise.
27154         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
27155         not mark symbols for renaming.
27156         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
27157         with the same statement, make sure to update the new pointed-to one.
27158         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
27159         call statements, do not mark symbols for renaming.
27160         (mark_operand_necessary): Dump something.
27161         (ref_may_be_aliased): New function.
27162         (mark_aliased_reaching_defs_necessary_1): New helper function.
27163         (mark_aliased_reaching_defs_necessary): Likewise.
27164         (mark_all_reaching_defs_necessary_1): Likewise.
27165         (mark_all_reaching_defs_necessary): Likewise.
27166         (propagate_necessity): Do not process virtual PHIs.  For
27167         non-aliased loads mark all reaching definitions as necessary.
27168         For aliased loads and stores mark the immediate dominating
27169         aliased clobbers as necessary.
27170         (visited): New global static.
27171         (perform_tree_ssa_dce): Free visited bitmap after propagating
27172         necessity.
27173         (remove_dead_phis): Perform simple dead virtual PHI removal.
27174         (remove_dead_stmt): Properly unlink virtual operands when
27175         removing stores.
27176         (eliminate_unnecessary_stmts): Schedule PHI removal after
27177         stmt removal.
27178         * tree-ssa-ter.c (is_replaceable_p): Adjust.
27179         (process_replaceable): Likewise.
27180         (find_replaceable_in_bb): Likewise.
27181         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
27182         based on the single gimple vop.
27183         (verify_flow_insensitive_alias_info): Remove.
27184         (verify_flow_sensitive_alias_info): Likewise.
27185         (verify_call_clobbering): Likewise.
27186         (verify_memory_partitions): Likewise.
27187         (verify_alias_info): Likewise.
27188         (verify_ssa): Adjust..
27189         (execute_update_addresses_taken): Export.  Update SSA
27190         manually.  Optimize only when optimizing.  Use a local bitmap.
27191         (pass_update_address_taken): Remove TODO_update_ssa, add
27192         TODO_dump_func.
27193         (pass_update_address_taken): Just use TODO_update_address_taken.
27194         (init_tree_ssa): Do not initialize addressable_vars.
27195         (verify_ssa): Verify new VUSE / VDEF properties.
27196         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
27197         Do not call verify_alias_info.
27198         (delete_tree_ssa): Clear the VUSE, VDEF operands.
27199         Do not free the loaded and stored syms bitmaps.  Reset the escaped
27200         and callused solutions.  Do not free addressable_vars.
27201         Remove memory-tag related code.
27202         (warn_uninitialized_var): Aliases are always available.
27203         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
27204         * lambda-code.c (can_put_in_inner_loop): Adjust.
27205         (can_put_after_inner_loop): Likewise.
27206         (perfect_nestify): Likewise.
27207         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
27208         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
27209         (vectorizable_conversion): Do not mark symbols for renaming.
27210         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
27211         (expand_call_inline): Unlink the calls virtual operands before
27212         replacing it.
27213         (tree_function_versioning): Do not call update_ssa if we are not
27214         updating clones.  Simplify.
27215         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
27216         (propagate_with_phi): Likewise..
27217         * tree-outof-ssa.c (create_temp): Remove memory tag and call
27218         clobber code.  Assert we are not aliased or global.
27219         * tree-flow.h: Include tree-ssa-alias.h
27220         (enum escape_type): Remove.
27221         (struct mem_sym_stats_d): Likewise.
27222         (struct mem_ref_stats_d): Likewise.
27223         (struct gimple_df): Add vop member.  Remove global_var,
27224         call_clobbered_vars, call_used_vars, addressable_vars,
27225         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
27226         escaped and callused members.
27227         (struct ptr_info_def): Remove all members, add points-to solution
27228         member pt.
27229         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
27230         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
27231         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
27232         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
27233         (tree-ssa-alias.o): Likewise.
27234         (toplev.o): Add tree-ssa-alias.h
27235         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
27236         * gimple.c (gimple_set_bb): Fix off-by-one error.
27237         (is_gimple_reg): Do not handle memory tags.
27238         (gimple_copy): Also copy virtual operands.
27239         Delay updating the statement.  Do not reset loaded and stored syms.
27240         (gimple_set_stored_syms): Remove.
27241         (gimple_set_loaded_syms): Likewise.
27242         (gimple_call_copy_skip_args): Copy the virtual operands
27243         and mark the new statement modified.
27244         * tree-ssa-structalias.c (may_alias_p): Remove.
27245         (set_uids_in_ptset): Take the alias set to prune with as
27246         parameter.  Fold in the alias test of may_alias_p.
27247         (compute_points_to_sets): Compute whether a ptr is dereferenced
27248         in a local sbitmap.
27249         (process_constraint): Deal with &ANYTHING on the lhs, reject all
27250         other ADDRESSOF constraints on the lhs.
27251         (get_constraint_for_component_ref): Assert that we don't get
27252         ADDRESSOF constraints from the base of the reference.
27253         Properly generate UNKNOWN_OFFSET for DEREF if needed.
27254         (struct variable_info): Remove collapsed_to member.
27255         (get_varinfo_fc): Remove.
27256         (new_var_info): Do not set collapsed_to.
27257         (dump_constraint): Do not follow cycles.
27258         (dump_constraint_graph): Likewise.
27259         (build_pred_graph): Likewise.
27260         (build_succ_graph): Likewise.
27261         (rewrite_constraints): Likewise.
27262         (do_simple_structure_copy): Remove.
27263         (do_rhs_deref_structure_copy): Remove.
27264         (do_lhs_deref_structure_copy): Remove.
27265         (collapse_rest_of_var): Remove.
27266         (do_structure_copy): Re-implement.
27267         (pta_stats): New global variable.
27268         (dump_pta_stats): New function.
27269         (struct constraint_expr): Make offset signed.
27270         (UNKNOWN_OFFSET): Define special value.
27271         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
27272         (solution_set_expand): New helper function split out from ...
27273         (do_sd_constraint): ... here.
27274         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
27275         (do_ds_constraint): Likewise.
27276         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
27277         and CALLUSED = *CALLUSED.
27278         (set_union_with_increment): Make inc argument signed.
27279         (type_safe): Remove.
27280         (get_constraint_for_ptr_offset): Handle unknown and negative
27281         constant offsets.
27282         (first_vi_for_offset): Handle offsets before start.  Bail
27283         out early for offsets beyond the variable extent.
27284         (first_or_preceding_vi_for_offset): New function.
27285         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
27286         Together with ESCAPED = *ESCAPED this properly computes reachability.
27287         (find_what_var_points_to): New function.
27288         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
27289         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
27290         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
27291         pt_solutions_intersect): New functions.
27292         (compute_call_used_vars): Remove.
27293         (compute_may_aliases): New main entry into PTA computation.
27294         * gimple.h (gimple_p): New typedef.
27295         (struct gimple_statement_base): Remove references_memory_p.
27296         (struct gimple_statement_with_memory_ops_base): Remove
27297         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
27298         members.
27299         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
27300         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
27301         gimple_set_references_memory): Remove.
27302         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
27303         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
27304         New functions.
27305         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
27306         (verify_expr): Allow RESULT_DECL.
27307         (gimple_duplicate_bb): Do not copy virtual operands.
27308         (gimple_duplicate_sese_region): Adjust.
27309         (gimple_duplicate_sese_tail): Likewise.
27310         (mark_virtual_ops_in_region): Remove.
27311         (move_sese_region_to_fn): Do not call it.
27312         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
27313         and pass_simple_dse.
27314         (execute_function_todo): Handle TODO_update_address_taken,
27315         call execute_update_addresses_taken for TODO_rebuild_alias.
27316         (execute_todo): Adjust.
27317         (execute_one_pass): Init dump files early.
27318         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
27319         call-clobbered.
27320         (create_general_new_stmt): Clear vops.
27321         * tree-ssa-reassoc.c (get_rank): Adjust.
27322         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
27323         symbols for renaming.
27324         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
27325         (PARAM_AVG_ALIASED_VOPS): Likewise.
27326         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
27327         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
27328         * tree-ssa-operands.c: Simplify for new virtual operand representation.
27329         (operand_build_cmp, copy_virtual_operands,
27330         create_ssa_artificial_load_stmt, add_to_addressable_set,
27331         gimple_add_to_addresses_taken): Remove public functions.
27332         (unlink_stmt_vdef): New function.
27333
27334 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27335
27336         * config.gcc (powerpc-*-linux*): Merge variants.
27337
27338 2009-04-02  Chao-ying Fu  <fu@mips.com>
27339             James Grosbach  <james.grosbach@microchip.com>
27340
27341         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
27342         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
27343         cop0_sp_offset.
27344         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
27345         keep_interrupts_masked_p, use_debug_exception_return_p.
27346         (mips_attribute_table): Add interrupt, use_shadow_register_set,
27347         keep_interrupts_masked, use_debug_exception_return.
27348         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
27349         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
27350         New functions.
27351         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
27352         (mips_print_operand): Process COP0 registers to print $0 .. $31
27353         correctly for GAS to process.
27354         (mips_interrupt_extra_call_saved_reg_p): New function.
27355         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
27356         extra registers.
27357         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
27358         (mips_compute_frame_info): Add supports for interrupt context that
27359         includes doubleword accumulators and COP0 registers.
27360         (mips_for_each_saved_acc): New function.
27361         (mips_for_each_saved_gpr_and_fpr): Change the function name from
27362         mips_for_each_saved_reg.
27363         (mips_save_reg): Save accumulators.
27364         (mips_kernel_reg_p): A new for_each_rtx callback.
27365         (mips_expand_prologue): Support interrupt handlers.
27366         (mips_restore_reg): Restore accumulators.
27367         (mips_expand_epilogue): Support interrupt handlers.
27368         (mips_can_use_return_insn): Return false for interrupt handlers.
27369         (mips_epilogue_uses): New function.
27370         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
27371         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
27372         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
27373         cop0_move): New instructions.
27374         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
27375         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
27376         defines.
27377         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
27378         New defines.
27379         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
27380         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
27381         interrupt handlers, we use K0 as the temporary register.
27382         (EPILOGUE_USES): Change to a function call.
27383         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
27384         handlers, we use K0 as the temporary register.
27385
27386         * doc/extend.texi (Function Attributes): Document interrupt,
27387         use_shadow_register_set, keep_interrupts_masked,
27388         use_debug_exception_return for MIPS attributes.
27389
27390 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
27391
27392         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
27393         Remove a number of t-files from tmake_file.
27394         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
27395         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
27396         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
27397         target_prototype, not TARGET_PROTOTYPE.
27398         (LINK_OS_GNU_SPEC): Define.
27399         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
27400         and darwin-ldoubdle.c.
27401
27402 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
27403
27404         PR driver/39293
27405         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
27406         (cpp_options): Ditto.
27407         (default_compilers): Ditto.
27408         (display_help): Ditto.
27409         (process_command): Ditto.
27410         (do_spec_1): Ditto.
27411         (set_input): Use lbasename instead of duplicate code.
27412         (save_temps_prefix): New static for -save-temps=obj.
27413         (save_temps_length): Ditto.
27414
27415         * doc/invoke.texi (-save-temps=obj): Document new variant to
27416         -save-temps switch.
27417
27418 2009-04-02  Jeff Law  <law@redhat.com>
27419
27420         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
27421         variable.
27422
27423 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27424
27425         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
27426         * configure: Regenerated.
27427
27428 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27429
27430         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
27431         share the argument list.
27432
27433 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27434
27435         Merge
27436
27437         2009-02-12  Diego Novillo  <dnovillo@google.com>
27438
27439         * varpool.c (debug_varpool): New.
27440         * cgraph.h (debug_varpool): Declare.
27441
27442 2009-04-02  Jan Hubicka  <jh@suse.cz>
27443
27444         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
27445         pass.
27446
27447 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
27448
27449         * config/i386/i386.c (ix86_abi): Move initialization to ...
27450         (override_options): Here.
27451
27452 2009-04-02  Christian Bruel  <christian.bruel@st.com>
27453
27454         * config/sh/sh.c (sh_dwarf_register_span): New function.
27455         (TARGET_DWARF_REGISTER_SPAN): Define.
27456         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
27457
27458 2009-04-02  Ira Rosen  <irar@il.ibm.com>
27459
27460         PR tree-optimization/39595
27461         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
27462         interleaved loads group is not  greater than the SLP group size.
27463
27464 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
27465
27466         * builtins.c (is_builtin_name): New.
27467         (called_as_built_in): Use is_builtin_name.
27468         * tree.h (is_builtin_name): New.
27469         * varasm.c (incorporeal_function_p): Use is_builtin_name
27470
27471 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
27472
27473         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
27474
27475 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
27476
27477         PR c++/26693
27478         * c-decl.c (clone_underlying_type): Move this ...
27479         * c-common.c (set_underlying_type): ... here.
27480         Also, make sure the function properly sets TYPE_STUB_DECL() on
27481         the newly created typedef variant type.
27482         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
27483         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
27484         points.
27485
27486 2009-04-02  Richard Guenther  <rguenther@suse.de>
27487
27488         PR tree-optimization/37221
27489         * tree-flow.h (degenerate_phi_result): Declare.
27490         * tree-ssa-dom.c (degenerate_phi_result): Export.
27491         * tree-scalar-evolution.c (analyze_initial_condition): If
27492         the initial condition is defined by a degenerate PHI node
27493         use the degenerate value.
27494
27495 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
27496
27497         PR rtl-optimization/39588
27498         * combine.c (merge_outer_ops): Do not set the constant when this
27499         is not necessary.
27500         (simplify_shift_const_1): Do not modify it either in this case.
27501
27502 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
27503
27504         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
27505         tuning is deprecated if -mtune value is set to an Itanium1 variant.
27506
27507 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
27508
27509         PR c/29027
27510         * c-lex.c (interpret_float): Default (no suffix) is double.
27511
27512 2009-04-1  Xinliang David Li  <davidxl@google.com>
27513
27514         * config/i386/i386.c (legitimate_constant_p): Recognize
27515         all one vector constant.
27516
27517 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27518
27519         * config/vax/vax.c: Add #includes to silence warnings.
27520         Change #include order to silence two warnings.
27521
27522 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27523
27524         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
27525         (ASM_SPEC): Pass -k to the assembler for PIC code.
27526
27527 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27528
27529         * config.gcc: Add vax-*-linux* to the switch.
27530         * config/vax/linux.h: New file. (TARGET_VERSION,
27531         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
27532
27533 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27534
27535         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
27536         Use predicate macros instead of GET_CODE() == foo.
27537         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
27538         ashlsi3, rotrsi3, <unnamed>): Likewise.
27539
27540 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27541
27542         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
27543         jbbccihi, jbbccisi): Remova trailing whitespace.
27544         * config/vax/constraints.md: Likewise.
27545         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
27546         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
27547         * config/vax/predicates.md: Likewise.
27548         * config/vax/vax.c (print_operand_address, vax_output_int_move,
27549         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
27550         * config/vax/vax.h: Likewise.
27551         * config/vax/vax.md (nonlocal_goto): Likewise.
27552
27553 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27554
27555         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
27556         (indirectable_address_p, adjacent_operands_p): Add spaces around
27557         braces.
27558         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
27559
27560 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27561
27562         * config/vax/vax.c (legitimate_constant_address_p,
27563         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
27564         index_term_p, reg_plus_index_p, legitimate_address_p,
27565         vax_mode_dependent_address_p): Update comments to match functions
27566         modified by the recent int->bool conversion.
27567
27568 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27569
27570         * config/vax/builtins.md: Update copyright message.
27571         * config/vax/constraints.md: Likewise.
27572         * config/vax/netbsd-elf.h: Likewise.
27573         * config/vax/predicates.md: Likewise.
27574         * config/vax/vax-protos.h: Likewise.
27575         * config/vax/vax.c: Likewise.
27576         * config/vax/vax.h: Likewise.
27577         * config/vax/vax.md: Likewise.
27578         * config/vax/vax.opt: Likewise.
27579
27580 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
27581
27582         * config/vax/builtins.md (ffssi2, ffssi2_internal,
27583         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
27584         * config/vax/constraints.md (B, R): Likewise.
27585         * config/vax/predicates.md (external_memory_operand,
27586         nonimmediate_addsub_di_operand): Likewise.
27587         * config/vax/vax.c (vax_output_int_add): Likewise.
27588         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
27589         untyped_call): Likewise.
27590
27591 2009-04-01  Matt Thomas  <matt@3am-software.com>
27592
27593         * config/vax/predicates.md: New file.
27594         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
27595         external_const_operand, nonsymbolic_operand, external_memory_operand,
27596         indirect_memory_operand, indexed_memory_operand,
27597         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
27598         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
27599         predicate.
27600         * config/vax/constraints.md: New file.
27601         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
27602         New constraint.
27603         * config/vax/builtins.md: New file.
27604         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
27605         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
27606         jbbccisi): Define.
27607         * config/vax/vax.opt (mqmath): Add option.
27608         * config/vax/vax.md (isfx): Extend with DI.
27609         (VAXintQH, VAXintQHSD): Define.
27610         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
27611         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
27612         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
27613         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
27614         (movdi): Update constraints and use vax_output_int_move().
27615         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
27616         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
27617         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
27618         nonlocal_goto): New.
27619         (mov<mode>): Extend accepted operand types.
27620         (subdi3_old): Rename from subdi3, change update constraints and use
27621         a new implementation.
27622         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
27623         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
27624         MOVE_RATIO, CLEAR_RATIO): Define.
27625         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
27626         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
27627         (PRINT_OPERAND): Redefine using a function instead of inlined code.
27628         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
27629         (split_quadword_operands): Make static and really allow variable
27630         splitting.
27631         (print_operand_address): Update for PIC generation.
27632         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
27633         indexable_address_p, fixup_mathdi_operand,
27634         vax_expand_addsub_di_operands, adjacent_operands_p): New.
27635         (vax_float_literal, legitimate_constant_p,
27636         indirectable_constant_address_p, index_term_p,
27637         reg_plus_index_p): Return bool instead of int.
27638         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
27639         where needed.
27640         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
27641         generation.
27642         (vax_output_conditional_branch): Indent.
27643         (legitimate_constant_address_p, indirectable_constant_address_p,
27644         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
27645         vax_mode_dependent_address_p): Return bool instead of int, update for
27646         PIC generation.
27647         * config/vax/vax-protos.h (legitimate_constant_address_p,
27648         legitimate_constant_p, legitimate_address_p,
27649         vax_mode_dependent_address_p): Change declaration to bool.
27650         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
27651         vax_expand_addsub_di_operands, vax_output_int_subtract,
27652         vax_output_movmemsi): Declare.
27653         (split_quadword_operands, vax_float_literal): Delete declaration.
27654         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
27655         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
27656         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
27657         ASM_OUTPUT_DWARF_PCREL): Define.
27658         (ASM_SPEC): Change definition to allow PIC generation.
27659
27660 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
27661
27662         * doc/sourcebuild.texi: Update front-end requirements.
27663
27664 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27665
27666         PR target/39226
27667         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
27668         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
27669         (booldi3_internal3): Use boolean_or_operator instead of
27670         boolean_operator.
27671
27672 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
27673
27674         PR c/39605
27675         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
27676         declarator whose size is not an integer constant expression but
27677         folds to an integer constant, then treat it as a constant
27678         subsequently.
27679
27680 2009-04-01  Richard Guenther  <rguenther@suse.de>
27681
27682         * fold-const.c (fold_plusminus_mult_expr): Do not fold
27683         i * 4 + 2 to (i * 2 + 1) * 2.
27684
27685 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27686
27687         PR c/37772
27688         * c-parser.c (c_parser_asm_statement): Skip until close paren and
27689         return if c_parser_asm_string_literal returned NULL.
27690
27691 2009-04-01  Nick Clifton  <nickc@redhat.com>
27692
27693         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
27694         already defined.
27695         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
27696         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
27697         other typedefs to avoid conflicts with libgcc2.c.  Define labels
27698         to gain 16-bit bit-manipulation functions from libgcc2.c and then
27699         include it.
27700         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
27701         to gain 16-bit trapping arithmetic functions from libgcc2.c and
27702         then include it.
27703
27704 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
27705
27706         * varasm.c (default_function_rodata_section): Declare DOT as
27707         const char*.
27708
27709 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
27710             Andrey Galkin  <agalkin@hypercom.com>
27711
27712         PR/39492
27713         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
27714         Make object_name unique for each process.
27715
27716 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
27717
27718         PR other/39591
27719         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
27720         addressable variables in the parallel that could go out of scope while
27721         running queued tasks.
27722
27723 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
27724
27725         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
27726         (CASE_VALUES_THRESHOLD): Redefine.
27727         * config/avr/avr.c (avr_override_options): Remove initialization of
27728         avr_case_values_threshold variable.
27729         (avr_case_values_threshold): Remove variable. Add new function.
27730         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
27731         * config/avr/avr.opt (mno-tablejump): Remove option.
27732         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
27733
27734 2009-04-01  DJ Delorie  <dj@redhat.com>
27735
27736         * varasm.c (default_function_rodata_section): Don't assume
27737         anything about where the first '.' in the section name is.
27738
27739 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
27740
27741         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
27742         rs6000_emit_stack_tie.
27743
27744 2009-03-31  Ian Lance Taylor  <iant@google.com>
27745
27746         * tree-eh.c (tree_remove_unreachable_handlers): Compare
27747         gimple_code with GIMPLE_RESX, not RESX.
27748
27749 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27750
27751         * c-common.c (c_get_ident): New.
27752         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
27753
27754 2009-04-01  Ben Elliston  <bje@au.ibm.com>
27755
27756         * config/rs6000/sysv4.opt (msdata): Improve option description.
27757
27758 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
27759
27760         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
27761         (divdf3_internal_lat): Remove.
27762         (divxf3_internal_lat): Remove.
27763         (divxf3_internal_thr): Remove.
27764         (divxf): Use divxf3_internal.
27765         * config/ia64/div.md (divsf3_internal_lat): New.
27766         (divdf3_internal_lat): New.
27767         (divxf3_internal): New.
27768
27769 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27770
27771         PR c/448
27772         * Makefile.in (USE_GCC_STDINT): Define.
27773         (stmp-int-hdrs): Install stdint.h if applicable.
27774         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
27775         if known.
27776         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
27777         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
27778         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27779         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27780         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27781         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27782         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27783         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27784         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27785         (c_common_nodes_and_builtins): Initialize
27786         underlying_wchar_type_node.  Do not initialize
27787         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
27788         nodes for new types.
27789         (c_stddef_cpp_builtins): Define macros for new types.
27790         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
27791         Remove.
27792         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
27793         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
27794         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
27795         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
27796         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
27797         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
27798         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
27799         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
27800         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
27801         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
27802         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
27803         int16_type_node, int32_type_node, int64_type_node,
27804         uint8_type_node, uint16_type_node, c_uint32_type_node,
27805         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
27806         int_least32_type_node, int_least64_type_node,
27807         uint_least8_type_node, uint_least16_type_node,
27808         uint_least32_type_node, uint_least64_type_node,
27809         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
27810         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
27811         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
27812         uintptr_type_node): Define.
27813         * c-cppbuiltin.c (builtin_define_constants,
27814         builtin_define_type_minmax): New.
27815         (builtin_define_stdint_macros): Define more macros.
27816         (c_cpp_builtins): Define more limit macros.
27817         (type_suffix): New.
27818         (builtin_define_type_max): Define in terms of
27819         builtin_define_type_minmax.  Remove is_long parameter.  All
27820         callers changed.
27821         * config.gcc (use_gcc_stdint): Define.
27822         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
27823         Add newlib-stdint.h for generic targets.
27824         * config/glibc-stdint.h, config/newlib-stdint.h,
27825         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
27826         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
27827         * config/score/score.h (UINTPTR_TYPE): Define.
27828         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
27829         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
27830         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27831         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27832         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27833         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27834         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27835         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
27836         * config/spu/spu.h (STDINT_LONG32): Define.
27837         * configure.ac (use_gcc_stdint): Substitute.
27838         * configure: Regenerate.
27839         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
27840         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
27841         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
27842         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
27843         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
27844         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
27845         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
27846         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
27847         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
27848         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
27849         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
27850         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
27851         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
27852         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
27853         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
27854         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
27855         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
27856         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
27857         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
27858         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
27859         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
27860         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
27861         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
27862         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
27863         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
27864         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
27865         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
27866         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
27867         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
27868
27869 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
27870
27871         * loop-iv.c (suitable_set_for_replacement): Renamed from
27872         simplify_using_assignment; changed to return bool and to accept new
27873         args DEST and SRC.  Return true iff we find a source/destination pair
27874         that can be used to make a replacement, and fill SRC and DEST if so.
27875         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
27876         changed.
27877         (simplify_using_initial_values): Deal with altered regs here and track
27878         more precisely the effect they have on the validity of our expression.
27879
27880         * loop-iv.c (simplify_using_condition): A condition of the form
27881         (EQ REG CONST) can be used to simply make a substitution.
27882         (simplify_using_initial_values): Keep track of conditions we have seen
27883         and keep using them to simplify new expressions, while applying the
27884         same substitutions to them as to the expression.
27885
27886         * simplify-rtx.c (simplify_relational_operation_1): Simplify
27887         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
27888         GEU/LTU reversed.
27889
27890         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
27891         changed.  Use this when trying to improve the upper bound.
27892         Generate the comparison by using simplify_gen_relational.
27893
27894         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
27895
27896         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
27897         functions.
27898         (simplify_using_assignment, simplify_using_initial_values): Call
27899         replace_in_expr to make replacements.  Call replace_single_def_regs
27900         once on the initial version of the expression.
27901
27902 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27903
27904         PR target/27237
27905         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
27906
27907 2009-03-31  Richard Guenther  <rguenther@suse.de>
27908
27909         PR middle-end/31029
27910         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
27911         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
27912
27913 2009-03-31  Richard Guenther  <rguenther@suse.de>
27914
27915         * tree.h (div_if_zero_remainder): Declare.
27916         * fold-const.c (div_if_zero_remainder): Export.
27917         * tree-ssa-forwprop.c
27918         (forward_propagate_addr_into_variable_array_index): Handle
27919         constant array index addition outside of the variable index.
27920
27921 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27922
27923         PR target/39592
27924         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
27925         define_splits, floatunssi<mode>2): Require x87 conversions from
27926         DImode to be permitted.
27927
27928 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
27929
27930         PR preprocessor/15638
27931         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
27932
27933 2009-03-31  Richard Guenther  <rguenther@suse.de>
27934
27935         PR middle-end/23401
27936         PR middle-end/27810
27937         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
27938         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
27939         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
27940         a separate statement.
27941         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
27942         (lookup_tmp_var): Likewise.
27943         (is_gimple_formal_tmp_or_call_rhs): Remove.
27944         (is_gimple_reg_or_call_rhs): Rename to ...
27945         (is_gimple_reg_rhs_or_call): ... this.
27946         (is_gimple_mem_or_call_rhs): Rename to ...
27947         (is_gimple_mem_rhs_or_call): ... this.
27948         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
27949         DECL_GIMPLE_REG_P only if is_formal is true.
27950         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
27951         for non-proper post-modify expression gimplification.
27952         (gimplify_self_mod_expr): For post-modify expressions gimplify
27953         the lvalue to a minimal lvalue.
27954         (rhs_predicate_for): Remove formal temp case.
27955         (gimplify_modify_expr_rhs): Likewise.
27956         (gimplify_addr_expr): Use is_gimple_reg.
27957         (gimplify_expr): Remove formal temp cases.
27958         (gimple_regimplify_operands): Likewise.
27959         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
27960         and FILTER_EXPR like constants.
27961         * gimple.c (walk_gimple_op): Fix val_only initialization, use
27962         is_gimple_reg.
27963         (is_gimple_formal_tmp_rhs): Remove.
27964         (is_gimple_reg_rhs): Remove special casing.
27965         (is_gimple_mem_rhs): Fix.
27966         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
27967         (is_gimple_formal_tmp_var): Remove.
27968         (is_gimple_formal_tmp_reg): Likewise.
27969         (is_gimple_min_lval): Allow invariant component ref parts.
27970         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
27971         is_gimple_formal_tmp_reg): Remove declarations.
27972         * tree-cfg.c (verify_expr): Verify that variables with address
27973         taken do not have DECL_GIMPLE_REG_P set.
27974         * tree-mudflap.c (mf_build_check_statement_for): Use
27975         force_gimple_operand instead of gimplify_expr.
27976
27977 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
27978
27979         * modulo-sched.c (sms_schedule_by_order): Pass the actual
27980         schedulable rows to compute_split_row.
27981
27982 2009-03-31  Ben Elliston  <bje@au.ibm.com>
27983
27984         PR target/31635
27985         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
27986         OPT_mvrsave.
27987
27988 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
27989
27990         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
27991         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
27992         * configure: Regenerate.
27993         * config.in: Regenerate.
27994         * config/rs6000/rs6000.opt (mtls-markers): Add.
27995         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
27996         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
27997         (tls_ld_aix, tls_ld_sysv): Likewise.
27998         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
27999         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
28000
28001 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
28002
28003         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
28004
28005 2009-03-30  Jan Hubicka  <jh@suse.cz>
28006
28007         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
28008         out of RESX.
28009         (tree_remove_unreachable_handlers): Cleanup EH predecestor
28010         detection and label handling.
28011
28012 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28013
28014         * ira-int.h (ira_allocno): Rename left_conflicts_num to
28015         left_conflicts_size.
28016         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
28017         ALLOCNO_LEFT_CONFLICTS_SIZE.
28018
28019         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
28020         remove_allocno_from_bucket_and_push,
28021         allocno_spill_priority_compare, push_allocnos_to_stack,
28022         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28023         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
28024         (setup_allocno_left_conflicts_num): Ditto.  Rename to
28025         setup_allocno_left_conflicts_size.
28026         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
28027         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
28028         setup_allocno_left_conflicts_size instead of
28029         setup_allocno_left_conflicts_num.
28030
28031         * ira-build.c (ira_create_allocno): Use
28032         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
28033         ALLOCNO_LEFT_CONFLICTS_NUM.
28034
28035 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28036
28037         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28038         instead of DF_LR_OUT.
28039
28040         * ira-lives.c (process_bb_node_lives): Ditto.
28041
28042         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28043         instead of DF_LR_{OUT,IN}.
28044
28045         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28046
28047         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28048
28049 2009-03-30  Jan Hubicka  <jh@suse.cz>
28050
28051         * except.c (label_to_region_map): Fix thinko.
28052
28053 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
28054
28055         PR middle-end/38237
28056         * tree.h (tree_find_value): New declaration.
28057         * tree.c (tree_find_value): New function.
28058         * varasm.c (assemble_external): Avoid duplicate entries on lists.
28059
28060 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
28061
28062         PR debug/39563
28063         * c-decl.c (struct c_binding): Add locus field.
28064         (bind): Add locus argument, set locus field from it.
28065         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
28066         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
28067         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
28068         implicitly_declare, undeclared_variable, lookup_label,
28069         declare_label, c_make_fname_decl, c_builtin_function,
28070         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
28071         bind callers.
28072
28073 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
28074
28075         PR target/38781
28076         * config/i386/i386.c (classify_argument): Check total size of
28077         structure.
28078
28079 2009-03-30  Martin Jambor  <mjambor@suse.cz>
28080
28081         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
28082         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
28083         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
28084         respectively.
28085
28086         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
28087         seen_variable_array_ref while also traversing a union.
28088
28089         * tree-inline.c (optimize_inline_calls): Do not call
28090         cgraph_node_remove_callees.
28091         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
28092         (pass_remove_cgraph_callee_edges): New variable.
28093         * passes.c (init_optimization_passes): Add
28094         pass_remove_cgraph_callee_edges after early inlining and before all
28095         late intraprocedural passes.
28096
28097         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
28098
28099 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28100
28101         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
28102         Fix typos in names.
28103
28104 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28105
28106         * combine.c (simplify_comparison): Use have_insn_for.
28107         * dojump.c (do_jump): Likewise.
28108
28109 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28110
28111         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
28112         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
28113         sparc_compare_op0 like sparc_compare_emitted used to be handled.
28114         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
28115         instead of sparc_compare_emitted.
28116         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
28117         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
28118         instead of sparc_compare_emitted.
28119
28120 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28121
28122         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
28123         enter/exit cfglayout mode.
28124         (pass_partition_block): Require it.
28125         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
28126         (combine_instructions): Track basic blocks instead of labels.
28127         (update_cfg_for_uncondjump): New.
28128         (try_combine): Use it.  Update jumps after rescanning.
28129         (pass_combine): Require PROP_cfglayout.
28130         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
28131
28132 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28133
28134         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
28135         Provide/destroy PROP_cfglayout respectively.
28136         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
28137         * tree-pass.h (PROP_cfglayout): New.
28138
28139 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
28140
28141         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
28142         fold_convert_const_fixed_from_fixed,
28143         fold_convert_const_fixed_from_int,
28144         fold_convert_const_fixed_from_real, fold_negate_const): Do not
28145         set TREE_CONSTANT_OVERFLOW.
28146         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
28147         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
28148
28149 2009-03-30  Ira Rosen  <irar@il.ibm.com>
28150
28151         * tree-vect-loop-manip.c: New file.
28152         * tree-vectorizer.c: Update documentation and included files.
28153         (vect_loop_location): Make extern.
28154         (rename_use_op): Move to tree-vect-loop-manip.c
28155         (rename_variables_in_bb, rename_variables_in_loop,
28156         slpeel_update_phis_for_duplicate_loop,
28157         slpeel_update_phi_nodes_for_guard1,
28158         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
28159         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
28160         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
28161         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
28162         find_loop_location): Likewise.
28163         (new_stmt_vec_info): Move to tree-vect-stmts.c.
28164         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
28165         get_vectype_for_scalar_type, vect_is_simple_use,
28166         supportable_widening_operation, supportable_narrowing_operation):
28167         Likewise.
28168         (bb_in_loop_p): Move to tree-vect-loop.c.
28169         (new_loop_vec_info, destroy_loop_vec_info,
28170         reduction_code_for_scalar_code, report_vect_op,
28171         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
28172         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
28173         (vect_supportable_dr_alignment): Likewise.
28174         * tree-vectorizer.h (tree-data-ref.h): Include.
28175         (vect_loop_location): Declare.
28176         Reorganize function declarations according to the new file structure.
28177         * tree-vect-loop.c: New file.
28178         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
28179         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
28180         * tree-vect-data-refs.c: New file.
28181         * tree-vect-patterns.c (timevar.h): Don't include.
28182         * tree-vect-stmts.c: New file.
28183         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
28184         tree-vect-slp.c, tree-vect-loop.c.
28185         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
28186         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
28187         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
28188         (tree-vect-analyze.o): Remove.
28189         (tree-vect-transform.o): Likewise.
28190         (tree-vect-data-refs.o): Add rule.
28191         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
28192         tree-vect-slp.o): Likewise.
28193         (tree-vect-patterns.o): Remove redundant dependencies.
28194         (tree-vectorizer.o): Likewise.
28195         * tree-vect-slp.c: New file.
28196
28197 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
28198
28199         * optc-gen.awk: Warn if an option flag has multiple different
28200         help strings.
28201
28202 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
28203
28204         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
28205         -floop-block): Document dependences on PPL, CLooG and Graphite.
28206
28207 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28208
28209         PR rtl-optimization/323
28210         * c-common.c (c_fully_fold, convert_and_check,
28211         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
28212         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
28213         * c-common.def (EXCESS_PRECISION_EXPR): New.
28214         * c-cppbuiltin.c (builtin_define_float_constants): Define
28215         constants with enough digits for long double.
28216         * c-lex.c (interpret_float): Interpret constant with excess
28217         precision where appropriate.
28218         * c-opts.c (c_common_post_options): Set
28219         flag_excess_precision_cmdline.  Give an error for
28220         -fexcess-precision=standard for C++ for processors where the
28221         option is significant.
28222         * c-parser.c (c_parser_conditional_expression): Handle excess
28223         precision in condition.
28224         * c-typeck.c (convert_arguments): Handle arguments with excess
28225         precision.
28226         (build_unary_op): Move excess precision outside operation.
28227         (build_conditional_expr): Likewise.
28228         (build_compound_expr): Likewise.
28229         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
28230         (build_modify_expr): Handle excess precision in RHS.
28231         (convert_for_assignment): Handle excess precision in converted
28232         value.
28233         (digest_init, output_init_element, process_init_element): Handle
28234         excess precision in initializer.
28235         (c_finish_return): Handle excess precision in return value.
28236         (build_binary_op): Handle excess precision in operands and add
28237         excess precision as needed for operation.
28238         * common.opt (-fexcess-precision=): New option.
28239         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
28240         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
28241         For standard excess precision, output explicit conversion to and
28242         truncation from XFmode.
28243         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
28244         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
28245         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
28246         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
28247         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
28248         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
28249         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
28250         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
28251         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
28252         define_splits, sqrt<mode>2): Disable where appropriate for
28253         standard excess precision.
28254         * convert.c (convert_to_real): Do not shorten arithmetic to type
28255         for which excess precision would be used.
28256         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
28257         * doc/invoke.texi (-fexcess-precision=): Document option.
28258         (-mfpmath=): Correct index entry.
28259         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
28260         flag_excess_precision): New.
28261         * langhooks.c (lhd_post_options): Set
28262         flag_excess_precision_cmdline.
28263         * opts.c (common_handle_option): Handle -fexcess-precision=.
28264         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
28265         init_excess_precision): New.
28266         (lang_dependent_init_target): Call init_excess_precision.
28267         * tree.c (excess_precision_type): New.
28268         * tree.h (excess_precision_type): Declare.
28269
28270 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
28271
28272         PR c/35235
28273         * c-typeck.c (build_component_ref): Do not copy qualifiers from
28274         non-lvalue to component.
28275
28276 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28277
28278         PR preprocessor/34695
28279         * Makefile.in (c-opts.o): Depend on c-tree.h.
28280         * c-common.c: Move down include of diagnostic.h.
28281         (done_lexing, c_cpp_error): New.
28282         * c-common.h (done_lexing): Declare.
28283         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
28284         (parse_in).
28285         * c-opts.c: Include c-tree.h.
28286         (c_common_init_options): Set preprocessor error callback.
28287         (c_common_handle_option): Do not set preprocessor
28288         inhibit_warnings, warnings_are_errors, warn_system_headers,
28289         pedantic_errors or inhibit_warnings flags.
28290         (c_common_post_options): Do not check cpp_errors (parse_in).
28291         (c_common_finish): Do not output dependencies if there were
28292         errors.  Do not check return value of cpp_finish.
28293         * c-ppoutput.c (pp_file_change): Set input_location.
28294         * c-tree.h (c_cpp_error): Declare.
28295         * diagnostic.c (diagnostic_set_info_translated): Also initialize
28296         override_column.
28297         (diagnostic_build_prefix): Check override_column.
28298         * diagnostic.h (diagnostic_info): Add override_column field.
28299         (diagnostic_override_column): Define.
28300
28301 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
28302
28303         * c-common.c (c_expand_expr, c_staticp): Remove.
28304         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
28305         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
28306         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
28307         * c-gimplify.c (gimplify_compound_literal_expr,
28308         optimize_compound_literals_in_ctor): Remove.
28309         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
28310         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
28311         * c-semantics.c (emit_local_var): Remove.
28312
28313         * langhooks-def.h (lhd_expand_expr): Remove.
28314         * langhooks.c (lhd_expand_expr): Remove.
28315         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
28316
28317         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
28318         handling from c-semantics.c; don't call into langhook.
28319         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
28320         * gimplify.c (gimplify_compound_literal_expr,
28321         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
28322         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
28323         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
28324         as was done in c-gimplify.c.
28325         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
28326         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
28327         Move from c-common.h.
28328         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
28329
28330         * tree.c (staticp): Do not call langhook.
28331         * langhooks.c (lhd_staticp): Delete.
28332         * langhooks-def.h (lhd_staticp): Delete prototype.
28333         (LANG_HOOKS_STATICP): Delete.
28334         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
28335
28336         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
28337         instead of DECL_STMTs.
28338
28339 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
28340
28341         PR c/456
28342         PR c/5675
28343         PR c/19976
28344         PR c/29116
28345         PR c/31871
28346         PR c/35198
28347         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
28348         void_type_node.
28349         (fold_call_expr): Return a NOP_EXPR from folding rather than the
28350         contained expression.
28351         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
28352         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
28353         conditional expressions for C.
28354         (decl_constant_value_for_optimization): Move from
28355         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
28356         whether optimizing and that the expression is a VAR_DECL not of
28357         array type instead of doing such checks in the caller.  Do not
28358         check pedantic.  Call gcc_unreachable for C++.
28359         * c-common.def (C_MAYBE_CONST_EXPR): New.
28360         * c-common.h (c_fully_fold, c_save_expr,
28361         decl_constant_value_for_optimization): New prototypes.
28362         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28363         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28364         EXPR_INT_CONST_OPERANDS): Define.
28365         * c-convert.c (convert): Strip nops from expression.
28366         * c-decl.c (groktypename): Take extra parameters expr and
28367         expr_const_operands.  Update call to grokdeclarator.
28368         (start_decl): Update call to grokdeclarator.  Add statement for
28369         expressions used in type of decl.
28370         (grokparm): Update call to grokdeclarator.
28371         (push_parm_decl): Update call to grokdeclarator.
28372         (build_compound_literal): Add parameter non_const and build a
28373         C_MAYBE_COSNT_EXPR if applicable.
28374         (grokdeclarator): Take extra parameters expr and
28375         expr_const_operands.  Track expressions used in declaration
28376         specifiers and declarators.  Fold array sizes and track whether
28377         they are constant expressions and whether they are integer
28378         constant expressions.
28379         (parser_xref_tag): Set expr and expr_const_operands fields in
28380         return value.
28381         (grokfield): Update call to grokdeclarator.
28382         (start_function): Update call to grokdeclarator.
28383         (build_null_declspecs): Set expr and expr_const_operands fields in
28384         return value.
28385         (declspecs_add_type): Handle expressions in typeof specifiers.
28386         * c-parser.c (c_parser_declspecs): Set expr and
28387         expr_const_operands fields for declaration specifiers.
28388         (c_parser_enum_specifier): Likewise.
28389         (c_parser_struct_or_union_specifier): Likewise.
28390         (c_parser_typeof_specifier): Likewise.  Update call to
28391         groktypename.  Fold expression as needed.  Return expressions with
28392         type instead of adding statements.
28393         (c_parser_attributes): Update calls to c_parser_expr_list.
28394         (c_parser_statement_after_labels): Fold expression before passing
28395         to objc_build_throw_stmt.
28396         (c_parser_condition): Fold expression.
28397         (c_parser_asm_operands): Fold expression.
28398         (c_parser_conditional_expression): Use c_save_expr.  Update call
28399         to build_conditional_expr.
28400         (c_parser_alignof_expression): Update call to groktypename.
28401         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
28402         original_code.  Fold expression argument of va_arg.  Create
28403         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
28404         argument to va_arg.  Update calls to groktypename.  Fold array
28405         index for offsetof.  Verify that first argument to
28406         __builtin_choose_expr has integer type.
28407         (c_parser_postfix_expression_after_paren_type): Update calls to
28408         groktypename and build_compound_literal.  Handle expressions with
28409         side effects in type name.
28410         (c_parser_postfix_expression_after_primary): Update call to
28411         c_parser_expr_list.  Set original_code for calls to
28412         __builtin_constant_p.
28413         (c_parser_expr_list): Take extra parameter fold_p.  Fold
28414         expressions if requested.
28415         (c_parser_objc_type_name): Update call to groktypename.
28416         (c_parser_objc_synchronized_statement): Fold expression.
28417         (c_parser_objc_receiver): Fold expression.
28418         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
28419         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
28420         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
28421         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
28422         (struct c_typespec): Add elements expr and expr_const_operands.
28423         (struct c_declspecs): Add elements expr and expr_const_operands.
28424         (groktypename, build_conditional_expr, build_compound_literal):
28425         Update prototypes.
28426         (in_late_binary_op): Declare.
28427         * c-typeck.c (note_integer_operands): New function.
28428         (in_late_binary_op): New variable.
28429         (decl_constant_value_for_broken_optimization): Move to c-common.c
28430         and rename to decl_constant_value_for_optimization.
28431         (default_function_array_conversion): Do not strip nops.
28432         (default_conversion): Do not call
28433         decl_constant_value_for_broken_optimization.
28434         (build_array_ref): Do not fold result.
28435         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
28436         result when operand is a VLA.
28437         (c_expr_sizeof_type): Update call to groktypename.  Handle
28438         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
28439         result when operand names a VLA type.
28440         (build_function_call): Update call to build_compound_literal.
28441         Only fold result for calls to __builtin_* functions.  Strip
28442         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
28443         the function designator.
28444         (convert_arguments): Fold arguments.  Update call to
28445         convert_for_assignment.
28446         (build_unary_op): Handle increment and decrement of
28447         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
28448         decrement earlier.  Fold operand of increment and decrement.
28449         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
28450         built for integer operand.  Wrap returns that are INTEGER_CSTs
28451         without being integer constant expressions or that have integer
28452         constant operands without being INTEGER_CSTs.
28453         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
28454         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
28455         result is an integer constant expression or can be used in
28456         unevaluated parts of one and avoid folding and wrap as
28457         appropriate.  Fold operands before possibly doing -Wsign-compare
28458         warnings.
28459         (build_compound_expr): Wrap result for C99 if operands can be used
28460         in integer constant expressions.
28461         (build_c_cast): Update call to digest_init.  Do not ignore
28462         overflow from casting floating-point constants to integers.  Wrap
28463         results that could be confused with integer constant expressions,
28464         null pointer constants or floating-point constants.
28465         (c_cast_expr): Update call to groktypename.  Handle expressions
28466         included in type name.
28467         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
28468         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
28469         Update calls to convert_for_assignment.
28470         (convert_for_assignment): Take new parameter
28471         null_pointer_constant.  Do not strip nops or call
28472         decl_constant_value_for_broken_optimization.  Set
28473         in_late_binary_op for conversions to boolean.
28474         (store_init_value): Update call to digest_init.
28475         (digest_init): Take new parameter null_pointer_constant.  Do not
28476         call decl_constant_value_for_broken_optimization.  pedwarn for
28477         initializers not constant expressions.  Update calls to
28478         convert_for_assignment.
28479         (constructor_nonconst): New.
28480         (struct constructor_stack): Add nonconst element.
28481         (really_start_incremental_init, push_init_level, pop_init_level):
28482         Handle constructor_nonconst and nonconst element.
28483         (set_init_index): Call constant_expression_warning for array
28484         designators.
28485         (output_init_element): Fold value.  Set constructor_nonconst as
28486         applicable.  pedwarn for initializers not constant expressions.
28487         Update call to digest_init.  Call constant_expression_warning
28488         where constant initializers are required.
28489         (process_init_element): Use c_save_expr.
28490         (c_finish_goto_ptr): Fold expression.
28491         (c_finish_return): Fold return value.  Update call to
28492         convert_for_assignment.
28493         (c_start_case): Fold switch expression.
28494         (c_process_expr_stmt): Fold expression.
28495         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
28496         ensure statement expression is not evaluated in constant expression.
28497         (build_binary_op): Track whether results are integer constant
28498         expressions or may occur in such, disable folding and wrap results
28499         as applicable.  Fold operands for -Wsign-compare warnings unless
28500         in_late_binary_op.
28501         (c_objc_common_truthvalue_conversion): Handle results folded to
28502         integer constants that are not integer constant expressions.
28503         * doc/extend.texi: Document when typeof operands are evaluated,
28504         that condition of __builtin_choose_expr is an integer constant
28505         expression, and more about use of __builtin_constant_p in
28506         initializers.
28507
28508 2009-03-29  Richard Guenther  <rguenther@suse.de>
28509
28510         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
28511         propagate addresses of array references.
28512
28513 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
28514
28515         * regmove.c (perhaps_ends_bb_p): Remove.
28516         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
28517         from INSN and check that the main loop stays within that basic block.
28518         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
28519         (regmove_forward_pass): Split out from regmove_optimize.  Use
28520         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
28521         (regmove_backward_pass): Split out from regmove_optimize.  Use
28522         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
28523         (regmove_optimize): Simplify.
28524
28525 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28526
28527         PR target/39545
28528         * config/i386/i386.c (classify_argument): Ignore flexible array
28529         member in struct and warn ABI change.
28530
28531 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
28532
28533         * config/i386/i386-protos.h (ix86_agi_dependent): New.
28534
28535         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
28536         (ix86_adjust_cost): Updated.
28537
28538 2009-03-29  Jan Hubicka  <jh@suse.cz>
28539
28540         PR middle-end/28850
28541         * tree-pass.h (pass_cleanup_eh): New function.
28542         (remove_unreachable_regions): Break code handling RTL
28543         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
28544         that can not be reached by runtime.
28545         (can_be_reached_by_runtime): New function.
28546         (label_to_region_map): New function.
28547         (num_eh_regions): New function.
28548         (rtl_remove_unreachable_regions): New function.
28549         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
28550         (remove_eh_region): New function.
28551         * except.h: Include sbitmap and vecprim.
28552         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
28553         num_eh_regions): Declare.
28554         * passes.c (init_optimization_passes): Schedule cleanup_eh.
28555         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
28556         * tree-eh.c (tree_remove_unreachable_handlers): New function.
28557         (tree_empty_eh_handler_p): New function.
28558         (cleanup_empty_eh): New function.
28559         (cleanup_eh): New function.
28560         (pass_cleanup_eh): New function.
28561
28562 2009-03-29  Jan Hubicka  <jh@suse.cz>
28563
28564         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
28565         for removed regions.
28566
28567 2009-03-29  Jan Hubicka  <jh@suse.cz>
28568
28569         * except.c (dump_eh_tree): Dump all datastructures.
28570
28571 2009-03-29  Jan Hubicka  <jh@suse.cz>
28572
28573         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
28574         (duplicate_eh_regions_1): Likewise.
28575         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
28576         vector; call EH verification.
28577         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28578         Be ready for region being removed.
28579
28580 2009-03-29  Jan Hubicka  <jh@suse.cz>
28581
28582         * bitmap.c (bitmap_last_set_bit): New function.
28583         * bitmap.h (bitmap_last_set_bit): Declare.
28584
28585 2009-03-29  David Ayers  <ayers@fsfe.org>
28586
28587         PR objc/27377
28588         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
28589         by calling objc_compare_types and surpress warnings about
28590         incompatible C pointers that are compatible ObjC pointers.
28591
28592 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
28593
28594         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
28595         call initialize_inline_failed.
28596         (initialize_inline_failed): Move it from here ...
28597         * cgraph.c (initialize_inline_failed): ... to here.
28598         (cgraph_create_edge): Call initialize_inline_failed rather than
28599         setting inline_failed directly.
28600
28601 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28602
28603         PR target/32542
28604         * sysv4.opt (msdata): Improve comment.
28605         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
28606         * sysv4.h (SVR4_ASM_SPEC): Likewise.
28607
28608 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28609
28610         PR target/30451
28611         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
28612         load and store attributes.
28613
28614 2009-03-29  Ben Elliston  <bje@au.ibm.com>
28615
28616         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
28617         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
28618         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
28619         * doc/extend.texi (X86 Built-in Functions): Add index entries for
28620         __builtin_infq and __builtin_huge_valq.
28621
28622 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
28623
28624         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
28625         atmega8m1 devices.
28626         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
28627         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
28628
28629 2009-03-28  Xinliang David Li  <davidxl@google.com>
28630
28631         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
28632         (do_dbg_cnt): New function.
28633
28634 2009-03-28  Jan Hubicka  <jh@suse.cz>
28635
28636         Merge from pretty-ipa:
28637
28638         2009-03-27  Jan Hubicka  <jh@suse.cz>
28639
28640         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28641         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
28642         * passes.c (function_called_by_processed_nodes_p): New.
28643         * ipa-pure-const.c (check_call): Fix handling of operands.
28644         (analyze_function): Dump debug output for skipped bodies.
28645         (local_pure_const): Use function_called_by_processed_nodes_p.
28646         * dwarf2out.c (reference_to_unused): Use output.
28647         * passes.c (do_per_function_toporder): Likewise.
28648
28649         2008-11-12  Jan Hubicka  <jh@suse.cz>
28650
28651         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
28652         * ipa-pure-const.c (funct_state_d): Add can throw field; make
28653         state_set_in_source enum
28654         (check_decl): Ignore memory tags; do not set fake looping flags;
28655         dump diagnostics.
28656         (check_operand, check_tree, check_rhs_var, check_lhs_var,
28657         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
28658         (check_call, analyze_function): Rewrite.
28659         (check_stmt): New.
28660         (add_new_function): Update call of analyze_function.
28661         (generate_summary): Add call of analyze_function.
28662         (propagate): Propagate can_throw; handle state_set_in_source correctly.
28663         (local_pure_const): New function.
28664         (pass_local_pure_const): New pass.
28665         * ipa-inline.c (inline_transform): Set after_inlining.
28666         * tree-eh.c (stmt_can_throw_external): New.
28667         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
28668         work with aliasing built.
28669         * tree-flow.h (stmt_can_throw_external): New.
28670         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
28671         and local pure/const pass in early and late optimization queue.
28672
28673 2009-03-28  Martin Jambor  <mjambor@suse.cz>
28674
28675         * fold-const.c (get_pointer_modulus_and_residue): New parameter
28676         allow_func_align.
28677         (fold_binary): Allow function decl aligment consideration is the
28678         second argument is integer constant one.
28679         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
28680         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
28681         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
28682
28683 2009-03-28  Jan Hubicka  <jh@suse.cz>
28684
28685         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
28686         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
28687         * function.h (rtl_data): Add nothrow flag.
28688         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
28689         set DECL_NOTHROW for AVAILABLE functions.
28690
28691 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
28692
28693         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
28694         following vector keyword has expansion starting with pixel or bool
28695         keyword, expand vector to __vector and pixel or bool to __pixel or
28696         __bool.
28697
28698         PR c++/39554
28699         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
28700         warn_if_disallowed_function_p): Removed.
28701         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
28702         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
28703         warning_if_disallowed_function_p.
28704         * flags.h (warn_if_disallowed_function_p,
28705         warn_disallowed_functions): Removed.
28706         * common.opt (Wdisallowed-function-list=): Removed.
28707         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
28708
28709 2009-03-28  Richard Guenther  <rguenther@suse.de>
28710
28711         PR tree-optimization/38723
28712         * tree-ssa-pre.c (compute_avail): Add all default definitions to
28713         the entry block.
28714
28715 2009-03-28  Jan Hubicka  <jh@suse.cz>
28716
28717         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
28718         test introduced by my previous patch.
28719
28720 2009-03-28  Richard Guenther  <rguenther@suse.de>
28721
28722         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
28723         the PHIs value undefined.
28724
28725 2009-03-28  Jan Hubicka  <jh@suse.cz>
28726
28727         * tree-pass.h (pass_fixup_cfg): New pass.
28728         * ipa-inline.c (inline_transform): Set
28729         always_inline_functions_inlined/after_inlining.
28730         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
28731         (pass_fixup_cfg): New pass.
28732         * passes.c (init_optimization_passes): Add fixup_cfg.
28733
28734 2009-03-28  Richard Guenther  <rguenther@suse.de>
28735
28736         PR tree-optimization/38458
28737         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
28738         argument use the arguments copy-of value.
28739
28740 2009-03-28  Richard Guenther  <rguenther@suse.de>
28741
28742         PR tree-optimization/38180
28743         * tree-ssa-ccp.c (get_default_value): Simplify.
28744         (likely_value): Likewise.
28745         (surely_varying_stmt_p): Properly handle VOP case.
28746         (ccp_initialize): Likewise.
28747         (ccp_fold): Handle propagating through *&.
28748         (fold_const_aggregate_ref): Also handle decls.
28749
28750 2009-03-28  Jan Hubicka  <jh@suse.cz>
28751
28752         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
28753         * cgraph.h (cgraph_node): Likewise.
28754         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
28755         (cgraph_reset_node): Use process flag.
28756         (cgraph_mark_functions_to_output): Likewise.
28757         (cgraph_expand_function): Likewise.
28758         (cgraph_expand_all_functions): Likewise.
28759         (cgraph_output_in_order): Likewise.
28760         * dwarf2out.c (reference_to_unused): Likewise.
28761         * passes.c do_per_function_toporder): Likewise.
28762
28763 2009-03-28  Jan Hubicka  <jh@suse.cz>
28764
28765         Bring from lto-branch:
28766
28767         2008-09-03  Doug Kwan  <dougkwan@google.com>
28768
28769         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
28770         enums instead of reason strings.
28771         * cgraph.c (cgraph_create_edge): Same.
28772         (cgraph_inline_failed_string): New function.
28773         * cgraph.h (cgraph_inline_failed_t): New enum type.
28774         (cgraph_inline_failed_string): New prototype.
28775         (struct cgraph_edge): Change type of INLINED_FAILED from constant
28776         char pointer to cgraph_inline_failed_t.
28777         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
28778         (cgraph_default_inline_p): Ditto.
28779         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
28780         to cgraph_inline_failed_t pointer.
28781         * cif-code.def: New file.
28782         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
28783         reason string.
28784         (cgraph_check_inline_limits): Change type of REASON to pointer to
28785         cgraph_inline_failed_t.  Replace reason strings with enums.
28786         (cgraph_default_inline_p): Ditto.
28787         (cgraph_recursive_inlining_p): Ditto.
28788         (update_caller_keys): Change type of FAILED_REASON to
28789         cgraph_inline_failed_t.
28790         (cgraph_set_inline_failed): Change type of REASON to pointer to
28791         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
28792         convert enums to strings for text output.
28793         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
28794         to be of type cgraph_inline_failed_t.  Replace reason strings with
28795         enums.  Call cgraph_inline_failed_string to covert enums
28796         to strings for text output.
28797         (cgraph_decide_inlining): Replace reason strings with enums.
28798         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
28799         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
28800         for text output.
28801         * tree-inline.c (expand_call_inline): Change type of REASON
28802         to cgraph_inline_failed_t.  Replace reason strings with enums.
28803         Call cgraph_inline_failed_string for text output.
28804         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
28805         (cgraph.o): Ditto.
28806
28807 2009-03-28  Jan Hubicka  <jh@suse.cz>
28808
28809         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
28810         cgraph_clone_node): Remove master clone handling.
28811         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28812         * cgraph.h (master_clone): Remove.
28813         (cgraph_is_master_clone, cgraph_master_clone): Remove.
28814         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
28815         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
28816
28817 2009-03-28  Jan Hubicka  <jh@suse.cz>
28818
28819         * cgraph.c (cgraph_function_body_availability): Functions declared
28820         inline are always safe to assume that it is not going to be replaced.
28821
28822 2009-03-28  Richard Guenther  <rguenther@suse.de>
28823
28824         PR tree-optimization/38513
28825         * tree-ssa-pre.c (eliminate): Remove redundant stores.
28826         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
28827         EXC_PTR_EXPR and FILTER_EXPR.
28828         (get_ref_from_reference_ops): Likewise.
28829
28830 2009-03-28  Richard Guenther  <rguenther@suse.de>
28831
28832         PR tree-optimization/38968
28833         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
28834         Use FLOOR_MOD_EXPR to compute misalignment.
28835
28836 2009-03-28  Richard Guenther  <rguenther@suse.de>
28837
28838         PR tree-optimization/37795
28839         * tree.h (combine_comparisons): Declare.
28840         * fold-const.c (combine_comparisons): Export.
28841         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
28842         comparisons.
28843         (ifcombine_iforif): Use combine_comparisons.
28844
28845 2009-03-28  Jan Hubicka  <jh@suse.cz>
28846
28847         * tree-eh.c (inlinable_call_p): New function.
28848         (make_eh_edges): Use it.
28849         (verify_eh_edges): Use it.
28850         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
28851         * except.c (reachable_next_level): Add inlinable_function argument
28852         (sjlj_find_directly_reachable_regions): Update.
28853         (add_reachable_handler): Do not set saw_any_handlers.
28854         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
28855         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
28856         Add new inlinable call parameter.
28857         (can_throw_internal, can_throw_external): Update.
28858         * except.h (can_throw_internal_1, can_throw_external_1,
28859         foreach_reachable_handler): Update declaration.
28860
28861 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
28862
28863         * config/arm/t-arm-coff, config/h8300/coff.h,
28864         config/i386/i386-aout.h, config/i386/i386-coff.h,
28865         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
28866         config/pdp11/2bsd.h, config/rs6000/aix41.h,
28867         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
28868         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
28869         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
28870         sys-types.h: Remove.
28871         * Makefile.in: Remove protoize and fixproto support and references
28872         in comments.
28873         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
28874         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
28875         Remove.
28876         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
28877         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
28878         unprotoize$(exeext).
28879         (rest.encap): Don't depend on $(STMP_FIXPROTO)
28880         (.PHONY): Don't depend on proto.
28881         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
28882         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
28883         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
28884         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
28885         build/gen-protos.o, build/scan.o, xsys-protos.h,
28886         build/fix-header$(build_exeext), build/fix-header.o,
28887         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
28888         stmp-install-fixproto): Remove.
28889         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
28890         SYSCALLS.c or fixproto files.
28891         (install-common): Don't install protoize.
28892         (install-headers-tar, install-headers-cpio, install-headers-cp):
28893         Don't depend on $(STMP_FIXPROTO).
28894         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
28895         install fixproto files or write out fixproto settings.
28896         (uninstall): Don't uninstall protoize.
28897         * config.gcc (use_fixproto): Remove.
28898         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
28899         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
28900         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
28901         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
28902         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
28903         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
28904         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
28905         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
28906         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
28907         * config/t-vxworks (STMP_FIXPROTO): Remove.
28908         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
28909         STMP_FIXPROTO): Remove.
28910         * config.in, configure: Regenerate.
28911         * crtstuff.c (gid_t, uid_t): Don't undefine.
28912         * doc/install.texi: Change m68k-coff to m68k-elf in example.
28913         (arm-*-coff, arm-*-aout: Remove target entries.
28914         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
28915         Remove mention of AIX 4.1.
28916         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
28917         * doc/invoke.texi (Running Protoize): Remove.
28918         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
28919         (Protoize Caveats): Remove.
28920         * tsystem.h: Update comments on headers assumed to exist.
28921
28922 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
28923
28924         * genautomata.c: Add a new year to the copyright.  Add a new
28925         reference.
28926         (struct insn_reserv_decl): Add comments for member bypass_list.
28927         (find_bypass): Remove.
28928         (insert_bypass): New.
28929         (process_decls): Use insert_bypass.
28930         (output_internal_insn_latency_func): Output all bypasses with the
28931         same input insn in one switch case.
28932
28933         * rtl.def (define_bypass): Describe bypass choice.
28934         * doc/md.texi (define_bypass): Ditto.
28935
28936 2009-03-27  Richard Guenther  <rguenther@suse.de>
28937
28938         * gimplify.c (mark_addressable): Export.
28939         * tree-flow.h (mark_addressable): Declare.
28940         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
28941         * tree-ssa.c (verify_phi_args): Verify that address taken
28942         variables have TREE_ADDRESSABLE set.
28943
28944 2009-03-27  Richard Guenther  <rguenther@suse.de>
28945
28946         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
28947         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
28948         Do not mark decls TREE_ADDRESSABLE.
28949         (build_fold_addr_expr): Adjust.
28950         (fold_addr_expr): Remove.
28951         (fold_unary): Use build_fold_addr_expr.
28952         (fold_comparison): Likewise.
28953         (split_address_to_core_and_offset): Likewise.
28954         * coverage.c (tree_coverage_counter_addr): Mark the array decl
28955         TREE_ADDRESSABLE.
28956         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
28957         (gimplify_modify_expr_to_memcpy): Mark source and destination
28958         addressable.
28959         * omp-low.c (create_omp_child_function): Mark the object decl
28960         TREE_ADDRESSABLE.
28961         (lower_rec_input_clauses): Mark the var we take the address of
28962         TREE_ADDRESSABLE.
28963         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
28964
28965 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28966
28967         PR middle-end/39315
28968         * cfgexpand.c (expand_one_stack_var_at): Change alignment
28969         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
28970
28971 2009-03-27  Richard Guenther  <rguenther@suse.de>
28972
28973         PR tree-optimization/39120
28974         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
28975         constraints.
28976         (handle_lhs_call): Process return constraints.  Add escape
28977         constraints if necessary.
28978         (handle_const_call): Fill out return constraints.  Make nested
28979         case more precise.  Avoid consttmp if possible.
28980         (handle_pure_call): Fill out return constraints.  Avoid
28981         callused if possible.
28982         (find_func_aliases): Simplify call handling.
28983
28984 2009-03-27  Richard Guenther  <rguenther@suse.de>
28985
28986         PR tree-optimization/39120
28987         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
28988         as a representative.
28989         (solve_graph): Do propagate CALLUSED.
28990         (handle_pure_call): Use a scalar constraint from CALLUSED for
28991         the return value.
28992         (find_what_p_points_to): CALLUSED shall not appear in poins-to
28993         solutions.
28994
28995 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
28996
28997         PR c/39323
28998         * c-common.c (handle_aligned_attribute): Properly check alignment
28999         overflow.  Use (1U << i) instead of (1 << i).
29000
29001         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
29002
29003         * expr.h (get_mem_align_offset): Updated.
29004
29005         * tree.h (tree_decl_common): Change align to "unsigned int" and
29006         move it before pointer_alias_set.
29007
29008 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29009             Jakub Jelinek  <jakub@redhat.com>
29010
29011         PR target/38034
29012         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
29013         gr_register_operand with gr_reg_or_0_operand.
29014         (cmpxchg_rel_di): Likewise.
29015         (sync_lock_test_and_set<mode>): Likewise.
29016
29017 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29018
29019         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
29020         (true_regnum): Likewise.
29021
29022         * rtlanal.c (subreg_info): Moved to ...
29023         * rtl.h (subreg_info): Here.  New.
29024         (subreg_get_info): New.
29025
29026         * rtlanal.c (subreg_get_info): Make it extern.
29027
29028 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29029
29030         PR target/39472
29031         * config/i386/i386.c (ix86_abi): New.
29032         (override_options): Handle -mabi=.
29033         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
29034         (ix86_call_abi_override): Likewise.
29035         (init_cumulative_args): Likewise.
29036         (function_arg_advance): Likewise.
29037         (function_arg_64): Likewise.
29038         (function_arg): Likewise.
29039         (ix86_pass_by_reference): Likewise.
29040         (ix86_function_value_regno_p): Likewise.
29041         (ix86_build_builtin_va_list_abi): Likewise.
29042         (setup_incoming_varargs_64): Likewise.
29043         (is_va_list_char_pointer): Likewise.
29044         (ix86_init_machine_status): Likewise.
29045         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
29046         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
29047         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
29048         (ix86_function_abi): Make it static and return enum calling_abi.
29049         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
29050         with ix86_abi.
29051         (ix86_fn_abi_va_list): Updated.
29052
29053         * config/i386/i386.h (ix86_abi): New.
29054         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
29055         (CONDITIONAL_REGISTER_USAGE): Likewise.
29056         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
29057         (machine_function): Likewise.
29058
29059         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
29060         with ix86_abi.
29061         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
29062         (STACK_BOUNDARY): Likewise.
29063         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
29064
29065         * config/i386/i386.opt (mabi=): New.
29066
29067         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
29068         return enum calling_abi.
29069         (ix86_function_type_abi): Likewise.
29070         (ix86_function_abi): Removed.
29071
29072         * doc/invoke.texi: Document -mabi= option for x86.
29073
29074 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29075
29076         * builtins.c (real_dconstp): Delete.
29077         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
29078
29079 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
29080             Jakub Jelinek  <jakub@redhat.com>
29081
29082         PR debug/37959
29083         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
29084         (gen_subprogram_die): When a function is explicit, generate the
29085         DW_AT_explicit attribute.
29086         * langhooks.h (struct lang_hooks_for_decls): Add
29087         function_decl_explicit_p langhook.
29088         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
29089         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
29090
29091 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
29092
29093         * builtins.c (fold_builtin_memory_op): Optimize memmove
29094         into memcpy if we can prove source and destination don't overlap.
29095
29096         * tree-inline.c: Include gt-tree-inline.h.
29097         (clone_fn_id_num): New variable.
29098         (clone_function_name): New function.
29099         (tree_function_versioning): Use it.
29100         * Makefile.in (GTFILES): Add tree-inline.c.
29101
29102 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
29103
29104         * BASE-VER: Change to 4.5.0.
29105
29106 2009-03-27  Xinliang David Li  <davidxl@google.com>
29107
29108         PR tree-optimization/39557
29109         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
29110
29111 2009-03-27  Xinliang David Li  <davidxl@google.com>
29112
29113         PR tree-optimization/39548
29114         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
29115         candidate check.
29116
29117 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29118
29119         * c-common.c (pointer_int_sum): Use %wd on return from
29120         tree_low_cst.
29121
29122 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
29123
29124         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
29125         on return from tree_low_cst.
29126
29127 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29128
29129         PR c++/36799
29130         * ginclude/stdarg.h (va_copy): Define also for
29131         __GXX_EXPERIMENTAL_CXX0X__.
29132
29133 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29134
29135         PR c++/35652
29136         * builtins.h (c_strlen): Do not warn here.
29137         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
29138         * c-common.c (pointer_int_sum): Take an explicit location.
29139         Warn about offsets out of bounds.
29140         * c-common.h (pointer_int_sum): Adjust declaration.
29141
29142 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29143
29144         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
29145         markup glitch.
29146
29147 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
29148
29149         PR c++/39554
29150         * opts.c (warn_if_disallowed_function_p): Don't assume
29151         get_callee_fndecl must return non-NULL.
29152
29153 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
29154
29155         PR rtl-optimization/39522
29156         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
29157         when reg_reloaded_valid is set.
29158
29159 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29160
29161         * config/spu/divv2df3.c: New file.
29162         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
29163         (DPBIT_FUNCS): Filter out _div_df.
29164
29165 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
29166
29167         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
29168         a jump insn, count that jump in the distance to the loop start.
29169
29170 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
29171
29172         PR target/39523
29173         * config/sh/sh.c (calc_live_regs): Fix condition for global
29174         registers except PIC_OFFSET_TABLE_REGNUM.
29175
29176 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
29177
29178         PR/39518
29179         * doc/invoke.texi (-mconsole): New.
29180         (-mcygwin): New.
29181         (-mno-cygwin): New.
29182         (-mdll): New.
29183         (-mnop-fun-dllimport): New.
29184         (-mthread): New.
29185         (-mwin32): New.
29186         (-mwindows): New.
29187         (sub section "i386 and x86-64 Windows Options"): New.
29188
29189 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
29190
29191         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
29192         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
29193
29194 2009-03-25  Richard Guenther  <rguenther@suse.de>
29195
29196         PR middle-end/39497
29197         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
29198         of -Wno-error.
29199
29200 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
29201
29202         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
29203         neither of haifa/selective schedulers are working.
29204
29205 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29206
29207         * doc/invoke.texi (Debugging Options): Fix description of
29208         -fno-merge-debug-strings.
29209
29210 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
29211
29212         * config/cris/libgcc.ver: New version-script.
29213         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
29214
29215         * configure.ac <GAS features, nop mnemonic>: Add pattern
29216         crisv32-*-* for "nop".
29217         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
29218         * configure: Regenerate.
29219
29220 2009-03-24  Ira Rosen  <irar@il.ibm.com>
29221
29222         PR tree-optimization/39529
29223         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
29224         mark_sym_for_renaming for the tag copied to the new vector
29225         pointer.
29226
29227 2009-03-24  Arthur Loiret  <aloiret@debian.org>
29228
29229         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
29230         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
29231         EXTRA_SPEC_FUNCTIONS.
29232         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
29233         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
29234         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
29235         -march and -mtune options.
29236
29237 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
29238
29239         * config/m68k/t-rtems: Add m5329 multilib.
29240
29241 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
29242             Jakub Jelinek  <jakub@redhat.com>
29243
29244         PR debug/39524
29245         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
29246         nodes.
29247
29248 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29249
29250         PR c/39495
29251         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
29252         instead of c_parser_expression_conv, if original_code isn't one of the
29253         4 allowed comparison codes, fail.
29254
29255 2009-03-23  Richard Guenther  <rguenther@suse.de>
29256
29257         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
29258         * tree.h (struct tree_type): Likewise.
29259         * reload.h (struct insn_chain): Likewise.
29260         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
29261         * function.h (struct function): Likewise.
29262         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
29263
29264 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
29265
29266         PR tree-optimization/39516
29267         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
29268
29269 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
29270
29271         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
29272         should be set true if BITS_PER_WORD of target is bigger than 32
29273
29274 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
29275
29276         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
29277         Translate -B-options to -rpath-link.  Correct existing
29278         rpath-link and conditionalize on !nostdlib.
29279
29280 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29281
29282         * doc/extend.texi (Function Attributes, Variable Attributes):
29283         Fix typos.
29284         * doc/invoke.texi (Debugging Options, Optimize Options)
29285         (i386 and x86-64 Options, MCore Options): Likewise.
29286
29287 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
29288
29289         PR debug/37890
29290         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
29291         it for block local namespace aliases.
29292         (gen_decl_die): Pass context_die to gen_namespace_die.
29293
29294 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29295
29296         PR c/39495
29297         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
29298         minimum or maximum value.
29299
29300 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
29301
29302         * reginfo.c (globalize_reg): Recompute derived reg sets.
29303
29304 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
29305
29306         PR target/39063
29307         * libgcc2.c (mprotect): Do not use signed arguments for
29308         VirtualProtect, use DWORD arguments.  Also fix the 'may
29309         be used uninitialized' warning for the np variable.
29310
29311 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
29312
29313         PR target/39496
29314         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
29315         functions using regparm calling conventions when not optimizing.
29316         (ix86_function_sseregparm): Similarly for sseregparm calling
29317         conventions.
29318
29319 2009-03-19  Li Feng  <nemokingdom@gmail.com>
29320
29321         PR middle-end/39500
29322         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
29323         dependence if the first conflict is after niter iterations.
29324
29325 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
29326
29327         PR middle-end/38609
29328         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
29329         functions with dynamic stack-pointer adjustments.
29330
29331 2009-03-19  Ben Elliston  <bje@au.ibm.com>
29332
29333         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
29334         option; change to -msdata=data.
29335
29336 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29337
29338         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
29339         and -fopenmp.
29340
29341 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
29342
29343         PR target/35180
29344         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
29345
29346 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
29347
29348         * doc/invoke.texi (Code Gen Options): Expand discussion of
29349         -fno-common.
29350
29351 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
29352
29353         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
29354         * matrix-reorg.c (struct matrix_info): Likewise.
29355         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
29356         * rtl.h (struct mem_attrs): Likewise.
29357         * df.h (struct df): Likewise.
29358         * tree-data-ref.h (struct data_dependence_relation): Likewise.
29359         * ira-int.h (struct ira_allocno): Likewise.
29360         * df-scan.c (struct df_collection_rec): Likewise.
29361         * ira.c (struct equivalence): Likewise.
29362         * function.c (struct temp_slot): Likewise.
29363         * cfgloop.h (struct loop): Likewise.
29364
29365         PR debug/39485
29366         * function.c (use_register_for_decl): When not optimizing, disregard
29367         register keyword for variables with types containing methods.
29368
29369 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
29370
29371         PR middle-end/39447
29372         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
29373         (is_simple_operand): Call contains_component_ref_p before calling data
29374         reference analysis that would fail on COMPONENT_REFs.
29375
29376         * tree-vrp.c (search_for_addr_array): Fix formatting.
29377
29378 2009-03-18  Richard Guenther  <rguenther@suse.de>
29379
29380         * tree-vect-transform.c (vect_loop_versioning): Fold the
29381         generated comparisons.
29382         * tree-vectorizer.c (set_prologue_iterations): Likewise.
29383         (slpeel_tree_peel_loop_to_edge): Likewise.
29384
29385 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29386
29387         PR middle-end/37805
29388         * opts.c (print_specific_help): In addition to `undocumented',
29389         accept `separate' and `joined' flags if passed alone.  Describe
29390         output by the first matched one of those.
29391         (common_handle_option): Skip over empty strings.
29392         * gcc.c (display_help): Fix help string for `--help='.
29393         * doc/invoke.texi (Option Summary, Overall Options): With
29394         `--help=', classes and qualifiers can both be repeated, but
29395         only the latter can be negated.  One should not pass only
29396         negated qualifiers.  Fix markup and examples.
29397
29398         Revert
29399         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
29400         PR middle-end/37805
29401         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
29402         and -fhelp=separate.
29403
29404 2009-03-17  Jing Yu  <jingyu@google.com>
29405
29406         PR middle-end/39378
29407         * function.h (struct rtl_data): Move is_thunk from here...
29408         (struct function): ...to here.
29409         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
29410         * varasm.c (assemble_start_function): Change is_thunk from crtl to
29411         cfun.
29412         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
29413         cfun.
29414         (alpha_does_function_need_gp, alpha_start_function): Likewise.
29415         (alpha_output_function_end_prologue): Likewise.
29416         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
29417         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
29418         (rs6000_output_function_epilogue): Likewise.
29419         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
29420
29421 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
29422
29423         PR target/39482
29424         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
29425         from different units in a single alternative.
29426         (*truncdfsf_i387): Ditto.
29427         (*truncxfsf2_mixed): Ditto.
29428         (*truncxfdf2_mixed): Ditto.
29429
29430 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
29431
29432         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
29433         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
29434
29435         PR debug/39474
29436         * tree-ssa-live.c (remove_unused_locals): Don't remove local
29437         unused non-artificial variables when not optimizing.
29438
29439         PR debug/39471
29440         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
29441         DW_TAG_imported_module even if decl is IMPORTED_DECL with
29442         NAMESPACE_DECL in its DECL_INITIAL.
29443
29444         PR middle-end/39443
29445         * optabs.c (set_user_assembler_libfunc): New function.
29446         * expr.h (set_user_assembler_libfunc): New prototype.
29447         * c-common.c: Include libfuncs.h.
29448         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
29449         for memcmp, memset, memcpy, memmove and abort.
29450         * Makefile.in (c-common.o): Depend on libfuncs.h.
29451
29452         PR debug/39412
29453         * dwarf2out.c (gen_inlined_enumeration_type_die,
29454         gen_inlined_structure_type_die, gen_inlined_union_type_die,
29455         gen_tagged_type_instantiation_die): Removed.
29456         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
29457         do nothing.
29458
29459 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
29460
29461         PR testsuite/38526
29462         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
29463         its use.
29464         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
29465         (check-parallel-%): Ditto.
29466         (check-consistency): Ditto.
29467
29468 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
29469
29470         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
29471         local variable rhs by NULL_TREE.
29472
29473 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29474
29475         PR target/39477
29476         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
29477
29478 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29479
29480         PR target/39476
29481         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
29482
29483 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
29484
29485         PR target/39473
29486         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
29487         for ms->sysv ABI calls only in 64bit mode.
29488
29489         * config/i386/i386.md (untyped_call): Support 32bit.
29490
29491 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
29492
29493         * doc/extend.texi: Replace x86_65 with x86_64.
29494
29495 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
29496
29497         PR tree-optimization/39455
29498         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
29499         mismatches for POINTER_TYPE_P (type).
29500         (number_of_iterations_le): Likewise.
29501
29502 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
29503
29504         * config/picochip/picochip.c: Removed profiling support.
29505         * config/picochip/picochip.md: Removed profiling instruction.
29506         * config/picochip/picochip.h: Removed profiling builtin.
29507
29508 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
29509
29510         * doc/install.texi (--with-host-libstdcxx): Document.
29511
29512 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
29513
29514         PR target/34299
29515         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
29516         generate a warning if the function name does not begin with
29517         "__vector" and the function has either the 'signal' or 'interrupt'
29518         attribute, from here to ...
29519         (avr_declare_function_name): ...here. New function.
29520         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
29521         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
29522
29523 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
29524
29525         PR bootstrap/39454
29526         * cse.c (fold_rtx): Don't modify original const_arg1 when
29527         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
29528         separate variable instead.
29529         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
29530         from out of range shift counts.
29531         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
29532
29533 2009-03-13  Catherine Moore  <clm@codesourcery.com>
29534
29535         * config/i386/x-mingw32 (host-mingw32.o): Replace
29536         diagnostic.h with $(DIAGNOSTIC_H).
29537
29538 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
29539
29540         PR target/39431
29541         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
29542         predicate.
29543         * config/i386/sync.md (sync_compare_and_swap<mode>,
29544         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
29545         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
29546         into a register.
29547         (sync_double_compare_and_swapdi_pic,
29548         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
29549         cmpxchg8b_pic_memory_operand instead of just memory_operand.
29550
29551 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29552
29553         PR target/39445
29554         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
29555
29556 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29557
29558         PR target/39327
29559         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29560         (avx_addsubv4df3): Likewise.
29561         (*avx_addsubv4sf3): Likewise.
29562         (sse3_addsubv4sf3): Likewise.
29563
29564 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
29565
29566         PR target/38824
29567         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
29568
29569 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
29570
29571         PR debug/39432
29572         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
29573         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
29574         registers for allocnos created from user-defined variables.
29575
29576 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29577
29578         PR target/39181
29579         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
29580         of non-integer mode as well.
29581
29582 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
29583
29584         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
29585         for functions for which the parameter types are unknown.
29586
29587 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
29588
29589         PR target/39137
29590         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
29591         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
29592         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
29593         * config/i386/i386.c (ix86_local_alignment): For
29594         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
29595         long long variables on the stack to avoid dynamic realignment.
29596         Allow the first argument to be a decl rather than type.
29597         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
29598
29599 2009-03-11  Nick Clifton  <nickc@redhat.com>
29600
29601         PR target/5362
29602         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
29603         options.
29604         Add description to mno-lsim option.
29605         * config/mcore/mcore.h: Remove comment about deprecated m4align
29606         option.
29607         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
29608         * doc/invoke.texi: Add description of mno-lsim and
29609         mstack-increment options.
29610
29611         * config/fr30/fr30.opt: Document the -mno-lsim option.
29612         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
29613         and -mno-lsim options.
29614
29615 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29616
29617         * fold-const.c (fold_comparison): Only call fold_inf_compare
29618         if the mode supports infinities.
29619
29620 2009-03-11  Jason Merrill  <jason@redhat.com>
29621
29622         PR debug/39086
29623         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
29624         end already did.  Notice GIMPLE_CALL modifications of the result.
29625         Don't copy debug information from an ignored decl or a decl from
29626         another function.
29627
29628 2009-03-10  Richard Guenther  <rguenther@suse.de>
29629             Nathan Froyd  <froydnj@codesourcery.com>
29630
29631         PR middle-end/37850
29632         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
29633         (__divMODE3): Likewise.
29634
29635 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
29636
29637         PR tree-optimization/39394
29638         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
29639         DECL_SIZE_UNIT of variable length FIELD_DECLs.
29640
29641 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
29642
29643         * recog.c (verfiy_changes): Disallow renaming of hard regs in
29644         inline asms for register asm ("") declarations.
29645
29646 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
29647
29648         * fold-const.c (fold_unary): Fix comment.
29649
29650 2009-03-07  Jan Hubicka  <jh@suse.cz>
29651
29652         PR target/39361
29653         * tree-inline.c (setup_one_parameter): Do replacement of const
29654         argument by constant in SSA form.
29655
29656 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29657
29658         PR middle-end/38028
29659         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
29660         determine alignment passed to assign_stack_local.
29661         (assign_parms_unsplit_complex): Likewise.
29662         * except.c (sjlj_build_landing_pads): Likewise.
29663
29664 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29665
29666         PR middle-end/39360
29667         * tree-flow.h (add_referenced_var): Return bool instead of void.
29668         * tree-dfa.c (add_referenced_var): Return result of
29669         referenced_var_check_and_insert call.
29670         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
29671         of referenced_var_check_and_insert.
29672
29673         PR debug/39372
29674         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
29675         (gen_variable_die): Emit DW_AT_location on abstract static variable's
29676         DIE, don't emit it if abstract origin already has it.
29677         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
29678         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
29679
29680 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
29681
29682         * genpreds.c (needs_variable): Fix parentheses at variable name
29683         detection.
29684         (write_tm_constrs_h): Indent generated code.
29685
29686 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29687
29688         * doc/extend.texi (Function Attributes): Add documentation
29689         for isr attributes.
29690
29691 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
29692
29693         PR debug/39387
29694         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
29695         take locus from its DECL_SOURCE_LOCATION instead of input_location.
29696
29697 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
29698
29699         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
29700         the loop as bad.
29701
29702 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
29703
29704         PR debug/39379
29705         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
29706         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
29707
29708 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
29709
29710         * config/i386/i386.md (R8_REG, R9_REG): New constants.
29711         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
29712         constants instead of magic numbers.
29713         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
29714         (QI_REG_P): Ditto.
29715         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
29716         (x86_64_ms_abi_int_parameter_registers): Ditto.
29717         (x86_64_int_return_registers): Ditto.
29718         (ix86_maybe_switch_abi): Ditto.
29719         (ix86_expand_call): Ditto for clobbered_registers array.
29720         (ix86_hard_regno_mode_ok): Ditto.
29721         (x86_extended_QIreg_mentioned_p): Ditto.
29722
29723 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
29724
29725         PR tree-optimization/39349
29726         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
29727
29728         * combine.c (gen_lowpart_for_combine): Use omode when generating
29729         clobber.
29730
29731 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
29732
29733         PR rtl-optimization/39235
29734         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
29735
29736 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29737
29738         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
29739
29740 2009-03-04  Richard Guenther  <rguenther@suse.de>
29741
29742         PR tree-optimization/39362
29743         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
29744         that occur in abnormal PHIs should be varying.
29745
29746 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
29747
29748         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
29749         Extend comments.
29750         (simple_iv):  Take loop as an argument instead of statement.
29751         * tree-scalar-evolution.h (simple_iv): Declaration changed.
29752         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
29753         to simple_iv.
29754         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
29755         Ditto.
29756         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
29757         * matrix-reorg.c (analyze_transpose): Ditto.
29758         * tree-data-ref.c (dr_analyze_innermost): Ditto.
29759         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
29760         * tree-predcom.c (ref_at_iteration): Ditto.
29761         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
29762
29763 2009-03-04  Richard Guenther  <rguenther@suse.de>
29764
29765         PR tree-optimization/39358
29766         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
29767         escaped_id and callused_id.
29768         (solve_graph): Likewise.
29769
29770 2009-03-04  Richard Guenther  <rguenther@suse.de>
29771
29772         PR tree-optimization/39339
29773         * tree-sra.c (try_instantiate_multiple_fields): Make it
29774         no longer ICE on the above.
29775
29776 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
29777
29778         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
29779         that fits within Pmode.
29780
29781 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29782
29783         PR middle-end/10109
29784         * tm.texi (LIBCALL_VALUE): Update description.
29785
29786 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
29787
29788         PR middle-end/34443
29789         * doc/extend.texi (section): Update description.
29790
29791 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
29792
29793         PR middle-end/39345
29794         * tree-inline.c (remapped_type): New.
29795         (can_be_nonlocal): Call remapped_type instead of remap_type.
29796
29797 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29798
29799         PR fortran/39354
29800         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
29801         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
29802
29803 2009-03-03  Richard Guenther  <rguenther@suse.de>
29804
29805         PR middle-end/39272
29806         * tree.c (tree_nonartificial_location): New function.
29807         * tree.h (tree_nonartificial_location): Declare.
29808         * builtins.c (expand_builtin_memory_chk): Provide location
29809         of the call location for artificial function pieces.
29810         (maybe_emit_chk_warning): Likewise.
29811         (maybe_emit_sprintf_chk_warning): Likewise.
29812         (maybe_emit_free_warning): Likewise.
29813         * expr.c (expand_expr_real_1): Likewise.
29814
29815 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
29816
29817         PR tree-optimization/39343
29818         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
29819         COMPONENT_REF t has ARRAY_TYPE.
29820
29821 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
29822
29823         PR middle-end/39335
29824         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
29825         when the type precision of the induction variable should be
29826         larger than the type precision of nit.
29827         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
29828         * graphite.c (graphite_loop_normal_form): Same.
29829         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
29830
29831 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29832
29833         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
29834         (*call_1_rex64_ms_sysv): Use named constants instead of magic
29835         numbers to describe clobbered registers.
29836         (*call_value_0_rex64_ms_sysv): Ditto.
29837         * config/i386/mmx.md (mmx_emms): Ditto.
29838         (mmx_femms): Ditto.
29839
29840 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
29841
29842         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
29843         of ABI_64.
29844
29845 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
29846
29847         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
29848         (spu_section_type_flags): New function.
29849
29850 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
29851
29852         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
29853         reg_class_contents of FLOAT_REGS into a temporary.
29854
29855 2009-03-02  Richard Guenther  <rguenther@suse.de>
29856             Ira Rosen  <irar@il.ibm.com>
29857
29858         PR tree-optimization/39318
29859         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
29860         information to the vectorized statement.
29861
29862 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
29863
29864         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
29865         variable.  Use defined names instead of magic constants for REX SSE
29866         registers.
29867
29868 2009-03-01  Richard Guenther  <rguenther@suse.de>
29869
29870         PR tree-optimization/39331
29871         * omp-low.c (lower_send_shared_vars): Do not receive new
29872         values for the reference of DECL_BY_REFERENCE parms or results.
29873
29874 2009-03-01  Jan Hubicka  <jh@suse.cz>
29875
29876         PR debug/39267
29877         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
29878         BLOCK_NONLOCALIZED_VAR): New macros.
29879         (tree_block): Add nonlocalized_vars.
29880         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
29881         gen_decl_die): Add origin argument.  Allow generation of die with
29882         origin at hand only.
29883         (gen_member_die, gen_type_die_with_usage, force_decl_die,
29884         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
29885         of gen_*.
29886         (gen_block_die): Fix checking for unused blocks.
29887         (process_scope_var): Break out from .... ; work with origins only.
29888         (decls_for_scope) ... here; process nonlocalized list.
29889         (dwarf2out_ignore_block): Look for nonlocalized vars.
29890         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
29891         vars.
29892         (dump_scope_block): Dump them.
29893         * tree-inline.c (remap_decls): Handle nonlocalized vars.
29894         (remap_block): Likewise.
29895         (can_be_nonlocal): New predicate.
29896         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
29897
29898 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29899
29900         * configure: Regenerate.
29901
29902 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29903
29904         * optc-gen.awk: No need to duplicate option flags twice.
29905         Reuse help texts for duplicate options which do not have any.
29906
29907         * gcc.c (display_help): Document --version.
29908
29909         * gcc.c (main): If print_help_list and verbose_flag, ensure
29910         driver output comes before subprocess output.
29911
29912         * optc-gen.awk: Assign all remaining fields to help string,
29913         space-separated, for multi-line help in *.opt.
29914
29915         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
29916         -Wno-pedantic-ms-format is for MinGW targets only.
29917
29918         * doc/options.texi (Option file format): Fix bad indentation,
29919         restoring dropped sentence.
29920
29921 2009-02-28  Jan Hubicka  <jh@suse.cz>
29922
29923         * tree-inline.c (tree_function_versioning): Output debug info.
29924
29925 2009-02-28  Jan Hubicka  <jh@suse.cz>
29926
29927         PR debug/39267
29928         * tree-inline.c (setup_one_parameter): Do not copy propagate
29929         arguments when not optimizing.
29930
29931 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
29932
29933         PR target/39327
29934         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
29935         (avx_addsubv4df3): Likewise.
29936         (*avx_addsubv4sf3): Likewise.
29937         (sse3_addsubv4sf3): Likewise.
29938         (*avx_addsubv2df3): Likewise.
29939         (sse3_addsubv2df3): Likewise.
29940         (avx_unpckhps256): Correct item selectors.
29941         (avx_unpcklps256): Likewise.
29942         (avx_unpckhpd256): Likewise.
29943         (avx_unpcklpd256): Likewise.
29944
29945 2009-02-28  Jan Hubicka  <jh@suse.cz>
29946
29947         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
29948         static vars.
29949         (copy_arguments_for_versioning): If var is declared don't declare it.
29950         (tree_function_versioning): First setup substitutions and then copy
29951         args.
29952
29953 2009-02-27  Jan Hubicka  <jh@suse.cz>
29954
29955         PR debug/39267
29956         * cgraph.h (varpool_output_debug_info): Remove.
29957         * cgraphunit.c (varpool_output_debug_info): Remove.
29958         * dwarf2out.c (deferred_locations_struct): New struct
29959         (deferred_locations): New type.
29960         (deferred_locations_list): New static var.
29961         (deffer_location): New function.
29962         (gen_variable_die): Use it.
29963         (decls_for_scope): Output info on local static vars.
29964         (dwarf2out_finish): Process deferred locations.
29965         * varpool.c (varpool_output_debug_info): Remove.
29966
29967 2009-02-27  Jan Hubicka  <jh@suse.cz>
29968
29969         PR debug/39267
29970         * tree.h (TREE_PROTECTED): Fix comment.
29971         (BLOCK_HANDLER_BLOCK): Remove.
29972         (struct tree_block): Remove handler_block add body_block.
29973         (inlined_function_outer_scope_p): New.
29974         (is_body_block): Remove.
29975         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
29976         * dwarf2out.c (is_inlined_entry_point): Remove.
29977         (add_high_low_attributes): Use inlined_function_outer_scope_p.
29978         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
29979         code.
29980         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
29981         * gimplify.c (gimplify_expr): Gimplify body blocks.
29982         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
29983         block with multiple subblocks.
29984         (dump_scope_block): Prettier output; dump more flags and info.
29985         (dump_scope_blocks): New.
29986         (remove_unused_locals): Use dump_scope_blocks.
29987         * tree-flow.h (dump_scope_blocks): Declare.
29988         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
29989         * stmt.c (is_body_block): Remove.
29990         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
29991         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
29992
29993 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
29994
29995         PR middle-end/39308
29996         * graphite.c (graphite_loop_normal_form): Do not call
29997         number_of_iterations_exit from a gcc_assert.
29998
29999 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30000
30001         * config/s390/s390.c (s390_swap_cmp): Look for conditional
30002         jumps if COND is NULL.
30003         (find_cond_jump): New function.
30004         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
30005         * config/s390/s390.md: Remove z10_cobra attribute value.
30006
30007 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
30008
30009         * config/alpha/alpha.h (alpha_expand_mov): Return false if
30010         force_const_mem returns NULL_RTX.
30011
30012 2009-02-26  Jan Hubicka  <jh@suse.cz>
30013
30014         PR debug/39267
30015         * cgraph.h (varpool_output_debug_info): Remove.
30016         * cgraphunit.c (varpool_output_debug_info): Remove.
30017         * dwarf2out.c (deferred_locations_struct): New struct
30018         (deferred_locations): New type.
30019         (deferred_locations_list): New static var.
30020         (deffer_location): New function.
30021         (gen_variable_die): Use it.
30022         (decls_for_scope): Output info on local static vars.
30023         (dwarf2out_finish): Process deferred locations.
30024         * varpool.c (varpool_output_debug_info): Remove.
30025
30026 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
30027
30028         PR rtl-optimization/39241
30029         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
30030         to subreg_offset_representable_p.
30031
30032 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30033
30034         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
30035         execute function prototype.  Get f and nregs from max_reg_num
30036         and get_insns.  Remove the first backward pass as it's dead,
30037         guard the forward pass by flag_expensive_optimizations.
30038         (rest_of_handle_regmove): Delete.
30039         (pass_regmove): Replace it with regmove_optimize.
30040
30041 2009-02-25  Martin Jambor  <mjambor@suse.cz>
30042
30043         PR tree-optimization/39259
30044         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
30045         calls_alloca function flags.
30046         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
30047         calls are detected.
30048
30049 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
30050
30051         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
30052         flags_set_1_rtx, flags_set_1_set): Delete.
30053         (regmove_optimize): Do not call mark_flags_life_zones.
30054
30055 2009-02-24  Julian Brown  <julian@codesourcery.com>
30056
30057         PR target/35965
30058         * config/arm/arm.c (require_pic_register): Only set
30059         cfun->machine->pic_reg once per function.
30060
30061 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
30062
30063         * doc/invoke.texi (Link Options): Document an easier way to pass
30064         options that take arguments to the GNU linker using -Xlinker and -Wl.
30065
30066 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
30067
30068         PR target/33785
30069         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
30070
30071 2009-02-24  Richard Guenther  <rguenther@suse.de>
30072
30073         PR debug/39285
30074         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
30075
30076 2009-02-24  Richard Guenther  <rguenther@suse.de>
30077             Zdenek Dvorak  <ook@ucw.cz>
30078
30079         PR tree-optimization/39233
30080         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
30081         from converting them to a generic type.
30082
30083 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
30084
30085         PR tree-optimization/39260
30086         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
30087         contains a condition with a real type.
30088         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
30089
30090 2009-02-23  Jason Merrill  <jason@redhat.com>
30091
30092         PR c++/38880
30093         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
30094         narrowing_initializer_constant_valid_p.
30095         (narrowing_initializer_constant_valid_p): Don't return
30096         null_pointer_node for adding a pointer to itself.
30097
30098 2009-02-23  Jan Hubicka  <jh@suse.cz>
30099
30100         PR c/12245
30101         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
30102         resizing.
30103
30104 2009-02-23  Jan Hubicka  <jh@suse.cz>
30105
30106         PR tree-optimization/37709
30107         * tree.c (block_ultimate_origin): Move here from dwarf2out.
30108         * tree.h (block_ultimate_origin): Declare.
30109         * dwarf2out.c (block_ultimate_origin): Move to tree.c
30110         * tree-ssa-live.c (remove_unused_scope_block_p):
30111         Eliminate blocks containig no instructions nor live variables nor
30112         nested blocks.
30113         (dump_scope_block): New function.
30114         (remove_unused_locals): Enable removal of dead blocks by default;
30115         enable dumping at TDF_DETAILS.
30116
30117 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30118
30119         * config/i386/i386.c (classify_argument): Don't allow COImode
30120         and OImode.
30121         (function_arg_advance_32): Don't allow OImode.
30122         (function_arg_32): Likewise.
30123         (function_value_32): Likewise.
30124         (return_in_memory_32): Likewise.
30125         (function_arg_64): Remove OImode comment.
30126
30127 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30128
30129         PR target/39261
30130         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
30131         ix86_expand_vector_set for V4DImode in 64bit mode only.
30132         (ix86_expand_vector_init_one_var): Likewise.
30133
30134 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
30135
30136         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
30137
30138 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30139
30140         PR bootstrap/39257
30141         * loop-iv.c: Revert last change.
30142         * emit-rtl.c: Likewise.
30143
30144 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
30145
30146         PR target/39256
30147         * config/i386/i386.c (type_natural_mode): Remove an extra
30148         space in the warning message.
30149         (function_value_32): Handle 32-byte vector modes.
30150         (return_in_memory_32): Likewise.
30151
30152 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
30153
30154         * loop-iv.c (truncate_value): New function.
30155         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
30156         of lowpart_subreg.
30157         (lowpart_subreg): Move to...
30158         * emit-rtl.c: ...here.
30159
30160 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
30161
30162         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
30163         accidental and undocumented change at revision 140860.
30164
30165 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
30166
30167         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
30168         take gimple_seq * arguments.
30169         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
30170         types_compatible_p langhook.
30171
30172 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
30173             Joseph Myers  <joseph@codesourcery.com>
30174
30175         * config/arm/arm.c (arm_builtin_va_list): New function.
30176         (arm_expand_builtin_va_start): Likewise.
30177         (arm_gimplify_va_arg_expr): Likewise.
30178         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
30179         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
30180         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
30181         (va_list_type): New variable.
30182         (arm_mangle_type): Mangle va_list_type appropriately.
30183
30184 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30185
30186         PR middle-end/39157
30187         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
30188         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
30189         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
30190         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
30191         parameter to 1000 for -O1 by default.
30192         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
30193         parameter.
30194         * loop-invariant.c: Include params.h.
30195         (move_loop_invariants): Don't call move_single_loop_invariants on
30196         very large loops.
30197
30198 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
30199
30200         * calls.c (emit_library_call_value_1): Use slot_offset instead of
30201         offset when calculating bounds for indexing stack_usage_map.  Fixes
30202         a buffer overflow with certain target setups.
30203
30204 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
30205
30206         PR target/39240
30207         * calls.c (expand_call): Clear try_tail_call if caller and callee
30208         disagree in promotion of function return value.
30209
30210 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
30211
30212         PR target/39175
30213         * c-common.c (c_determine_visibility): If visibility changed and
30214         DECL_RTL has been already set, call make_decl_rtl to update symbol
30215         flags.
30216
30217 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
30218
30219         PR c++/39188
30220         * varasm.c (assemble_variable): Don't check DECL_NAME when
30221         globalizing a variable.
30222
30223 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
30224
30225         PR c/38483
30226         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
30227         expression before any __builtin_trap call.
30228         * c-typeck.c (build_function_call): Convert and check function
30229         arguments before generating a call to a trap.  Evaluate the
30230         function arguments before the trap.
30231
30232 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
30233
30234         PR target/39228
30235         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
30236         (UNSPEC_FXAM_MEM): New unspec.
30237         (fxam<mode>2_i387_with_temp): New insn and split pattern.
30238         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
30239         memory using fxam<mode>2_i387_with_temp to remove excess precision.
30240
30241 2009-02-19  Richard Guenther  <rguenther@suse.de>
30242
30243         PR tree-optimization/39207
30244         PR tree-optimization/39074
30245         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
30246         storedanything_tree): New.
30247         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
30248         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
30249         (build_succ_graph): Add edges from STOREDANYTHING to all
30250         non-direct nodes.
30251         (init_base_vars): Initialize STOREDANYTHING.
30252         (compute_points_to_sets): Free substitution info after
30253         building the succ graph.
30254         (ipa_pta_execute): Likewise.
30255
30256         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
30257         field.
30258         (do_ds_constraint): Do not add to special var or non-pointer
30259         field solutions.
30260         (type_could_have_pointers): Split out from ...
30261         (could_have_pointers): ... here.  For arrays use the element type.
30262         (create_variable_info_for): Initialize may_have_pointers.
30263         (new_var_info): Likewise.
30264         (handle_lhs_call): Make the HEAP variable unknown-sized.
30265         (intra_create_variable_infos): Use a type with pointers for
30266         PARM_NOALIAS, make it unknown-sized.
30267
30268 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
30269
30270         PR target/39224
30271         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
30272
30273 2009-02-18  Jason Merrill  <jason@redhat.com>
30274
30275         PR target/39179
30276         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
30277         value if DECL_EXTERNAL.
30278         * tree-sra.c (sra_walk_gimple_assign): Likewise.
30279         * target.h (gcc_target::binds_local_p): Clarify "module".
30280         * tree.h (TREE_PUBLIC): Clarify "module".
30281
30282 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
30283
30284         PR target/38891
30285         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
30286         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
30287
30288 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
30289
30290         PR target/39082
30291         * c.opt (Wabi): Support C and ObjC.
30292         (Wpsabi): New.
30293
30294         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
30295
30296         * config/i386/i386.c (classify_argument): Warn once about the ABI
30297         change when passing union with long double.
30298
30299         * doc/invoke.texi: Update -Wabi for warning psABI changes.
30300
30301 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
30302
30303         PR c/35447
30304         * c-parser.c (c_parser_compound_statement): Always enter and leave
30305         a scope.
30306
30307 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30308
30309         PR target/34587
30310         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
30311
30312 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
30313
30314         PR tree-optimization/36922
30315         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
30316         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
30317         Likewise.
30318
30319 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30320
30321         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
30322         to 0 for EABI64.
30323
30324 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30325
30326         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
30327
30328 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
30329
30330         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
30331         tree sharing.
30332
30333 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
30334             Richard Sandiford  <rdsandiford@googlemail.com>
30335
30336         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
30337         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
30338         (loongson_biadd): ...this.
30339
30340 2009-02-17  Richard Guenther  <rguenther@suse.de>
30341
30342         PR tree-optimization/39202
30343         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
30344         a var make sure to follow existing collapses.
30345
30346 2009-02-17  Richard Guenther  <rguenther@suse.de>
30347
30348         PR middle-end/39214
30349         * langhooks.c (lhd_print_error_function): Check for NULL block.
30350
30351 2009-02-17  Richard Guenther  <rguenther@suse.de>
30352
30353         PR tree-optimization/39204
30354         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
30355         of the PHI arg.
30356
30357 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
30358
30359         * config/soft-fp/double.h: Update from glibc CVS.
30360
30361 2009-02-17  Richard Guenther  <rguenther@suse.de>
30362
30363         PR tree-optimization/39207
30364         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
30365         strict-aliasing warnings for pointers pointing to NULL.
30366
30367 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
30368
30369         PR c/35446
30370         * c-parser.c (c_parser_braced_init): Call pop_init_level when
30371         skipping until next close brace.
30372
30373 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
30374
30375         PR target/37049
30376         * config/i386/i386.c (ix86_expand_push): Set memory alignment
30377         to function argument boundary.
30378
30379 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30380
30381         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
30382         in the lea_add. Reload eventually constraints it properly.
30383         * config/picochip/constraints.md: Remove the target constraint
30384         "b", since it is not needed anymore.
30385
30386 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
30387
30388         * gthr-dce.h: Uglify function parameter and local variable names.
30389         * gthr-gnat.h: Likewise.
30390         * gthr-mipssde.h: Likewise.
30391         * gthr-nks.h: Likewise.
30392         * gthr-posix95.h: Likewise.
30393         * gthr-posix.h: Likewise.
30394         * gthr-rtems.h: Likewise.
30395         * gthr-single.h: Likewise.
30396         * gthr-solaris.h: Likewise.
30397         * gthr-tpf.h: Likewise.
30398         * gthr-vxworks.h: Likewise.
30399         * gthr-win32.h: Likewise.
30400
30401 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
30402
30403         PR target/39196
30404         * config/i386/i386.md: Restrict the new peephole2 to move
30405         between MMX/SSE registers.
30406
30407 2009-02-15  Richard Guenther  <rguenther@suse.de>
30408
30409         Revert
30410         2009-02-13  Richard Guenther  <rguenther@suse.de>
30411
30412         * configure.ac: Enable LFS.
30413         * configure: Re-generate.
30414         * config.in: Likewise.
30415
30416 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30417
30418         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
30419         spu_srqwbyte, spu_srqwbytebc): Define.
30420         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
30421         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
30422         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
30423         "shrqby_<mode>"): New insn-and-split patterns.
30424         * config/spu/spu.c (expand_builtin_args): Determine and return
30425         number of operands using spu_builtin_description data.
30426         (spu_expand_builtin_1): Use it.
30427
30428 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
30429
30430         PR target/38056
30431         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
30432         TARGET_CONST_GP.
30433
30434 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30435
30436         PR target/39149
30437         * config/i386/i386.c (override_options): Correct warning
30438         messages for -malign-loops, -malign-jumps and -malign-functions.
30439
30440 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30441
30442         PR target/39152
30443         * config/i386/i386.md: Restrict the new peephole2 to move
30444         between the general purpose registers.
30445
30446 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
30447
30448         PR target/39162
30449         * config/i386/i386.c (type_natural_mode): Add a new argument.
30450         Return the original mode and warn ABI change if vector size is 32byte.
30451         (function_arg_advance): Updated.
30452         (function_arg): Likewise.
30453         (ix86_function_value): Likewise.
30454         (ix86_return_in_memory): Likewise.
30455         (ix86_sol10_return_in_memory): Likewise.
30456         (ix86_gimplify_va_arg): Likewise.
30457         (function_arg_32): Don't warn ABX ABI change here.
30458         (function_arg_64): Likewise.
30459
30460 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
30461
30462         * loop-iv.c (implies_p): In the final case, test that operands 0
30463         of the two comparisons match.
30464
30465         * config/bfin/bfin.c (find_prev_insn_start): New function.
30466         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
30467         (find_next_insn_start): Move.
30468
30469 2009-02-13  Richard Guenther  <rguenther@suse.de>
30470
30471         * configure.ac: Enable LFS.
30472         * configure: Re-generate.
30473         * config.in: Likewise.
30474
30475 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
30476
30477         PR c/35444
30478         * c-parser.c (c_parser_parms_list_declarator): Discard pending
30479         sizes on syntax error after some arguments have been parsed.
30480
30481 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30482
30483         * doc/invoke.texi (-fira): Remove.
30484
30485 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30486
30487         * caller-save.c: Replace regclass.c with reginfo.c in comments.
30488         * recog.c: Likewise.
30489         * rtl.h: Likewise.
30490
30491 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
30492
30493         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
30494         (umul_ppmm): Likewise.
30495         (count_leading_zeros): Likewise.
30496         (count_trailing_zeros): Likewise.
30497         (UMUL_TIME): Likewise.
30498
30499 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30500
30501         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
30502         soft-fp/t-softfp to tmake_file.
30503
30504         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
30505         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
30506         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
30507         IA64_BUILTIN_INFQ]: New.
30508         (ia64_init_builtins): Initialize __builtin_infq,
30509         __builtin_fabsq and __builtin_copysignq if not HPUX.
30510         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
30511         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
30512
30513         * config/ia64/lib1funcs.asm (__divtf3): Define only if
30514         SHARED is defined.
30515         (__fixtfti): Likewise.
30516         (__fixunstfti): Likewise.
30517         (__floattitf): Likewise.
30518
30519         * config/ia64/libgcc-glibc.ver: New.
30520         * config/ia64/t-fprules-softfp: Likewise.
30521         * config/ia64/sfp-machine.h: Likewise.
30522
30523         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
30524         (LIBGCC2_TF_CEXT): Likewise.
30525         (TF_SIZE): Likewise.
30526         (TARGET_INIT_LIBFUNCS): Likewise.
30527
30528         * config/ia64/t-glibc (SHLINB_MAPFILES):
30529         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
30530
30531 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
30532
30533         * config/i386/i386.c (construct_container): Rewrite processing
30534         BLKmode with X86_64_SSE_CLASS.
30535
30536 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
30537
30538         PR target/39152
30539         * config/i386/i386.md: Replace simplify_replace_rtx with
30540         replace_rtx in the new peephole2.
30541
30542 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
30543
30544         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
30545         loop unrolling do not happen at -O2.
30546
30547 2009-02-12  Michael Matz  <matz@suse.de>
30548
30549         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
30550
30551 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
30552
30553         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
30554         for -g3.
30555
30556 2009-02-12  Ben Elliston  <bje@au.ibm.com>
30557
30558         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
30559         patterns when updating the back chain.  Missed in the 2009-02-10
30560         change.
30561
30562 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
30563
30564         * doc/extend.texi (Decimal Floating Types): Update identifier of
30565         draft TR and list of missing support.
30566
30567 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
30568
30569         PR middle-end/39154
30570         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
30571         bit to variable length decl's flags, add it also to its
30572         pointer replacement variable.
30573
30574 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
30575             Jakub Jelinek  <jakub@redhat.com>
30576
30577         PR target/39118
30578         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
30579         (memory_blockage): New expander.
30580         (*memory_blockage): New insn pattern.
30581         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
30582         instead of general blockage at the end of function prologue when
30583         frame pointer is used to access red zone area.  Do not emit blockage
30584         when profiling, it is emitted in generic code.
30585         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
30586         function epilogue when frame pointer is used to access red zone area.
30587
30588 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
30589
30590         PR target/38824
30591         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
30592         by arithmetic with memory operands.
30593         * config/i386/predicates.md (commutative_operator): New.
30594
30595 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
30596
30597         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
30598         bulleted lists.
30599
30600 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
30601
30602         * alias.h (record_alias_subset): Declare.
30603         * alias.c (record_alias_subset): Make global.
30604
30605 2009-02-10  Nick Clifton  <nickc@redhat.com>
30606
30607         * tree-parloops.c: Change license to GPLv3.
30608         * ipa-struct-reorg.c: Change license to GPLv3.
30609         * ipa-struct-reorg.h: Change license to GPLv3.
30610
30611 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
30612
30613         PR c/39084
30614         * c-decl.c (start_struct): Return NULL on error.
30615
30616 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
30617
30618         PR middle-end/39124
30619         * cfgloopmanip.c (remove_path): Call remove_bbs after
30620         cancel_loop_tree, not before it.
30621
30622         PR target/39139
30623         * function.h (struct function): Add has_local_explicit_reg_vars bit.
30624         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
30625         VAR_DECLs were seen.
30626         * tree-ssa-live.c (remove_unused_locals): Recompute
30627         cfun->has_local_explicit_reg_vars.
30628         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
30629         copies or clearings if cfun->has_local_explicit_reg_vars.
30630
30631 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
30632
30633         PR target/39118
30634         * config/i386/i386.c (expand_prologue): Emit blockage at the end
30635         of function prologue when frame pointer is used to access
30636         red zone area.
30637
30638 2009-02-10  Richard Guenther  <rguenther@suse.de>
30639
30640         PR middle-end/39127
30641         * gimplify.c (gimple_regimplify_operands): Always look if
30642         we need to create a temporary.
30643
30644 2009-02-10  Richard Guenther  <rguenther@suse.de>
30645
30646         PR tree-optimization/39132
30647         * tree-loop-distribution.c (todo): New global var.
30648         (generate_memset_zero): Trigger TODO_rebuild_alias.
30649         (tree_loop_distribution): Return todo.
30650
30651 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
30652
30653         PR target/39119
30654         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
30655         (x86_64_reg_class_name): Removed.
30656         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
30657         first one isn't X86_64_SSE_CLASS or any other ones aren't
30658         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
30659         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
30660         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
30661         and 3 X86_64_SSEUP_CLASS.
30662         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
30663         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
30664
30665 2009-02-10  Ben Elliston  <bje@au.ibm.com>
30666
30667         * config/rs6000/rs6000.md (allocate_stack): Always use an update
30668         form instruction to update the stack back chain word, even if the
30669         user has disabled the generation of update instructions.
30670         (movdi_<mode>_update_stack): New.
30671         (movsi_update_stack): Likewise.
30672         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
30673         always use an update form instruction to update the stack back
30674         chain word.
30675
30676 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
30677
30678         PR middle-end/38953
30679         * graphite.c (if_region_set_false_region): After moving a region in
30680         the false branch of a condition, remove the empty dummy basic block.
30681         (gloog): Remove wrong fix for PR38953.
30682
30683 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30684
30685         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
30686         generation due to implicit sign extension.
30687
30688 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
30689
30690         PR middle-end/38981
30691         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
30692         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
30693
30694 2009-02-09  Richard Guenther  <rguenther@suse.de>
30695
30696         PR middle-end/35202
30697         * convert.c (convert_to_real): Disable (float)fn((double)x)
30698         to fnf(x) conversion if errno differences may occur and
30699         -fmath-errno is set.
30700
30701 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
30702
30703         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
30704         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30705         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
30706
30707 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30708
30709         PR c/35434
30710         * c-common.c (handle_alias_attribute): Disallow attribute for
30711         anything not a FUNCTION_DECL or VAR_DECL.
30712
30713 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
30714
30715         PR c/39035
30716         * real.c (do_compare): Special-case compare of zero against
30717         decimal float value.
30718
30719 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
30720
30721         PR c/36432
30722         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
30723         as indicating flexible array members unless the field itself is
30724         being declarared as the incomplete array.
30725
30726 2009-02-06  Jan Hubicka  <jh@suse.cz>
30727
30728         PR tree-optimization/38844
30729         * ipa-inline.c (try_inline): Stop inlining recursion when edge
30730         is already inlined.
30731
30732 2009-02-06  Richard Guenther  <rguenther@suse.de>
30733
30734         PR middle-end/38977
30735         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
30736         fork because we may expand it as __gcov_fork.
30737
30738 2009-02-06  Nick Clifton  <nickc@redhat.com>
30739
30740         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
30741
30742 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
30743
30744         PR tree-optimization/35659
30745         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
30746         vn_phi_eq): Shortcut if hashcode does not match.
30747         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
30748         NULL operands.
30749         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
30750         and avoid iterative_hash_expr.
30751         (FOR_EACH_VALUE_ID_IN_SET): New.
30752         (value_id_compare): Remove.
30753         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
30754         sort expressions by value id.
30755
30756 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
30757
30758         PR target/38991
30759         * config/sh/predicates.md (general_movsrc_operand): Don't check
30760         the subreg of system registers here.
30761
30762 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
30763
30764         PR c++/39106
30765         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
30766         on the copied decl.
30767
30768 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
30769
30770         PR rtl-optimization/39110
30771         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
30772         addresses, not aligned ones.
30773
30774 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
30775             Richard Guenther  <rguenther@suse.de>
30776
30777         PR tree-optimization/39100
30778         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
30779         comment says and add edges.
30780
30781 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
30782
30783         PR c/35435
30784         * c-common.c (handle_tls_model_attribute): Ignore attribute for
30785         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
30786
30787 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
30788
30789         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
30790         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
30791         register_bb_in_sese, new_sese, free_sese): Moved.
30792         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
30793         outermost_loop_in_scop, build_scop_iteration_domain,
30794         expand_scalar_variables_ssa_name, get_vdef_before_scop,
30795         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
30796         Use loop_in_sese_p instead of loop_in_scop_p.
30797         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
30798         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
30799         (scopdet_basic_block_info): Fix bug in scop detection.
30800         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
30801         eq_loop_to_cloog_loop): Remove.
30802         (nb_loops_around_loop_in_scop, nb_loop
30803         ref_nb_loops): Moved here...
30804         * graphite.h (ref_nb_loops): ... from here.
30805         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
30806         (loop_domain_dim, loop_iteration_vector_dim): Remove.
30807         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
30808
30809 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
30810             Hans-Peter Nilsson  <hp@axis.com>
30811
30812         PR rtl-optimization/37889
30813         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
30814         Move offset handling from PLUS to before the switch.  Use new
30815         arguments when considering SYMBOL_REFs too.
30816         (rtx_addr_can_trap_p): Pass dummy offset and size.
30817         (enum may_trap_p_flags): Remove.
30818         (may_trap_p_1): Pass size from MEM_SIZE.
30819
30820         PR rtl-optimization/38921
30821         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
30822         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
30823         * rtlanal.c (may_trap_after_code_motion_p): Delete.
30824         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
30825
30826 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
30827
30828         AVX Programming Reference (January, 2009)
30829         * config/i386/sse.md (*vpclmulqdq): New.
30830
30831 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
30832
30833         PR tree-optimization/38977
30834         PR gcov-profile/38292
30835         * calls.c (special_function_p): Disregard __builtin_ prefix.
30836
30837 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
30838
30839         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
30840         non-indexable addresses even before reload.
30841
30842 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30843
30844         PR c/29129
30845         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
30846         as having variable size.  Do not give an error for unnamed
30847         parameters with [*] declarators.  Give a warning for type names
30848         with [*] declarators and mark them as variable size.
30849         * c-parser.c (c_parser_sizeof_expression): Do not give an error
30850         for sizeof applied to [*] type names.
30851
30852 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30853
30854         PR C++/36607
30855         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
30856
30857 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30858
30859         * gcc.c (process_command): Update copyright notice dates.
30860         * gcov.c (print_version): Likewise.
30861         * gcov-dump.c (print_version): Likewise.
30862         * mips-tfile.c (main): Likewise.
30863         * mips-tdump.c (main): Likewise.
30864
30865 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
30866
30867         PR c/35433
30868         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
30869         for composite type involving a zero-length array type.
30870
30871 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
30872
30873         PR target/35318
30874         * function.c (match_asm_constraints_1): Skip over
30875         initial optional % in the constraint.
30876
30877         PR inline-asm/39059
30878         * c-parser.c (c_parser_postfix_expression): If fixed point is not
30879         supported, don't accept FIXED_CSTs.
30880         * c-decl.c (finish_declspecs): Error if fixed point is not supported
30881         and _Sat is used without _Fract/_Accum.  Set specs->type to
30882         integer_type_node for cts_fract/cts_accum if fixed point is not
30883         supported.
30884
30885 2009-02-02  Catherine Moore  <clm@codesourcery.com>
30886
30887         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
30888
30889 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
30890
30891         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
30892         (ABI_HAS_64BIT_SYMBOLS): Use it.
30893         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
30894
30895 2009-02-02  Paul Brook  <paul@codesourcery.com>
30896
30897         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
30898
30899 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
30900
30901         PR inline-asm/39058
30902         * recog.h (asm_operand_ok): Add constraints argument.
30903         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
30904         recurse on matching constraint.
30905         (check_asm_operands): Pass constraints as 3rd argument to
30906         asm_operand_ok.  Don't look up matching constraint here.
30907         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
30908         to asm_operand_ok.
30909
30910 2009-02-02  Ben Elliston  <bje@au.ibm.com>
30911
30912         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
30913         TARGET_NARROW_VOLATILE_BITFIELD macro names.
30914
30915 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30916
30917         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
30918         information.  Remove some obsolete information.  Reorganize.
30919
30920         * config/pa/fptr.c: Revert license to GPL 2.
30921         * config/pa/milli64.S: Likewise.
30922
30923 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30924
30925         PR target/38904
30926         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
30927         LIBRARY name in, instead of hard-coding it.
30928         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
30929         extra target make frag to tmake_files according to EH model.
30930         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
30931         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
30932         frags that define makefile variable EH_MODEL appropriately.
30933         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
30934         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
30935         to "-sjlj" according to type of EH configured.
30936         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30937         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
30938         to "_sjlj" according to type of EH configured.
30939         (LIBGCC_SONAME):  Concatenate it to shared library base name.
30940         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
30941         (SHLIB_LINK):  Add missing semicolon to if-else construct.
30942         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30943         string value of "pe_dll" command-line option.
30944         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
30945         (SHLIB_SONAME):  Use it when overriding t-cygming default.
30946         (SHLIB_IMPLIB):  Override t-cygming default.
30947         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
30948         string value of "pe_dll" command-line option.
30949
30950 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
30951
30952         PR target/38952
30953         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
30954         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
30955
30956 2009-01-31  Richard Guenther  <rguenther@suse.de>
30957
30958         PR tree-optimization/38937
30959         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
30960         computing the transitive closure.
30961
30962 2009-01-30  Richard Guenther  <rguenther@suse.de>
30963
30964         PR tree-optimization/39041
30965         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
30966         Propagate variable indices only if the types match for this stmt.
30967
30968 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
30969
30970         PR target/39013
30971         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
30972         inline but never defined.
30973
30974 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
30975
30976         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
30977         (*insv_h_di_reg_extimm): New insn.
30978         (*insv_l<mode>_reg_extimm): New insn.
30979
30980 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30981
30982         * config/picochip/picochip.c (flag_conserve_stack): set
30983         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
30984         fconserve-stack. Reduce call-overhead used by inliner.
30985
30986 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
30987
30988         PR/38157
30989         * common.opt (flag_conserve_stack): Initialised to zero.
30990
30991 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
30992
30993         PR/39002
30994         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
30995         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
30996         method.
30997
30998 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
30999
31000         * ira-color.c (allocno_reload_assign): Update comments.
31001         * regmove.c (regmove_optimize): Likewise.
31002
31003         * ra.h: Removed.
31004
31005 2009-01-29  Robert Millan  <rmh@aybabtu.com>
31006
31007         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
31008         * config/i386/kopensolaris-gnu.h: New file.  Undefine
31009         `MD_UNWIND_SUPPORT'.
31010         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
31011
31012 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
31013
31014         PR tree-optimization/39007
31015         * tree-loop-distribution.c (generate_builtin): Use
31016         recompute_dominator to compute the immediate dominator of the
31017         basic block just after the loop.
31018
31019 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
31020
31021         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
31022         (ASM_OUTPUT_DWARF_PCREL): Define.
31023
31024 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
31025
31026         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
31027         * doc/passes.texi: Remove entries about regclass, local-alloc, and
31028         global.  Modify entries about regmove and IRA.
31029
31030         * ra-conflict.c: Remove the file.
31031
31032         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
31033
31034         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
31035         (pass_regclass_init): Rename to pass_reginfo_init.
31036
31037         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
31038
31039         * toplev.h (flag_ira): Remove.
31040
31041         * caller-save.c (setup_save_areas): Remove flag_ira.
31042
31043         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
31044
31045         * global.c: Remove the file.
31046
31047         * opts.c (decode_options): Remove flag_ira.
31048
31049         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
31050
31051         * regmove.c: Modify file description.
31052         (find_use_as_address, try_auto_increment): Define them only if
31053         AUTO_INC_DEC is defined.
31054         (replacement_quality, replace_in_call_usage, fixup_match_1,
31055         stable_and_no_regs_but_for_p): Remove.
31056         (reg_set_in_bb): Make it static.
31057         (regmove_optimize): Remove flag_ira and code which worked for
31058         !flag_ira.
31059
31060         * local-alloc.c: Remove the file.
31061
31062         * common.opt (fira): Remove.
31063
31064         * ira.c: Include except.h.
31065         (eliminable_regset): Move from global.c.
31066         (mark_elimination): Ditto.  Remove flag_ira.
31067         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
31068         equiv_mem_modified, validate_equiv_mem_from_store,
31069         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
31070         contains_replace_regs, memref_referenced_p, memref_used_between_p,
31071         no_equiv, recorded_label_ref): Move from local-alloc.c.
31072         (update_equiv_regs): Ditto.  Make it static.
31073         (print_insn_chain, print_insn_chains): Move it from global.c.
31074         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
31075         (build_insn_chain): Ditto.  Make it static.
31076         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
31077         Rename to init_live_subregs.
31078         (gate_ira): Remove flag_ira.
31079
31080         * regclass.c: Rename reginfo.c.  Change file description.
31081         (FORBIDDEN_INC_DEC_CLASSES): Remove.
31082         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
31083         (init_reg_sets_1): Remove code for evaluation of
31084         reg_class_superclasses and losing_caller_save_reg_set.
31085         (init_regs): Remove init_reg_autoinc.
31086         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
31087         ok_for_base_p_nonstrict): Remove.
31088         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
31089         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
31090         corresponding entries.
31091         (dump_regclass, record_operand_costs, scan_one_insn,
31092         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
31093         record_address_regs, auto_inc_dec_reg_p): Remove.
31094         (gt-regclass.h): Rename to gt-reginfo.h.
31095
31096         * rtl.h (dump_global_regs, retry_global_alloc,
31097         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
31098
31099         * Makefile.in (RA_H): Remove.
31100         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
31101         Rename regclass.o to reginfo.o.
31102         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
31103         gt-reginfo.h.
31104         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
31105         (GTFILES): Rename regclass.c to reginfo.c.
31106
31107         * passes.c (init_optimization_passes): Remove pass_local_alloc and
31108         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
31109
31110         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
31111         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
31112         Remove flag_ira.
31113         (finish_spills): Ditto.  Remove code for !flag_ira.
31114
31115 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
31116
31117         PR middle-end/35854
31118         * doc/invoke.texi (rtl debug options): Complete rewrite.
31119         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
31120         to auto_inc_dec".
31121         * mode-switching.c (pass_mode_switching): Rename pass from
31122         "mode-sw" to "mode_sw".
31123         * except.c (pass_convert_to_eh_ranges): Rename pass from
31124         "eh-ranges" to "eh_ranges".
31125         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
31126         to "subreg1".
31127
31128
31129 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
31130             Alexander Monakov  <amonakov@ispras.ru>
31131
31132         PR middle-end/38857
31133         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
31134         register.
31135         (move_exprs_to_boundary): Change return type and pass through
31136         should_move from move_op.  Relax assert.  Update usage ...
31137         (schedule_expr_on_boundary): ... here.  Use should_move instead of
31138         cant_move.
31139         (move_op_orig_expr_found): Indicate that insn was disconnected from
31140         stream.
31141         (code_motion_process_successors): Do not call after_merge_succs
31142         callback if original expression was not found when traversing any of
31143         the branches.
31144         (code_motion_path_driver): Change return type.  Update prototype.
31145         (move_op): Update comment.  Add a new parameter (should_move).  Update
31146         prototype.  Set *should_move based on indication provided by
31147         move_op_orig_expr_found.
31148
31149 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
31150
31151         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
31152         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
31153         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
31154         * config/rs6000/rs6000.c (rs6000_override_options): Default
31155         avoid-indexed-addresses on for Power6, off for everything else.
31156         (avoiding_indexed_address_p): New function.
31157         (rs6000_legitimize_address): Use it.
31158         (rs6000_legitimate_address): Likewise.
31159         * config/rs6000/rs6000.md (movXX_updateX): Likewise
31160
31161 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
31162
31163         PR tree-optimization/38997
31164         * tree-loop-distribution.c (generate_memset_zero): Use
31165         POINTER_PLUS_EXPR for a pointer addition.
31166
31167 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
31168
31169         * config/s390/s390.md (bswap<mode>2): New pattern added.
31170
31171 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31172
31173         * config/s390/s390.md (*tls_load_31): Added type attribute.
31174
31175 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31176
31177         * config/s390/s390.md: Fix a few comments.
31178
31179 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
31180
31181         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
31182         (*tm<mode>_full): Fixed z10prop attribute.
31183         (*tst<mode>_extimm): Fixed z10prop attribute.
31184         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
31185         (*tstqiCCT_cconly): Fixed z10prop attribute.
31186         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
31187         (*movsi_larl): Fixed z10prop attribute.
31188         (*movsi_zarch): Fixed z10prop attribute.
31189         (*movsi_eas): Fixed z10prop attribute.
31190         (*movhi): Fixed z10prop attribute.
31191         (*movqi): Fixed z10prop attribute.
31192         (*movstrictqi): Fixed z10prop attribute.
31193         (*mov<mode>): Fixed z10prop attribute.
31194         (*movcc): Fixed z10prop attribute.
31195         (*sethighpartdi_64): Fixed z10prop attribute.
31196         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
31197         (*negdi2_sign_cc): Fixed z10prop attribute.
31198         (*negdi2_sign): Fixed z10prop attribute.
31199         (*absdi2_sign_cc): Fixed z10prop attribute.
31200         (*absdi2_sign): Fixed z10prop attribute.
31201         (*negabsdi2_sign_cc): Fixed z10prop attribute.
31202         (*negabsdi2_sign): Fixed z10prop attribute.
31203         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
31204         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
31205         (doloop_si64): Fixed z10prop attribute.
31206         (doloop_si31): Fixed z10prop attribute.
31207         (doloop_long): Fixed z10prop attribute.
31208         (indirect_jump): Fixed z10prop attribute.
31209         (nop): Fixed z10prop attribute.
31210         (main_base_64): Fixed z10prop attribute.
31211         (reload_base_64): Fixed z10prop attribute.
31212
31213 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31214
31215         PR rtl-optimization/38740
31216         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
31217         if !optimize.
31218         * config/mips/mips.c (mips_reorg): Likewise.
31219
31220 2009-01-28  Richard Guenther  <rguenther@suse.de>
31221
31222         PR tree-optimization/38926
31223         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
31224         with the correct value id to a value.
31225         (do_regular_insertion): Use the value number of edoubleprime
31226         for the value number of the expr.
31227
31228         Revert
31229         2008-08-21  Richard Guenther  <rguenther@suse.de>
31230
31231         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
31232         a PHI ask VN if it is already available.
31233         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
31234         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
31235
31236 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
31237
31238         PR middle-end/38934
31239         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
31240         set to varying whenever max has TREE_OVERFLOW set, similarly
31241         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
31242
31243 2009-01-28  Richard Guenther  <rguenther@suse.de>
31244
31245         PR middle-end/38908
31246         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
31247         uninitialized aggregate uses in call arguments.
31248
31249 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
31250
31251         PR tree-optimization/38984
31252         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
31253         the nothing_id variable if -fno-delete-null-pointer-checks.
31254
31255 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
31256
31257         PR target/38988
31258         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
31259         (set_got_offset_rex64): Ditto.
31260
31261 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
31262
31263         PR target/38941
31264         * doc/extend.texi: Improve local variable with asm reg.
31265
31266 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
31267
31268         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
31269         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
31270         was not supplied then set warn_packed_bitfield_compat to the
31271         default value of 1.
31272         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
31273         against 1.
31274
31275 2009-01-27  Richard Guenther  <rguenther@suse.de>
31276
31277         PR tree-optimization/38503
31278         * cfgexpand.c (expand_gimple_basic_block): Ignore
31279         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
31280         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
31281         variables that cannot have TBAA applied.
31282         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
31283         statements.
31284
31285 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
31286
31287         PR middle-end/38969
31288         * calls.c (initialize_argument_information): Do not wrap complex
31289         arguments in SAVE_EXPR.
31290
31291 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
31292
31293         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
31294         (INSTALL_LIBGCC): Revert typo commit.
31295
31296 2009-01-26  Richard Guenther  <rguenther@suse.de>
31297
31298         PR tree-optimization/38745
31299         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
31300         from special handling.
31301
31302 2009-01-26  Richard Guenther  <rguenther@suse.de>
31303
31304         PR tree-optimization/38745
31305         * tree-ssa.c (execute_update_addresses_taken): Do not include
31306         variables that cannot possibly be a register in not_reg_needs.
31307         Do not clear TREE_ADDRESSABLE on vars that may not become
31308         registers.
31309         * tree-ssa.c (update_alias_info_1): Include those in the set
31310         of addressable vars.
31311
31312 2009-01-26  Richard Guenther  <rguenther@suse.de>
31313
31314         PR middle-end/38851
31315         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
31316         * tree-ssa-dse.c: Include langhooks.h
31317         (execute_simple_dse): Remove stores with zero size.
31318
31319 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
31320
31321         PR c/38957
31322         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
31323         as PLUS_EXPR.
31324
31325 2009-01-24  Julian Brown  <julian@codesourcery.com>
31326
31327         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
31328         config/arm/linux-atomic.c.
31329         * config/arm/linux-atomic.c: New.
31330
31331 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
31332
31333         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
31334         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
31335         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
31336
31337 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
31338
31339         PR c/38938
31340         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
31341         properly.
31342
31343 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
31344
31345         PR tree-optimization/38953
31346         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
31347         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
31348         (gloog): Split the exit of the scop when the scop exit is a loop exit.
31349         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
31350         changed the CFG.
31351
31352 2009-01-24  Paul Brook  <paul@codesourcery.com>
31353
31354         * config/arm/neon.md (neon_type): Move to arm.md.
31355         (neon_mov<VSTRUCT>): Add neon_type attribute.
31356         * config/arm/arm.md (neon_type): Move to here.
31357         (conds): Add "unconditioal" and use as default for NEON insns.
31358
31359 2009-01-24  Ben Elliston  <bje@au.ibm.com>
31360
31361         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
31362         void *' warning from -Wc++-compat.
31363         * Makefile.in (dominance.o-warn): Remove.
31364
31365 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
31366
31367         PR tree-optimization/38932
31368         * fold-const.c (fold_unary_ignore_overflow): New.
31369         * tree.h (fold_unary_ignore_overflow): Declare.
31370         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
31371         * tree-ssa-sccvn.c (visit_reference_op_load,
31372         simplify_unary_expression): Likewise.
31373
31374 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
31375
31376         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
31377         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
31378         regardless of their type.
31379         * c-common.c (handle_packed_attribute): Don't ignore packed on
31380         bitfields.
31381         * c.opt (Wpacked-bitfield-compat): New warning option.
31382         * stor-layout.c (place_field): Warn if offset of a field changed.
31383         * doc/extend.texi (packed): Mention the ABI change.
31384         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
31385         (Warning Options): Add it to the list.
31386
31387 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
31388
31389         * c-opts.c (c_common_post_options): Fix a typo in comments.
31390
31391 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
31392
31393         PR middle-end/38615
31394         * gimplify.c (gimplify_init_constructor): Fix promotion of const
31395         variables to static.
31396         * doc/invoke.texi (-fmerge-all-constants): Update description.
31397
31398 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
31399
31400         PR target/38931
31401         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
31402         (*movdi_1_rex64): Use type "mmx" for alternative 5.
31403
31404 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
31405
31406         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
31407         a word boundary.
31408         (LOCAL_ALIGNMENT): Similarly.
31409
31410 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31411             Joseph Myers  <joseph@codesourcery.com>
31412
31413         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
31414         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
31415         * config/arm/arm-tune.md: Regenerate.
31416         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
31417         -march=iwmmxt2.
31418
31419 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
31420
31421         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
31422         version number to five.
31423
31424 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
31425
31426         PR c++/38930
31427         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
31428         * c-common.c (set_underlying_type): Likewise.
31429         (is_typedef_decl ): Likewise
31430         * tree.h: Likewise
31431         (set_underlying_type): Likewise.
31432         (is_typedef_type): Likewise.
31433
31434 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
31435
31436         PR middle-end/38587
31437         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
31438         crossing setjmps.
31439
31440 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
31441
31442         PR bootstrap/37660
31443         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
31444         (LIBGCC_SPEC):  Don't define.
31445         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
31446
31447 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
31448
31449         PR rtl-optimization/38879
31450         * alias.c (base_alias_check): Unaligned access via AND address can
31451         alias all surrounding object types except those with sizes equal
31452         or wider than the size of unaligned access.
31453
31454 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
31455
31456         PR c++/26693
31457         * c-decl.c (clone_underlying_type): Move this ...
31458         * c-common.c (set_underlying_type): ... here.
31459         Also, make sure the function properly sets TYPE_STUB_DECL() on
31460         the newly created typedef variant type.
31461         (is_typedef_decl ): New entry point.
31462         * tree.h: Added a new member member_types_needing_access_check to
31463         struct tree_decl_non_common.
31464         (set_underlying_type): New entry point.
31465         (is_typedef_type): Likewise.
31466
31467 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
31468
31469         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
31470         Check whether two instructions have memory references that
31471         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
31472         are helper functions for traversing.
31473         * alias.h (insn_alias_sets_confilict_p): New prototypes.
31474         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
31475         not to draw dependency edge for instructions with non-conflicting
31476         alias sets.
31477
31478 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
31479
31480         PR other/38758
31481         * longlong.h: Update copyright years.  Use soft-fp license notice.
31482         Sync __clz_tab declaration with glibc.
31483
31484 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
31485
31486         PR target/30687
31487         * doc/extend.texi (syscall_linkage): New.
31488         (version_id): Modify.
31489
31490 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31491             Richard Guenther  <rguenther@suse.de>
31492
31493         PR tree-optimization/38747
31494         PR tree-optimization/38748
31495         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
31496         conversion if the base address is an indirect reference and the
31497         aliasing sets could cause issues.
31498
31499 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31500
31501         * common.opt (fgraphite, fgraphite-identity): Add comment for
31502         explaining why these options are not documented.
31503
31504 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
31505
31506         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
31507         gimple_call_lhs is NULL.
31508
31509 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
31510
31511         PR target/38868
31512         * emit-rtl.c (adjust_address_1): Make sure memref is never
31513         overwritten.
31514
31515 2009-01-20  Ben Elliston  <bje@au.ibm.com>
31516
31517         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31518         const qualifier from arg parameter. Remove unnecessary cast to char *.
31519         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
31520         const qualifier from arg 2.
31521
31522 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
31523
31524         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
31525
31526 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
31527
31528         PR c/38869
31529         * rtl.h (reinit_regs): New prototype.
31530         * regclass.c: Include ira.h.
31531         (reinit_regs): New.
31532         * Makefile.in (regclass.o): Add ira.h.
31533         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
31534
31535 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
31536
31537         PR target/38736
31538         * c-common.c (handle_aligned_attribute): Use
31539         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
31540         default alignment value.
31541
31542         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
31543
31544         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
31545         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
31546
31547         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
31548         __BIGGEST_ALIGNMENT__.
31549
31550         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
31551
31552 2009-01-18  Richard Guenther  <rguenther@suse.de>
31553
31554         PR tree-optimization/38819
31555         * tree-flow.h (operation_could_trap_helper_p): Declare.
31556         * tree-eh.c (operation_could_trap_helper_p): Export.
31557         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
31558         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
31559         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
31560         are about to insert a possibly trapping instruction and fail
31561         in this case.
31562
31563 2009-01-18  Andreas Schwab  <schwab@suse.de>
31564
31565         * doc/install.texi (Configuration): Remove obsolete paragraph
31566         about use of --with-gnu-ld with --with-gnu-as.
31567
31568 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
31569
31570         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
31571         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
31572         Follow spelling conventions.
31573
31574 2009-01-18  Ben Elliston  <bje@au.ibm.com>
31575
31576         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
31577         C++ warning about implicit conversion from void * to struct
31578         bitmap_head_def *.
31579         (bitmap_obstack_free): Likewise for bitmap_element *.
31580         * Makefile.in (bitmap.o-warn): Remove.
31581
31582 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
31583
31584         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
31585
31586 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
31587             Tobias Grosser  <tobi.grosser@amd.com>
31588
31589         * graphite.c (graphite_trans_scop_block): Do not block single
31590         nested loops.
31591
31592 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
31593
31594         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
31595         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
31596         test with assertion.
31597
31598 2009-01-16  Richard Guenther  <rguenther@suse.de>
31599
31600         PR tree-optimization/38835
31601         PR middle-end/36227
31602         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
31603         and INT + PTR -> (INT)(PTR p+ INT) folding.
31604         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
31605
31606 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
31607
31608         PR target/38554
31609         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
31610         the subreg from a lowpart subreg if it is also casting the value.
31611
31612 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31613             Tobias Grosser  <tobi.grosser@amd.com>
31614
31615         * graphite.c (compare_prefix_loops): New.
31616         (build_scop_canonical_schedules): Rewritten.
31617         (graphite_transform_loops): Move build_scop_canonical_schedules
31618         after build_scop_iteration_domain.
31619
31620 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
31621             Tobias Grosser  <tobi.grosser@amd.com>
31622
31623         * graphite.c (add_conditions_to_domain): Add the loops to
31624         the dimension of the iteration domain.  Do copy the domain
31625         only when it exists.
31626         (build_scop_conditions_1): Do not call add_conditions_to_domain.
31627         (add_conditions_to_constraints): New.
31628         (can_generate_code_stmt, can_generate_code): Removed.
31629         (gloog): Do not call can_generate_code.
31630         (graphite_transform_loops): Call add_conditions_to_constraints
31631         after building the iteration domain.
31632
31633 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
31634
31635         PR tree-optimization/38789
31636         * tree-ssa-threadedge.c
31637         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
31638         __builtin_constant_p.
31639
31640 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
31641
31642         * dce.c (delete_unmarked_insns): Reversed the order that insns are
31643         examined before deleting them.
31644
31645 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
31646
31647         * function.c (aggregate_value_p): Correctly extract the function
31648         type from CALL_EXPR_FN lookup.
31649
31650 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31651
31652         * config/picochip/picochip.c (picochip_override_options): Revert
31653         CFI asm flag disable commited previously.
31654
31655 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
31656             Tobias Grosser  <tobi.grosser@amd.com>
31657             Jan Sjodin  <jan.sjodin@amd.com>
31658
31659         * graphite.c (scan_tree_for_params): On substractions negate
31660         all the coefficients of the term.
31661         (clast_to_gcc_expression_red): New.  Handle reduction expressions
31662         of more than two operands.
31663         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
31664         (get_vdef_before_scop): Handle also the case of default definitions.
31665
31666 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
31667
31668         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
31669         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
31670         Also use them when walking CALL_INSN_FUNCTION_USAGE.
31671
31672 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
31673             Joey Ye  <joey.ye@intel.com>
31674
31675         PR middle-end/37843
31676         * cfgexpand.c (expand_stack_alignment): Don't update stack
31677         boundary nor check incoming stack boundary here.
31678         (gimple_expand_cfg): Update stack boundary and check incoming
31679         stack boundary here.
31680
31681 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
31682
31683         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
31684
31685 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
31686
31687         PR rtl-optimization/38245
31688         * calls.c (expand_call): Add stack arguments to
31689         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31690         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
31691         in regs and partially in memory or BLKmode arguments.
31692         (emit_library_call_value_1): Add stack arguments to
31693         CALL_INSN_FUNCTION_USAGE even for pure calls (when
31694         ACCUMULATE_OUTGOING_ARGS).
31695         * dce.c: Include tm_p.h.
31696         (find_call_stack_args): New function.
31697         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
31698         argument.
31699         (mark_insn): Call find_call_stack_args for CALL_Ps.
31700         (prescan_insns_for_dce): Walk insns backwards in bb rather than
31701         forwards.  Allocate and free arg_stores bitmap if needed, pass it
31702         down to deletable_insn_p, don't mark stores set in arg_stores
31703         bitmap, clear the bitmap at the beginning of each bb.
31704         * Makefile.in (dce.o): Depend on $(TM_P_H).
31705
31706 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
31707
31708         PR target/22599
31709         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
31710         to make sure the insn is a conditional test (bug 22599).  Reformat a
31711         few long lines.
31712
31713 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
31714
31715         PR middle-end/38431
31716         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
31717         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
31718         (gloog): Do not call cleanup_tree_cfg.
31719         (graphite_transform_loops): Call cleanup_tree_cfg after all
31720         scops have been code generated.
31721
31722 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
31723         * doc/gty.texi (Invoking the garbage collector): Added new node
31724         and section documenting ggc_collect.
31725
31726 2009-01-14  Richard Guenther  <rguenther@suse.de>
31727
31728         PR tree-optimization/38826
31729         PR middle-end/38477
31730         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
31731         initialization notes only if we actually emitted a warning.
31732         (intra_create_variable_infos): Add constraints for a result decl
31733         that is passed by hidden reference.
31734         (build_pred_graph): Mark all related variables non-direct on
31735         address-taking.
31736
31737 2009-01-14  Nick Clifton  <nickc@redhat.com>
31738
31739         * ira-conflicts.c: Include addresses.h for the definition of
31740         base_reg_class.
31741         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
31742         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
31743
31744 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
31745
31746         PR target/38811
31747         * Makefile.in (ira-lives.o): Add except.h.
31748
31749         * ira-lives.c: Include except.h.
31750         (process_bb_node_lives): Process can_throw_internal.
31751
31752 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
31753
31754         PR rtl-optimization/38774
31755         * combine.c (simplify_set): When undoing cc_use change, don't do
31756         PUT_CODE on the newly created comparison, but instead put back the
31757         old comparison.
31758
31759 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
31760
31761         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
31762         values.  Remove duplicate arm8 entry.
31763
31764 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31765
31766         PR tree-optimization/38786
31767         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
31768         the SSA_NAME case of expand_scalar_variables_expr.
31769         Set the type of an expression to the type of its assign statement.
31770         (expand_scalar_variables_expr): Also gather the scalar computation
31771         used to index the memory access.  Do not pass loop_p.
31772         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
31773         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
31774         the gimple_stmt_iterator where it inserts new code.
31775         Do not pass loop_p.
31776         (copy_bb_and_scalar_dependences): Do not pass loop_p.
31777         (translate_clast): Update call to copy_bb_and_scalar_dependences.
31778
31779 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
31780
31781         * graphite.h (debug_value): Removed.
31782         * graphite.c (debug_value): Removed.
31783
31784 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31785
31786         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
31787         ldrd/strd with two 32-bit instructions.
31788
31789 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
31790
31791         * config/arm/arm.c (struct processors): Pass for speed down into
31792         cost helper functions.
31793         (const_ok_for_op): Handle COMPARE and inequality nodes.
31794         (arm_rtx_costs_1): Rewrite.
31795         (arm_size_rtx_costs): Update prototype.
31796         (arm_rtx_costs): Pass speed down to helper functions.
31797         (arm_slowmul_rtx_costs): Rework cost calculations.
31798         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
31799         (arm_9e_rtx_costs): Likewise.
31800
31801 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
31802
31803         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
31804         relocations of local symbols wider than UNITS_PER_WORD are not valid.
31805         (alpha_legitimize_address): Do not split local symbols wider than
31806         UNITS_PER_WORD into HIGH/LO_SUM parts.
31807
31808 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
31809
31810         PR bootstrap/38580
31811         * gcc.c (process_command): Replace call to execvp with calls
31812         to pex_one and exit.
31813
31814 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
31815
31816         PR target/29141
31817         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
31818         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
31819         variant for devices with 3-byte PC.
31820         (__tablejump_elpm__): New.
31821
31822 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31823
31824         PR c/32041
31825         * c-parser.c (c_parser_postfix_expression): Allow `->' in
31826         offsetof member-designator, handle it as `[0].'.
31827
31828 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31829
31830         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
31831         function when not using named sections on targets with named sections
31832         if branch distance is less than 262132.
31833
31834 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
31835
31836         * combine.c (combine_instructions):  Recompute
31837         optimize_this_for_speed_p  for each BB in the main combine loop.
31838
31839 2009-01-12  Tomas Bily  <tbily@suse.cz>
31840
31841         PR middlend/38385
31842         * tree-loop-distribution.c (prop_phis): New function.
31843         (generate_builtin): Call prop_phis.
31844
31845 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
31846
31847         PR tree-optimization/38807
31848         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
31849         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
31850
31851 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
31852
31853         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
31854         subreg of op0 to the original op0.
31855
31856 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
31857
31858         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
31859
31860 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
31861
31862         PR debug/7055
31863         * mips-tfile.c (parse_def): Fix parsing of def strings
31864         starting with digits.
31865
31866 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
31867
31868         PR target/38695
31869         * config/arm/arm.c (arm_is_long_call_p): Don't call
31870         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
31871
31872 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
31873
31874         * regrename.c (regrename_optimize): Fix dumping.
31875         (find_oldest_value_reg): Preserve REG_POINTER.
31876         (copy_hardreg_forward_1): Likewise.
31877
31878 2009-01-09  Diego Novillo  <dnovillo@google.com>
31879
31880         * gimple.h (struct gimple_statement_base) <uid>: Document
31881         the restrictions on its use.
31882         (gimple_uid): Tidy.
31883         (gimple_set_uid): Tidy.
31884
31885 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31886
31887         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
31888         zero guard even if align_bytes != 0 and count is smaller than
31889         size_needed.
31890
31891 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
31892
31893         PR rtl-optimization/38495
31894         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
31895         (add_range_and_copies_from_move_list): Print all added ranges.
31896         Add ranges to memory optimized destination.
31897
31898 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31899
31900         PR target/38686
31901         PR target/38708
31902         * config/i386/i386.c (override_options): Reject
31903         -mstringop-strategy=rep_8byte with -m32.
31904         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
31905         to 1.  Do count comparison against epilogue_size_needed at compile
31906         time even when count_exp was constant forced into register.  For
31907         size_needed don't jump to epilogue, instead just avoid aligning
31908         and invoke the body algorithm.  If need_zero_guard, add zero guard
31909         even if count is non-zero, but smaller than size_needed + number of
31910         bytes that could be stored for alignment.
31911         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
31912         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
31913         but smaller than size_needed + number of bytes that could be stored
31914         for alignment.  Compare size_needed with epilogue_size_needed instead
31915         of desired_align - align, don't adjust size_needed, pass
31916         epilogue_size_needed to the epilogue expanders.
31917
31918         PR c/35742
31919         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
31920
31921 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31922
31923         * pa.c (last_address): Change to unsigned.
31924         (update_total_code_bytes): Change argument to unsigned.  Don't
31925         check if insn addresses are set.
31926         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
31927         addresses are not set.
31928         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
31929
31930 2009-01-09  Nick Clifton  <nickc@redhat.com>
31931
31932         * config/sh/symbian.c: Replace uses of DECL_INLINE with
31933         DECL_DECLARED_INLINE_P.
31934
31935 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
31936
31937         PR middle-end/38347
31938         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
31939         GET_MODE (op0) in operand_subword_force calls.
31940
31941         PR middle-end/38771
31942         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
31943         fold_convert arg0 operands to TREE_TYPE (op0) first.
31944
31945 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
31946
31947         * params.def (ira-max-conflict-table-size): Decrease default value
31948         to 1000.
31949
31950 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
31951
31952         PR tree-optimization/37031
31953         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
31954         on parameter_set.
31955         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
31956         allocate it using gc instead of heap, use VEC_quick_push instead of
31957         VEC_safe_push.
31958         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
31959         instead of heap, use VEC_quick_push instead of VEC_safe_push.
31960         * tree-data-ref.h (struct access_matrix): Change matrix to gc
31961         allocated vector from heap allocated.
31962         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
31963         * tree-loop-linear.c (linear_transform_loops): Allocate nest
31964         vector only after perfect_loop_nest_depth call.
31965
31966 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
31967             Jan Sjodin  <jan.sjodin@amd.com>
31968
31969         PR tree-optimization/38559
31970         * graphite.c (debug_value, copy_constraint,
31971         swap_constraint_variables, scale_constraint_variable, ): New.
31972         (get_lower_bound, get_upper_bound): Removed.
31973         (graphite_trans_bb_strip_mine): Clean up this code that works
31974         only for constant number of iterations.  Fully copy upper and
31975         lower bound constraints, not only the constant part of them.
31976         * graphite.h (debug_value): Declared.
31977
31978 2009-01-08  Ira Rosen  <irar@il.ibm.com>
31979
31980         PR tree-optimization/37194
31981         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
31982         Don't add the cost of cost model guard in prologue to scalar
31983         outside cost in case of known number of iterations.
31984
31985 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
31986             Alan Modra  <amodra@bigpond.net.au>
31987
31988         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
31989         non-word-aligned REG+CONST addressing.
31990
31991 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
31992
31993         PR target/38706
31994         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
31995         free_after_compilation when outputting a thunk.
31996         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
31997         Do not call free_after_compilation here.
31998
31999 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
32000
32001         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
32002         (ix86_valid_target_attribute_inner_p): Ditto.
32003
32004 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
32005
32006         PR tree-optimization/38492
32007         PR tree-optimization/38498
32008         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
32009         * tree-chrec.h (scev_is_linear_expression): Declared.
32010         * graphite.c (graphite_cannot_represent_loop_niter): New.
32011         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
32012         (graphite_loop_normal_form): Use gcc_assert.
32013         (scan_tree_for_params): Use CASE_CONVERT.
32014         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
32015         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
32016         Use gcc_assert.  Discard scops that contain unhandled cases.
32017         (build_scop_conditions): Return a boolean status for unhandled cases.
32018         (strip_mine_profitable_p): Print the loop number, not its depth.
32019         (is_interchange_valid): Pass the depth of the loop nest, don't
32020         recompute it wrongly.
32021         (graphite_trans_bb_block): Same.
32022         (graphite_trans_bb_block): Print tentative of loop blocking.
32023         (graphite_trans_scop_block): Do not print that the loop has been
32024         blocked.
32025         (graphite_transform_loops): Do not handle scops that contain condition
32026         scalar phi nodes.
32027
32028 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
32029
32030         AVX Programming Reference (December, 2008)
32031         * config/i386/avxintrin.h (_mm256_stream_si256): New.
32032         (_mm256_stream_pd): Likewise.
32033         (_mm256_stream_ps): Likewise.
32034
32035         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
32036         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
32037         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
32038         (bdesc_special_args): Add __builtin_ia32_movntdq256,
32039         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
32040         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
32041         (ix86_expand_special_args_builtin): Likewise.
32042
32043         * config/i386/sse.md (AVXMODEDI): New.
32044         (avx_movnt<mode>): Likewise.
32045         (avx_movnt<mode>): Likewise.
32046         (<sse>_movnt<mode>): Remove AVX support.
32047         (sse2_movntv2di): Likewise.
32048
32049 2009-01-07  Richard Guenther  <rguenther@suse.de>
32050
32051         PR middle-end/38751
32052         * fold-const.c (extract_muldiv): Remove obsolete comment.
32053         (fold_plusminus_mult_expr): Undo MINUS_EXPR
32054         to PLUS_EXPR canonicalization for the canonicalization.
32055
32056 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
32057
32058         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
32059         hosted cross-compilers generating less efficient code.
32060
32061 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32062
32063         * function.h (rtl_data): Add a dbr_scheduled_p field.
32064         * reorg.c (dbr_schedule): Set it.
32065         (gate_handle_delay_slots): Check it.
32066         * config/mips/mips.c (mips_base_delayed_branch): Delete.
32067         (mips_reorg): Check flag_delayed_branch instead of
32068         mips_base_delayed_branch.
32069         (mips_override_options): Don't set mips_base_delayed_branch
32070         or flag_delayed_branch.
32071
32072 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
32073
32074         PR rtl-optimization/38426.
32075         * ira.c (ira): Set current_function_is_leaf earlier.
32076
32077 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
32078
32079         PR rtl-optimization/38722
32080         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
32081         too early, only set a flag and modify after last possible
32082         undo_all point.
32083
32084 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
32085
32086         PR c/34252
32087         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
32088         * real.c (decimal_single_format): Correct values of emin and emax.
32089         (decimal_double_format): Ditto.
32090         (decimal_quad_format): Ditto.
32091         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
32092         computation of DECnn_MIN and DECnn_MAX for corrected values of
32093         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
32094         __DECnn_MIN__, and adjust its computation for the corrected value
32095         of emin.
32096
32097 2009-01-06  Jan Hubicka  <jh@suse.cz>
32098
32099         PR target/38744
32100         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
32101
32102 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
32103
32104         * doc/contrib.texi (Contributors): Slightly adjust the end note.
32105         Add Robert Clark to the list of testers.
32106
32107 2009-01-06  Jan Hubicka  <jh@suse.cz>
32108             Kai Tietz  <kai.tietz@onevision.com>
32109
32110         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
32111         * config/i386/i386.c (ix86_expand_call): Add clobbers.
32112
32113 2009-01-06  Jan Hubicka  <jh@suse.cz>
32114             Kai Tietz  <kai.tietz@onevision.com>
32115
32116         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
32117         for w64 ABI.
32118         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
32119         (ix86_nsaved_regs): Count only general purpose regs.
32120         (ix86_nsaved_sseregs): New.
32121         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
32122         to 16 for w64; compute padding and size of sse reg save area.
32123         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
32124         general purpose regs.
32125         (ix86_emit_save_sse_regs_using_mov): New.
32126         (ix86_expand_prologue): Save SSE regs if needed.
32127         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
32128         (ix86_emit_restore_sse_regs_using_mov): New.
32129         (ix86_expand_epilogue): Save SSE regs if needed.
32130
32131 2009-01-06  Jan Hubicka  <jh@suse.cz>
32132             Kai Tietz  <kai.tietz@onevision.com>
32133
32134         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
32135         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
32136         functions when accumulate outgoing args is off.
32137
32138 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32139
32140         PR bootstrap/38742
32141         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
32142         before using pseudos_have_intersected_live_ranges_p.
32143
32144         * ira-int.h (ira_assert): Always define.
32145
32146 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
32147
32148         AVX Programming Reference (December, 2008)
32149         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
32150         (_mm256_permute2_pd): Likewise.
32151         (_mm_permute2_ps): Likewise.
32152         (_mm256_permute2_ps): Likewise.
32153         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
32154         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
32155
32156         * config/i386/i386.c (ix86_builtins): Remove
32157         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
32158         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
32159         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
32160         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
32161         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
32162         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
32163         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
32164         __builtin_ia32_vpermil2ps256.
32165         (ix86_init_mmx_sse_builtins): Updated.
32166         (ix86_expand_args_builtin): Likewise.
32167
32168 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32169
32170         * pa.c (output_call): Relocate non-jump insns in the delay slot of
32171         long absolute calls when generating PA 2.0 code.
32172
32173 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
32174
32175         PR rtl-optimization/38583
32176         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
32177
32178         * params.def (ira-max-conflict-table-size): New.
32179
32180         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
32181
32182         * ira.h (ira_conflicts_p): New external definition.
32183
32184         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
32185         table.  Report this.  Return result of building.
32186         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
32187         building conflict table.
32188
32189         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
32190         (ira_color): Use ira_conflicts_p.
32191
32192         * global.c: Include ira.h.
32193         (pseudo_for_reload_consideration_p, build_insn_chain): Use
32194         ira_conflicts_p.
32195
32196         * Makefile.in (global.o): Add ira.h.
32197
32198         * ira-build.c (mark_all_loops_for_removal,
32199         propagate_some_info_from_allocno): New.
32200         (remove_unnecessary_allocnos): Call
32201         propagate_some_info_from_allocno.
32202         (remove_low_level_allocnos): New.
32203         (remove_unnecessary_regions): Add parameter.  Call
32204         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
32205         parameter to remove_unnecessary_regions.
32206         (ira_build): Remove all regions but root if the conflict table was
32207         not built.  Update conflict hard regs for allocnos crossing calls.
32208
32209         * ira.c (ira_conflicts_p): New global.
32210         (ira): Define and use ira_conflicts_p.
32211
32212         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32213         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
32214         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
32215
32216 2009-01-06  Ben Elliston  <bje@au.ibm.com>
32217
32218         * gengtype-lex.l (YY_NO_INPUT): Define.
32219
32220 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32221
32222         PR c/34911
32223         * c-common.c (handle_vector_size_attribute): Also reject
32224         BOOLEAN_TYPE types.
32225
32226 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
32227
32228         PR tree-optimization/38492
32229         * graphite.c (rename_map_elt, debug_rename_elt,
32230         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
32231         rename_map_elt_info, eq_rename_map_elts,
32232         get_new_name_from_old_name, bb_in_sese_p): Moved around.
32233         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
32234         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
32235         (sese_build_livein_liveouts): New.
32236         (new_sese, free_sese): New.
32237         (new_scop): Call new_sese.
32238         (free_scop): Call free_sese.
32239         (rename_variables_from_edge, rename_phis_end_scop): Removed.
32240         (register_old_new_names): Renamed register_old_and_new_names.
32241         (register_scop_liveout_renames, add_loop_exit_phis,
32242         insert_loop_close_phis, struct igp,
32243         default_liveout_before_guard, add_guard_exit_phis,
32244         insert_guard_phis, copy_renames): New.
32245         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
32246         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
32247         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
32248         (scop_adjust_phis_for_liveouts): New.
32249         (gloog): Call scop_adjust_phis_for_liveouts.
32250
32251         * graphite.h (struct sese): Documented.  Added fields liveout,
32252         num_ver and livein.
32253         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
32254         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
32255         (struct scop): Added field liveout_renames.
32256         (SCOP_LIVEOUT_RENAMES): New.
32257
32258 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32259
32260         PR tree-optimization/38510
32261         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
32262         (translate_clast): Call recompute_all_dominators before
32263         graphite_verify.
32264         (gloog): Call recompute_all_dominators before graphite_verify.
32265
32266 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
32267             Jan Sjodin  <jan.sjodin@amd.com>
32268
32269         PR tree-optimization/38500
32270         * graphite.c (create_sese_edges): Call fix_loop_structure after
32271         splitting blocks.
32272
32273 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
32274
32275         * config.gcc: Add m32r*-*-rtems*.
32276         * config/m32r/rtems.h: New file.
32277
32278 2009-01-05  Ben Elliston  <bje@au.ibm.com>
32279
32280         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
32281         (.po.pox): Likewise.
32282         (po/gcc.pot): Likewise.
32283
32284 2009-01-04  David S. Miller  <davem@davemloft.net>
32285
32286         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
32287         (STARTING_FRAME_OFFSET): Always set to zero.
32288
32289 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32290
32291         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
32292         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
32293         fixed-point types, and vectors of the same.
32294
32295 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
32296
32297         * config/mips/sync.md (*mb_barrier): Rename to...
32298         (*memory_barrier): ...this.
32299
32300 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
32301
32302         * doc/extend.texi (Function Attributes): Move @cindex after @item
32303         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
32304         and put in alphabetical order. Fix 'target' name and put in order.
32305         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
32306         typos.
32307
32308 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
32309
32310         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
32311         (memory_barrier): Expand as unspec instead of unspec_volatile.
32312         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32313         (*memory_barrier): Define as unspec instead of unspec_volatile.
32314         Use (match_dup 0) as input operand.
32315
32316         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
32317         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
32318         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
32319         scratch register.  Remove operand 1.
32320         (*stbar): Define as unspec instead of unspec_volatile.
32321         Use (match_dup 0) as input operand, remove (const_int 8).
32322         (*membar): Define as unspec instead of unspec_volatile.
32323         Use (match_dup 0) as input operand, remove input operand 2.
32324
32325         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
32326         (memory_barrier): Expand as unspec instead of unspec_volatile.
32327         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32328         (*memory_barrier): Define as unspec instead of unspec_volatile.
32329         Use (match_dup 0) as input operand.
32330
32331         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
32332         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32333         Set volatile flag on operand 0.
32334         (*memory_barrier): New insn pattern.
32335
32336         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
32337         insn operands.
32338         (*memory_barrier): Use (match_dup 0) as input operand.
32339
32340         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
32341         Remove mem:BLK from insn operands.  Use Pmode scratch register.
32342         Set volatile flag on operand 0.
32343         (*mb_internal): New insn pattern.
32344
32345         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
32346
32347 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32348
32349         PR middle-end/38586
32350         * function.c (struct temp_slot): Move to the section of the file
32351         that deals with temp slots.  Remove field 'address'.
32352         (temp_slot_address_table): New hash table of address -> temp slot.
32353         (struct temp_slot_address_entry): New struct, items for the table.
32354         (temp_slot_address_compute_hash, temp_slot_address_hash,
32355         temp_slot_address_eq, insert_temp_slot_address): Support functions
32356         for the new table.
32357         (find_temp_slot_from_address): Rewrite to use the new hash table.
32358         (remove_unused_temp_slot_addresses): Remove addresses of temp
32359         slots that have been made available.
32360         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
32361         worker function for remove_unused_temp_slot_addresses.
32362         (assign_stack_temp_for_type): Don't clear the temp slot address list.
32363         Add the temp slot address to the address -> temp slot map.
32364         (update_temp_slot_address): Update via insert_temp_slot_address.
32365         (free_temp_slots): Call remove_unused_temp_slot_addresses.
32366         (pop_temp_slots): Likewise.
32367         (init_temp_slots): Allocate the address -> temp slot map, or empty
32368         the map if it is already allocated.
32369         (prepare_function_start): Initialize temp slot processing.
32370
32371 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
32372
32373         PR middle-end/38584
32374         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
32375         Calculate the size of all stack vars assuming no packing of stack
32376         vars will happen, replacing a quadratic algorithm with a linear one.
32377
32378 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32379
32380         PR target/38707
32381         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
32382         can't be used.
32383
32384 2009-01-03  Diego Novillo  <dnovillo@google.com>
32385
32386         * doc/contrib.texi: Update contributions.
32387
32388 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
32389
32390         PR c++/38705
32391         * builtins.c (fold_builtin_memory_op): Give up if either operand
32392         is volatile.  Set srctype or desttype to non-qualified version
32393         of the other type.
32394
32395         PR c/38700
32396         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
32397         and FUNCTION_DECLs.
32398
32399 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
32400
32401         PR rtl-optimization/35805
32402         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
32403         problem if fast dce is able to remove any instructions.
32404         * dce.c (dce_process_block): Fix dump message.
32405
32406 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
32407
32408         PR 33649
32409         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
32410
32411 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
32412
32413         PR middle-end/38690
32414         * tree-flow.h (op_code_prio, op_prio): New prototypes.
32415         * tree-pretty-print.c (op_code_prio): New function.
32416         (op_prio): No longer static.  Use op_code_prio.
32417         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
32418         Use op_prio and op_code_prio to determine if () should be
32419         printed around operand(s) or not.
32420
32421         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
32422         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
32423         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
32424         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
32425         pp_character instead of pp_string for single letter printing.
32426
32427 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
32428
32429         * doc/extend.texi: Fix '#pragma GCC option' typo.
32430
32431 2009-01-02  Richard Guenther  <rguenther@suse.de>
32432
32433         * doc/install.texi (--enable-checking): Mention different
32434         default for stage1.
32435         (--enable-stage1-checking): Document.
32436
32437 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
32438
32439         PR middle-end/30142
32440         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
32441         case to be an error.
32442
32443 2009-01-02  Ben Elliston  <bje@au.ibm.com>
32444
32445         * config/fp-bit.h (pack_d): Constify argument.
32446         * config/fp-bit.c (makenan): Constify return type. Remove casts.
32447         (isnan): Constify argument.
32448         (isinf): Likewise.
32449         (iszero): Likewise.
32450         (pack_d): Likewise.
32451         (_fpadd_parts): Constify return type.
32452         (_fpmul_parts): Likewise.
32453         (_fpdiv_parts): Likewise.
32454
32455 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
32456
32457         PR c/36489
32458         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
32459         warn about overwriting initializer with side-effects or
32460         -Woverride-init if !IMPLICIT.
32461         (output_init_element): Likewise.  Pass IMPLICIT down to
32462         add_pending_init.
32463         (process_init_element): Add IMPLICIT argument.  Pass it down
32464         to output_init_element.
32465         (push_init_element, pop_init_level, set_designator): Adjust
32466         process_init_element callers.
32467         (set_nonincremental_init, set_nonincremental_init_from_string):
32468         Adjust add_pending_init callers.
32469         (output_pending_init_elements): Adjust output_init_element callers.
32470         * c-tree.h (process_init_element): Adjust prototype.
32471         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
32472         process_init_element callers.
32473
32474 \f
32475 Copyright (C) 2009 Free Software Foundation, Inc.
32476
32477 Copying and distribution of this file, with or without modification,
32478 are permitted in any medium without royalty provided the copyright
32479 notice and this notice are preserved.